Skip to content

Instantly share code, notes, and snippets.

@Romain-P
Created June 20, 2018 14:46
Show Gist options
  • Select an option

  • Save Romain-P/d81c9a31472fc41aa2c5f84cff265355 to your computer and use it in GitHub Desktop.

Select an option

Save Romain-P/d81c9a31472fc41aa2c5f84cff265355 to your computer and use it in GitHub Desktop.
#ifndef ZAPPY_LIBRARY_H
#define ZAPPY_LIBRARY_H
#include <stdint.h>
#include <stdbool.h>
#include <sys/types.h>
#include "network.h"
#if defined(_MSC_VER)
#define EXPORT __declspec(dllexport)
#define IMPORT __declspec(dllimport)
#elif defined(__GNUC__)
#define EXPORT __attribute__((visibility("default")))
#define IMPORT
#endif
#define PACKET_HEADER char const *cmd
#define PACKED __attribute__((__packed__))
typedef struct packet_example_s packet_example_t;
typedef struct packet_msz_s packet_msz_t;
typedef struct packet_bct_tile_s packet_bct_tile_t;
typedef struct packet_mct_s packet_mct_t;
typedef struct packet_tna_s packet_tna_t;
typedef struct packet_pnw_s packet_pnw_t;
typedef struct packet_ppo_s packet_ppo_t;
typedef struct packet_plv_s packet_plv_t;
typedef struct packet_pin_s packet_pin_t;
typedef struct packet_pex_s packet_pex_t;
typedef struct packet_pbc_s packet_pbc_t;
typedef struct packet_pic_s packet_pic_t;
typedef struct packet_pie_s packet_pie_t;
typedef struct packet_pfk_s packet_pfk_t;
typedef struct packet_pdr_s packet_pdr_t;
typedef struct packet_pgt_s packet_pgt_t;
typedef struct packet_pdi_s packet_pdi_t;
typedef struct packet_enw_s packet_enw_t;
typedef struct packet_eht_s packet_eht_t;
typedef struct packet_ebo_s packet_ebo_t;
typedef struct packet_edi_s packet_edi_t;
typedef struct packet_sgt_s packet_sgt_t;
typedef struct packet_sst_s packet_sst_t;
typedef struct packet_seg_s packet_seg_t;
typedef struct packet_smg_s packet_smg_t;
typedef struct packet_suc_s packet_suc_t;
typedef struct packet_sbp_s packet_sbp_t;
typedef struct packet_team_s packet_team_t;
typedef struct packet_forward_s packet_forward_t;
typedef struct packet_turn_s packet_turn_t;
typedef struct packet_inventory_s packet_inventory_t;
struct PACKED packet_example_s {
PACKET_HEADER;
int64_t some;
char str[100];
int64_t shiet;
};
struct PACKED packet_msz_s {
PACKET_HEADER;
size_t x;
size_t y;
};
struct PACKED packet_bct_tile_s {
PACKET_HEADER;
size_t x;
size_t y;
size_t q0;
size_t q1;
size_t q2;
size_t q3;
size_t q4;
size_t q5;
size_t q6;
};
struct PACKED packet_mct_s {
PACKET_HEADER;
};
struct PACKED packet_tna_s {
PACKET_HEADER;
char name[1024];
};
struct PACKED packet_pnw_s {
PACKET_HEADER;
char player_number[42];
size_t x;
size_t y;
size_t orientation;
size_t level;
char name_team[1024];
};
struct PACKED packet_ppo_s {
PACKET_HEADER;
size_t player_number;
size_t x;
size_t y;
size_t orientation;
};
struct PACKED packet_plv_s {
PACKET_HEADER;
size_t player_number;
size_t level;
};
struct PACKED packet_pin_s {
PACKET_HEADER;
size_t player_number;
size_t x;
size_t y;
size_t q0;
size_t q1;
size_t q2;
size_t q3;
size_t q4;
size_t q5;
size_t q6;
};
struct PACKED packet_pex_s {
PACKET_HEADER;
size_t player_number;
};
struct PACKED packet_pbc_s {
PACKET_HEADER;
size_t player_number;
char message[1024];
};
struct PACKED packet_pic_s {
PACKET_HEADER;
size_t x;
size_t y;
size_t incantation_level;
size_t player_nb1;
size_t player_nb2;
};
struct PACKED packet_pie_s {
PACKET_HEADER;
size_t x;
size_t y;
size_t result;
};
struct PACKED packet_pfk_s {
PACKET_HEADER;
size_t player_number;
};
struct PACKED packet_pdr_s {
PACKET_HEADER;
size_t player_number;
size_t ressource;
};
struct PACKED packet_pgt_s {
PACKET_HEADER;
size_t player_number;
size_t ressource;
};
struct PACKED packet_pdi_s {
PACKET_HEADER;
size_t player_number;
};
struct PACKED packet_enw_s {
PACKET_HEADER;
size_t egg;
size_t player_number;
size_t x;
size_t y;
};
struct PACKED packet_eht_s {
PACKET_HEADER;
size_t egg;
};
struct PACKED packet_ebo_s {
PACKET_HEADER;
size_t egg;
};
struct PACKED packet_edi_s {
PACKET_HEADER;
size_t egg;
};
struct PACKED packet_sgt_s {
PACKET_HEADER;
size_t time;
};
struct PACKED packet_sst_s {
PACKET_HEADER;
size_t time;
};
struct PACKED packet_seg_s {
PACKET_HEADER;
char team[1024];
};
struct PACKED packet_smg_s {
PACKET_HEADER;
char message[1024];
};
struct PACKED suc_s {
PACKET_HEADER;
};
struct PACKED sbp_s {
PACKET_HEADER;
};
struct PACKED packet_forward_s {
PACKET_HEADER;
};
struct PACKED packet_inventory_s {
PACKET_HEADER;
char result[2048];
};
struct PACKED packet_turn_s {
PACKET_HEADER;
char orientation[6];
};
struct PACKED packet_team_s {
PACKET_HEADER;
char team[1024];
int status;
};
typedef struct network_handlers_s network_handlers_t;
struct network_handlers_s {
void (*on_map_size_reply)(session_t id, packet_msz_t *);
void (*on_tile_content_reply)(session_t id, packet_bct_tile_t *);
void (*on_team_name_reply)(session_t id, packet_tna_t *);
void (*on_player_position_update)(session_t id, packet_ppo_t *);
void (*on_player_level_update)(session_t id, packet_plv_t *);
void (*on_player_inventory_update)(session_t id, packet_pin_t *);
void (*on_player_connected)(session_t id, packet_pnw_t *);
void (*on_player_expulsed)(session_t id, packet_pex_t *);
void (*on_broadcast)(session_t id, packet_pbc_t *);
void (*on_server_broadcast)(session_t id, packet_smg_t *);
void (*on_player_cast_start)(session_t id, packet_pic_t *);
void (*on_player_cast_end)(session_t id, packet_pie_t *);
void (*on_player_lay_self)(session_t id, packet_pfk_t *);
void (*on_player_lay)(session_t id, packet_enw_t *);
void (*on_player_drop)(session_t id, packet_pdr_t *);
void (*on_player_collect)(session_t id, packet_pgt_t *);
void (*on_player_death)(session_t id, packet_pdi_t *);
void (*on_egg_hatching)(session_t id, packet_eht_t *);
void (*on_egg_hatching_death)(session_t id, packet_edi_t *);
void (*on_timeunit_reply)(session_t id, packet_sgt_t *);
void (*on_timeunit_modif_reply)(session_t id, packet_sst_t *);
void (*on_game_end)(session_t id, packet_seg_t *);
void (*on_unknown_command)(session_t id, packet_suc_t *);
void (*on_command_param_wrong)(session_t id, packet_sbp_t *);
};
EXPORT void zappy_connect(char *address, uint16_t port, network_handlers_t handlers);
EXPORT session_t zappy_new_connection();
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment