Program Listing for File gui_player_info.c¶
↰ Return to documentation for file (server/game_events/gui_player_info.c)
#include "client/client.h"
#include "handler.h"
#include "names.h"
static
client_state_t *gui_handler_get_player(server_t *srv, const event_t *event)
{
char *arg = event->command[1];
char *endptr;
long id;
if (arg == nullptr)
return nullptr;
if (*arg != '#')
return nullptr;
arg++;
id = strtol(arg, &endptr, 10);
if (endptr == arg || *endptr != '\0' || id < 0)
return nullptr;
return client_from_id(srv, id);
}
bool gui_player_get_position_handler(server_t *srv, const event_t *event)
{
client_state_t *cs = event_get_client(srv, event);
client_state_t *player;
if (cs == nullptr)
return false;
if (cs->team_id != TEAM_ID_GRAPHIC)
return send_to_guis(srv, GUI_PLAYER_POS " #%hu %hhd %hhd %hhu\n",
cs->id, cs->x, cs->y, cs->orientation + 1), true;
if (event->arg_count != 2)
return append_to_output(srv, cs, "sbp\n"), true;
player = gui_handler_get_player(srv, event);
if (player == nullptr)
return append_to_output(srv, cs, "sbp\n"), true;
vappend_to_output(srv, cs, GUI_PLAYER_POS " #%hu %hhd %hhd %hhu\n",
player->id, player->x, player->y, player->orientation + 1);
return true;
}
bool gui_player_get_level_handler(server_t *srv, const event_t *event)
{
client_state_t *cs = event_get_client(srv, event);
client_state_t *player;
if (cs == nullptr)
return false;
if (cs->team_id != TEAM_ID_GRAPHIC) {
send_to_guis(srv, GUI_PLAYER_LVL " #%hu %hhu\n", cs->id, cs->tier);
return true;
}
if (event->arg_count != 2)
return append_to_output(srv, cs, "sbp\n"), true;
player = gui_handler_get_player(srv, event);
if (player == nullptr)
return append_to_output(srv, cs, "sbp\n"), true;
vappend_to_output(srv, cs,
GUI_PLAYER_LVL " #%hu %hhu\n", player->id, player->tier);
return true;
}
bool gui_player_get_inventory_handler(server_t *srv, const event_t *event)
{
client_state_t *cs = event_get_client(srv, event);
client_state_t *player;
if (cs == nullptr)
return false;
if (cs->team_id != TEAM_ID_GRAPHIC) {
send_to_guis(srv, GUI_PLAYER_INV " #%hd %hhu %hhu %s\n",
srv->cm.clients[event->client_idx].id,
cs->x, cs->y, serialize_inventory(&cs->inv));
return true;
}
if (event->arg_count != 2)
return append_to_output(srv, cs, "sbp\n"), true;
player = gui_handler_get_player(srv, event);
if (player == nullptr)
return append_to_output(srv, cs, "sbp\n"), true;
vappend_to_output(srv, cs, GUI_PLAYER_INV " #%hd %hhu %hhu %s\n",
player->id, cs->x, cs->y, serialize_inventory(&cs->inv));
return true;
}