191 lines
3.2 KiB
C
191 lines
3.2 KiB
C
|
/*
|
||
|
* File: network.h
|
||
|
* Author: Alexander Zhirov
|
||
|
* Connection with me (telegram messenger): @alexanderzhirov
|
||
|
*
|
||
|
* Created on 2020.06.12
|
||
|
*/
|
||
|
|
||
|
#ifndef client_network
|
||
|
#define client_network
|
||
|
|
||
|
#include <enet/enet.h>
|
||
|
#include <stdbool.h>
|
||
|
|
||
|
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
|
||
|
|