Guest User

Untitled

a guest
Jun 21st, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.27 KB | None | 0 0
  1. #ifndef ZAPPY_LIBRARY_H
  2. #define ZAPPY_LIBRARY_H
  3.  
  4. #include <stdint.h>
  5. #include <stdbool.h>
  6. #include <sys/types.h>
  7. #include "network.h"
  8.  
  9. #if defined(_MSC_VER)
  10. #define EXPORT __declspec(dllexport)
  11. #define IMPORT __declspec(dllimport)
  12. #elif defined(__GNUC__)
  13. #define EXPORT __attribute__((visibility("default")))
  14. #define IMPORT
  15. #endif
  16.  
  17. #define PACKET_HEADER char const *cmd
  18. #define PACKED __attribute__((__packed__))
  19.  
  20. typedef struct packet_example_s packet_example_t;
  21. typedef struct packet_msz_s packet_msz_t;
  22. typedef struct packet_bct_tile_s packet_bct_tile_t;
  23. typedef struct packet_mct_s packet_mct_t;
  24. typedef struct packet_tna_s packet_tna_t;
  25. typedef struct packet_pnw_s packet_pnw_t;
  26. typedef struct packet_ppo_s packet_ppo_t;
  27. typedef struct packet_plv_s packet_plv_t;
  28. typedef struct packet_pin_s packet_pin_t;
  29. typedef struct packet_pex_s packet_pex_t;
  30. typedef struct packet_pbc_s packet_pbc_t;
  31. typedef struct packet_pic_s packet_pic_t;
  32. typedef struct packet_pie_s packet_pie_t;
  33. typedef struct packet_pfk_s packet_pfk_t;
  34. typedef struct packet_pdr_s packet_pdr_t;
  35. typedef struct packet_pgt_s packet_pgt_t;
  36. typedef struct packet_pdi_s packet_pdi_t;
  37. typedef struct packet_enw_s packet_enw_t;
  38. typedef struct packet_eht_s packet_eht_t;
  39. typedef struct packet_ebo_s packet_ebo_t;
  40. typedef struct packet_edi_s packet_edi_t;
  41. typedef struct packet_sgt_s packet_sgt_t;
  42. typedef struct packet_sst_s packet_sst_t;
  43. typedef struct packet_seg_s packet_seg_t;
  44. typedef struct packet_smg_s packet_smg_t;
  45. typedef struct packet_suc_s packet_suc_t;
  46. typedef struct packet_sbp_s packet_sbp_t;
  47. typedef struct packet_team_s packet_team_t;
  48. typedef struct packet_forward_s packet_forward_t;
  49. typedef struct packet_turn_s packet_turn_t;
  50. typedef struct packet_inventory_s packet_inventory_t;
  51.  
  52. struct PACKED packet_example_s {
  53. PACKET_HEADER;
  54. int64_t some;
  55. char str[100];
  56. int64_t shiet;
  57. };
  58.  
  59. struct PACKED packet_msz_s {
  60. PACKET_HEADER;
  61. size_t x;
  62. size_t y;
  63. };
  64.  
  65. struct PACKED packet_bct_tile_s {
  66. PACKET_HEADER;
  67. size_t x;
  68. size_t y;
  69. size_t q0;
  70. size_t q1;
  71. size_t q2;
  72. size_t q3;
  73. size_t q4;
  74. size_t q5;
  75. size_t q6;
  76. };
  77.  
  78. struct PACKED packet_mct_s {
  79. PACKET_HEADER;
  80. };
  81.  
  82. struct PACKED packet_tna_s {
  83. PACKET_HEADER;
  84. char name[1024];
  85. };
  86.  
  87. struct PACKED packet_pnw_s {
  88. PACKET_HEADER;
  89. char player_number[42];
  90. size_t x;
  91. size_t y;
  92. size_t orientation;
  93. size_t level;
  94. char name_team[1024];
  95. };
  96.  
  97. struct PACKED packet_ppo_s {
  98. PACKET_HEADER;
  99. size_t player_number;
  100. size_t x;
  101. size_t y;
  102. size_t orientation;
  103. };
  104.  
  105. struct PACKED packet_plv_s {
  106. PACKET_HEADER;
  107. size_t player_number;
  108. size_t level;
  109. };
  110.  
  111. struct PACKED packet_pin_s {
  112. PACKET_HEADER;
  113. size_t player_number;
  114. size_t x;
  115. size_t y;
  116. size_t q0;
  117. size_t q1;
  118. size_t q2;
  119. size_t q3;
  120. size_t q4;
  121. size_t q5;
  122. size_t q6;
  123. };
  124.  
  125. struct PACKED packet_pex_s {
  126. PACKET_HEADER;
  127. size_t player_number;
  128. };
  129.  
  130. struct PACKED packet_pbc_s {
  131. PACKET_HEADER;
  132. size_t player_number;
  133. char message[1024];
  134. };
  135.  
  136. struct PACKED packet_pic_s {
  137. PACKET_HEADER;
  138. size_t x;
  139. size_t y;
  140. size_t incantation_level;
  141. size_t player_nb1;
  142. size_t player_nb2;
  143. };
  144.  
  145. struct PACKED packet_pie_s {
  146. PACKET_HEADER;
  147. size_t x;
  148. size_t y;
  149. size_t result;
  150. };
  151.  
  152. struct PACKED packet_pfk_s {
  153. PACKET_HEADER;
  154. size_t player_number;
  155. };
  156.  
  157. struct PACKED packet_pdr_s {
  158. PACKET_HEADER;
  159. size_t player_number;
  160. size_t ressource;
  161. };
  162.  
  163. struct PACKED packet_pgt_s {
  164. PACKET_HEADER;
  165. size_t player_number;
  166. size_t ressource;
  167. };
  168.  
  169. struct PACKED packet_pdi_s {
  170. PACKET_HEADER;
  171. size_t player_number;
  172. };
  173.  
  174. struct PACKED packet_enw_s {
  175. PACKET_HEADER;
  176. size_t egg;
  177. size_t player_number;
  178. size_t x;
  179. size_t y;
  180. };
  181.  
  182. struct PACKED packet_eht_s {
  183. PACKET_HEADER;
  184. size_t egg;
  185. };
  186.  
  187. struct PACKED packet_ebo_s {
  188. PACKET_HEADER;
  189. size_t egg;
  190. };
  191.  
  192. struct PACKED packet_edi_s {
  193. PACKET_HEADER;
  194. size_t egg;
  195. };
  196.  
  197. struct PACKED packet_sgt_s {
  198. PACKET_HEADER;
  199. size_t time;
  200. };
  201.  
  202. struct PACKED packet_sst_s {
  203. PACKET_HEADER;
  204. size_t time;
  205. };
  206.  
  207. struct PACKED packet_seg_s {
  208. PACKET_HEADER;
  209. char team[1024];
  210. };
  211.  
  212. struct PACKED packet_smg_s {
  213. PACKET_HEADER;
  214. char message[1024];
  215. };
  216.  
  217. struct PACKED suc_s {
  218. PACKET_HEADER;
  219. };
  220.  
  221. struct PACKED sbp_s {
  222. PACKET_HEADER;
  223. };
  224.  
  225. struct PACKED packet_forward_s {
  226. PACKET_HEADER;
  227. };
  228.  
  229. struct PACKED packet_inventory_s {
  230. PACKET_HEADER;
  231. char result[2048];
  232. };
  233.  
  234. struct PACKED packet_turn_s {
  235. PACKET_HEADER;
  236. char orientation[6];
  237. };
  238.  
  239. struct PACKED packet_team_s {
  240. PACKET_HEADER;
  241. char team[1024];
  242. int status;
  243. };
  244.  
  245. typedef struct network_handlers_s network_handlers_t;
  246.  
  247. struct network_handlers_s {
  248. void (*on_map_size_reply)(session_t id, packet_msz_t *);
  249. void (*on_tile_content_reply)(session_t id, packet_bct_tile_t *);
  250. void (*on_team_name_reply)(session_t id, packet_tna_t *);
  251. void (*on_player_position_update)(session_t id, packet_ppo_t *);
  252. void (*on_player_level_update)(session_t id, packet_plv_t *);
  253. void (*on_player_inventory_update)(session_t id, packet_pin_t *);
  254. void (*on_player_connected)(session_t id, packet_pnw_t *);
  255. void (*on_player_expulsed)(session_t id, packet_pex_t *);
  256. void (*on_broadcast)(session_t id, packet_pbc_t *);
  257. void (*on_server_broadcast)(session_t id, packet_smg_t *);
  258. void (*on_player_cast_start)(session_t id, packet_pic_t *);
  259. void (*on_player_cast_end)(session_t id, packet_pie_t *);
  260. void (*on_player_lay_self)(session_t id, packet_pfk_t *);
  261. void (*on_player_lay)(session_t id, packet_enw_t *);
  262. void (*on_player_drop)(session_t id, packet_pdr_t *);
  263. void (*on_player_collect)(session_t id, packet_pgt_t *);
  264. void (*on_player_death)(session_t id, packet_pdi_t *);
  265. void (*on_egg_hatching)(session_t id, packet_eht_t *);
  266. void (*on_egg_hatching_death)(session_t id, packet_edi_t *);
  267. void (*on_timeunit_reply)(session_t id, packet_sgt_t *);
  268. void (*on_timeunit_modif_reply)(session_t id, packet_sst_t *);
  269. void (*on_game_end)(session_t id, packet_seg_t *);
  270. void (*on_unknown_command)(session_t id, packet_suc_t *);
  271. void (*on_command_param_wrong)(session_t id, packet_sbp_t *);
  272. };
  273.  
  274. EXPORT void zappy_connect(char *address, uint16_t port, network_handlers_t handlers);
  275. EXPORT session_t zappy_new_connection();
  276.  
  277. #endif
Add Comment
Please, Sign In to add comment