2D Run-and-gun shooter inspired by One Man's Doomsday, Counter-Strike, and Metal Slug.
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

86 satır
1.9 KiB

  1. #include "IZ_net_server.h"
  2. bool IZ_NetServerIsValidPort(u16 port) {
  3. return (1000 <= port && port <= 59999);
  4. }
  5. static INI_ConfigItem net_server_config_items[] = {
  6. {
  7. INI_CONFIG_TYPE_STRING(64),
  8. "Network",
  9. "Name",
  10. "-n",
  11. &IZ_NET_SERVER_DEFAULT_STATE.config.name,
  12. NULL,
  13. INI_CONFIG_TRANSFORMER_NONE,
  14. NULL,
  15. },
  16. {
  17. INI_CONFIG_TYPE_STRING(128),
  18. "Network",
  19. "Motd",
  20. "-m",
  21. &IZ_NET_SERVER_DEFAULT_STATE.config.motd,
  22. NULL,
  23. INI_CONFIG_TRANSFORMER_NONE,
  24. NULL,
  25. },
  26. {
  27. INI_CONFIG_TYPE_U16,
  28. "Network",
  29. "Port",
  30. "-p",
  31. &IZ_NET_SERVER_DEFAULT_STATE.config.port,
  32. IZ_NetServerIsValidPort,
  33. INI_CONFIG_TRANSFORMER_NONE,
  34. NULL,
  35. },
  36. INI_CONFIG_ITEM_NULL,
  37. };
  38. void IZ_NetServerBindStateToConfig(IZ_NetServerState* state, INI_ConfigItem config_items[]) {
  39. config_items[0].dest = &state->config.name;
  40. config_items[1].dest = &state->config.motd;
  41. config_items[2].dest = &state->config.port;
  42. }
  43. IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetServerState* state, const char* config_path) {
  44. IZ_NetServerBindStateToConfig(state, net_server_config_items);
  45. return INI_ConfigSave(net_server_config_items, config_path);
  46. }
  47. IZ_ProcedureResult IZ_NetServerInitializeConfig(
  48. IZ_NetServerState* state,
  49. const char* config_path,
  50. u8 argc,
  51. const char* argv[]
  52. ) {
  53. IZ_NetServerBindStateToConfig(state, net_server_config_items);
  54. if (INI_ConfigInitialize(net_server_config_items, config_path, argc, argv) < 0) {
  55. return -1;
  56. }
  57. return 0;
  58. }
  59. IZ_ProcedureResult IZ_NetServerInitialize(
  60. IZ_NetServerState* state,
  61. void* user_data,
  62. const char* config_path,
  63. u8 argc,
  64. const char* argv[]
  65. ) {
  66. if (!user_data) {
  67. return -1;
  68. }
  69. IZ_memcpy(state, sizeof(IZ_NetServerState), &IZ_NET_SERVER_DEFAULT_STATE, sizeof(IZ_NetServerState));
  70. if (IZ_NetServerInitializeConfig(state, config_path, argc, argv) < 0) {
  71. return -2;
  72. }
  73. state->binding.user_data = user_data;
  74. return 0;
  75. }
  76. void IZ_NetServerCancelService(IZ_NetServerState* state) {
  77. IZ_WSServerCancelService(&state->binding);
  78. }