/* * File: network.h * Author: Alexander Zhirov * Connection with me (telegram messenger): @alexanderzhirov * * Created on 2020.06.12 */ #ifndef client_network #define client_network #include #include typedef enum srv_state { STATE_NONE, STATE_LIST, STATE_PARTY, STATE_GAME, STATE_DISCONNECT } SERVER_STATE; typedef struct cl_user_command { int dx; int dy; bool fire; } SERVER_USER_COMMAND; typedef struct cl_user { int id; char nickname[40]; bool is_ready; SERVER_USER_COMMAND command; } CLIENT_USER; typedef struct cl_gamedata { int id; char game_name[40]; int count_connected; } CLIENT_GAME_DATA; typedef struct cl_game_command { int dx; int dy; bool fire; bool send; } CLIENT_GAME_COMMAND; typedef struct cl_network { int game_id; int user_id; char game_name[40]; CLIENT_USER users[3]; CLIENT_GAME_DATA games[3]; int user_size; int count_connected; int count_game; bool game_started; bool active; bool is_creator; bool is_ready; CLIENT_GAME_COMMAND command; } CLIENT_NETWORK; typedef struct cl_message_none { int display_width; int display_height; float scale_factor; SERVER_STATE state; char game_name[40]; char nickname[40]; bool is_creator; bool is_ready; } CLIENT_MESSAGE_NONE; typedef struct cl_message_party { int game_id; int user_id; CLIENT_USER users[3]; char game_name[40]; int count_connected; bool game_started; bool active; bool is_creator; bool is_ready; SERVER_STATE state; } CLIENT_MESSAGE_PARTY; typedef struct cl_message_list { CLIENT_GAME_DATA games[3]; SERVER_STATE state; int count_game; } CLIENT_MESSAGE_LIST; typedef struct cl_message_joingame { int id; SERVER_STATE state; } CLIENT_MESSAGE_JOINGAME; typedef struct cl_message_sendparty { SERVER_STATE state; bool is_creator; bool is_ready; bool kick_user; int user_id; } CLIENT_MESSAGE_SENDPARTY; typedef struct cl_message_game { int dx; int dy; bool fire; SERVER_STATE state; } CLIENT_MESSAGE_GAME; // GAME typedef struct cl_update_ship { int ID; int x; int y; int dx; int dy; int lives; int score; bool active; } CLIENT_UPDATE_SHIP; typedef struct cl_update_bullet { int ID; int x; int y; bool live; bool active; } CLIENT_UPDATE_BULLET; typedef struct cl_update_comet { int x; int y; bool live; } CLIENT_UPDATE_COMET; typedef struct cl_update_explosion { int x; int y; bool live; } CLIENT_UPDATE_EXPLOSION; typedef struct cl_message_update { CLIENT_UPDATE_SHIP ship[3]; CLIENT_UPDATE_BULLET bullet[15]; CLIENT_UPDATE_COMET comet[15]; CLIENT_UPDATE_EXPLOSION explosion[15]; } CLIENT_MESSAGE_UPDATE; typedef struct cl_enet { ENetHost* client; ENetPeer* server; ENetEvent event; ENetAddress address; bool connect; int port; char host[20]; } CLIENT_ENET; CLIENT_ENET* cl_create_enet(CLIENT_ENET* enet); void cl_free_enet(CLIENT_ENET* enet); void cl_destroy_enet(CLIENT_ENET* enet); void cl_disconnect_enet(CLIENT_ENET* enet); #endif