/* * Created by yuuta on 7/24/22. */ #include "client.h" #include "helpers.h" #include #include static void handle_event(const ac_event_t *event) { switch (event->type) { case AC_EVENT_LAGGING: { ac_event_lagging_t *o = (ac_event_lagging_t *) event; printf("Server lagging: running %ld milliseconds (%ld ticks) behind.\n", o->ms, o->ticks); break; } case AC_EVENT_ENTITY_DEATH: { ac_event_entity_death_t *o = (ac_event_entity_death_t *) event; printf("Entity '%s' died at %s(%.2f, %.2f, %.2f): %s.\n", o->entity.name, world_name(o->entity.world), o->entity.pos.x, o->entity.pos.y, o->entity.pos.z, o->message); break; } case AC_EVENT_PLAYER_MESSAGE: { ac_event_player_message_t *o = (ac_event_player_message_t *) event; printf("Player '%s' said at %s(%.2f, %.2f, %.2f): %s.\n", o->player.name, world_name(o->player.world), o->player.pos.x, o->player.pos.y, o->player.pos.z, o->text); break; } case AC_EVENT_PLAYER_DISCONNECT: { ac_event_player_disconnect_t *o = (ac_event_player_disconnect_t *) event; if (o->player) { printf("Player '%s' disconnected at %s(%.2f, %.2f, %.2f): %s.\n", o->player->name, world_name(o->player->world), o->player->pos.x, o->player->pos.y, o->player->pos.z, o->reason); } else { printf("Unknown player disconnected: %s.\n", o->reason); } break; } case AC_EVENT_PLAYER_JOIN: { ac_event_player_join_t *o = (ac_event_player_join_t *) event; printf("Player '%s' joined at %s(%.2f, %.2f, %.2f).\n", o->player.name, world_name(o->player.world), o->player.pos.x, o->player.pos.y, o->player.pos.z); break; } default: { printf("Received an unrecognized event of type '%u'.\n", event->type); } } } static void handle_response(const ac_response_t *response) { switch (response->type) { case AC_RESPONSE_OK: { ac_response_ok_t *o = (ac_response_ok_t *) response; #ifdef DEBUG printf("Request %d OK.\n", o->id); #endif break; } case AC_RESPONSE_ERROR: { ac_response_error_t *o = (ac_response_error_t *) response; printf("Request %d failed: %s (%d).\n", o->id, o->message, o->code); break; } case AC_RESPONSE_CMD_OUT: { ac_response_cmd_out_t *o = (ac_response_cmd_out_t *) response; #ifdef DEBUG printf("Request %d output by %s: %s.\n", o->id, o->sender, o->out); #else printf("%s\n", o->out); #endif break; } case AC_RESPONSE_CMD_RESULT: { ac_response_cmd_result_t *o = (ac_response_cmd_result_t *) response; #ifdef DEBUG printf("Request %d is done: %s (%d).\n", o->id, o->success ? "Success" : "Failed", o->result); #endif break; } default: { printf("Received an unrecognized response of type '%u'.\n", response->type); } } } int handle_object(ac_obj_t *obj) { if (AC_IS_RESPONSE(obj->type)) handle_response((ac_response_t *) obj); else handle_event((ac_event_t *) obj); ac_object_free(obj); return 0; }