Program Listing for File gui_global_info.c¶
↰ Return to documentation for file (server/game_events/gui_global_info.c)
#include "client/client.h"
#include "handler.h"
#include "names.h"
bool gui_map_size_handler(server_t *srv, const event_t *event)
{
client_state_t *cs = event_get_client(srv, event);
if (cs == nullptr)
return cs;
if (event->arg_count != 1)
return append_to_output(srv, cs, "sbp\n"), true;
vappend_to_output(srv, cs, GUI_MAP_SIZE " %hhu %hhu\n",
srv->map_width, srv->map_height);
return true;
}
bool gui_map_content_handler(server_t *srv, const event_t *event)
{
client_state_t *cs = event_get_client(srv, event);
if (cs == nullptr)
return cs;
if (event->arg_count != 1)
return append_to_output(srv, cs, "sbp\n"), true;
for (size_t y = 0; y < srv->map_height; y++)
for (size_t x = 0; x < srv->map_width; x++)
vappend_to_output(srv, cs, "bct %zu %zu %s\n",
x, y, serialize_inventory(&srv->map[y][x]));
return true;
}
bool gui_tile_content_handler(server_t *srv, const event_t *event)
{
client_state_t *cs = event_get_client(srv, event);
char *arg1 = event->command[1];
char *arg2 = event->command[2];
char *endptr1;
char *endptr2;
size_t x;
size_t y;
if (cs == nullptr)
return cs;
if (event->arg_count != 3 || arg1 == nullptr || arg2 == nullptr)
return append_to_output(srv, cs, "sbp\n"), true;
x = strtoul(arg1, &endptr1, 10);
y = strtoul(arg2, &endptr2, 10);
if (endptr1 == arg1 || *endptr1 != '\0' || endptr2 == arg2 ||
*endptr2 != '\0' || x >= srv->map_width || y >= srv->map_height)
return append_to_output(srv, cs, "sbp\n"), true;
vappend_to_output(srv, cs, "bct %zu %zu %s\n",
x, y, serialize_inventory(&srv->map[y][x]));
return true;
}
bool gui_team_names_handler(server_t *srv, const event_t *event)
{
client_state_t *cs = event_get_client(srv, event);
if (cs == nullptr)
return cs;
if (event->arg_count != 1)
return append_to_output(srv, cs, "sbp\n"), true;
for (size_t i = 0; srv->team_names[i] != nullptr; i++)
vappend_to_output(srv, cs, GUI_TEAM_NAMES " %s\n", srv->team_names[i]);
return true;
}