diff --git a/CMakeLists.txt b/CMakeLists.txt index db74745..dac0986 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ add_executable( dependencies/getopt-for-windows/getopt.c src/packages/game/output/video/IZ_video.h src/packages/game/output/video/IZ_video.c - src/packages/game/IZ_common.h + src/packages/common/IZ_common.h src/packages/game/input/IZ_action.h src/packages/game/IZ_app.h src/packages/game/IZ_app.c @@ -60,8 +60,8 @@ add_executable( src/packages/game/input/IZ_joystick.h src/packages/game/input/IZ_keyboard.c src/packages/game/input/IZ_keyboard.h - src/packages/game/config/IZ_config.c - src/packages/game/config/IZ_config.h + src/packages/config/IZ_config.c + src/packages/config/IZ_config.h src/packages/game/geometry/IZ_point2d.c src/packages/game/geometry/IZ_point2d.h src/packages/game/geometry/IZ_vector2d.c @@ -82,15 +82,15 @@ add_executable( src/packages/game/input/IZ_midi.h src/packages/game/data/IZ_list.c src/packages/game/data/IZ_list.h - src/packages/game/net/svc/IZ_wsclient.c - src/packages/game/net/svc/IZ_wsclient.h - src/packages/game/log/IZ_log.c - src/packages/game/log/IZ_log.h + src/packages/net/svc/IZ_wsclient.c + src/packages/net/svc/IZ_wsclient.h + src/packages/log/IZ_log.c + src/packages/log/IZ_log.h src/packages/game/util/IZ_midi.c src/packages/game/util/IZ_midi.h - src/packages/game/net/core/IZ_websocket.h - src/packages/game/net/core/IZ_websocket.c - src/packages/game/net/IZ_net.c src/packages/game/net/IZ_net.h src/packages/game/IZ_app_net.c src/packages/game/IZ_app_net.h src/packages/game/IZ_app_video.c src/packages/game/IZ_app_video.h src/packages/game/IZ_subsystem.h src/packages/game/IZ_app_input.c src/packages/game/IZ_app_input.h src/packages/game/IZ_app_config.c src/packages/game/IZ_app_config.h) + src/packages/net/core/IZ_websocket.h + src/packages/net/core/IZ_websocket.c + src/packages/net/IZ_net_client.c src/packages/net/IZ_net_client.h src/packages/game/IZ_app_net.c src/packages/game/IZ_app_net.h src/packages/game/IZ_app_video.c src/packages/game/IZ_app_video.h src/packages/game/IZ_subsystem.h src/packages/game/IZ_app_input.c src/packages/game/IZ_app_input.h src/packages/game/IZ_app_config.c src/packages/game/IZ_app_config.h) target_link_libraries( game @@ -130,7 +130,7 @@ add_executable( __mocks__/SDL_stdinc.mock.h __mocks__/portmidi.mock.h - src/packages/game/config/IZ_config.h + src/packages/config/IZ_config.h src/packages/game/input/IZ_keyboard.h src/packages/game/input/IZ_keyboard.c @@ -157,7 +157,7 @@ add_executable( __mocks__/SDL_stdinc.mock.h __mocks__/SDL_render.mock.h - src/packages/game/config/IZ_config.h + src/packages/config/IZ_config.h src/packages/game/output/video/IZ_video.h src/packages/game/output/video/IZ_video.c @@ -194,19 +194,25 @@ add_executable( dependencies/sqlite/sqlite3.c dependencies/minIni/dev/minIni.h dependencies/minIni/dev/minIni.c - src/packages/server/IZ_common.h - src/packages/server/log/IZ_log.h - src/packages/server/log/IZ_log.c + src/packages/log/IZ_log.h + src/packages/log/IZ_log.c src/packages/server/main.c src/packages/server/IZ_app.c src/packages/server/IZ_app.h - src/packages/server/IZ_config.c - src/packages/server/IZ_config.h - src/packages/server/net/svc/IZ_wsserver.c - src/packages/server/net/svc/IZ_wsserver.h - src/packages/server/net/core/IZ_websocket.h - src/packages/server/net/core/IZ_websocket.c - src/packages/server/net/IZ_net.c src/packages/server/net/IZ_net.h src/packages/server/db/IZ_repo.c src/packages/server/db/IZ_repo.h) + src/packages/server/IZ_app_config.h + src/packages/server/IZ_app_config.c + src/packages/net/svc/IZ_wsserver.c + src/packages/net/svc/IZ_wsserver.h + src/packages/net/core/IZ_websocket.h + src/packages/net/core/IZ_websocket.c + src/packages/config/IZ_config.h + src/packages/config/IZ_config.c + src/packages/net/IZ_net_server.c + src/packages/net/IZ_net_server.h + src/packages/server/db/IZ_repo.c + src/packages/server/db/IZ_repo.h + src/packages/server/IZ_subsystem.h +) target_link_libraries( server diff --git a/__mocks__/SDL_joystick.mock.h b/__mocks__/SDL_joystick.mock.h index 0608704..1f4d885 100644 --- a/__mocks__/SDL_joystick.mock.h +++ b/__mocks__/SDL_joystick.mock.h @@ -1,7 +1,7 @@ #ifndef SDL_JOYSTICK_MOCK_H #define SDL_JOYSTICK_MOCK_H -#include "../src/packages/game/IZ_common.h" +#include "../src/packages/common/IZ_common.h" #include "../src/packages/test/IZ_test.h" typedef struct _SDL_Joystick {} SDL_Joystick; diff --git a/__mocks__/SDL_keyboard.mock.h b/__mocks__/SDL_keyboard.mock.h index 2282e45..5959966 100644 --- a/__mocks__/SDL_keyboard.mock.h +++ b/__mocks__/SDL_keyboard.mock.h @@ -1,7 +1,7 @@ #ifndef SDL_KEYBOARD_MOCK_H #define SDL_KEYBOARD_MOCK_H -#include "../src/packages/game/IZ_common.h" +#include "../src/packages/common/IZ_common.h" #include "../src/packages/test/IZ_test.h" mock(SDL_GetKeyName) const char* SDL_GetKeyName(i32 key) { diff --git a/__mocks__/SDL_render.mock.h b/__mocks__/SDL_render.mock.h index a9278a6..db6e98b 100644 --- a/__mocks__/SDL_render.mock.h +++ b/__mocks__/SDL_render.mock.h @@ -1,7 +1,7 @@ #ifndef SDL_RENDER_MOCK_H #define SDL_RENDER_MOCK_H -#include "../src/packages/game/IZ_common.h" +#include "../src/packages/common/IZ_common.h" #include "../src/packages/test/IZ_test.h" typedef struct SDL_Renderer SDL_Renderer; diff --git a/__mocks__/SDL_stdinc.mock.h b/__mocks__/SDL_stdinc.mock.h index 1f768b1..1fbbff1 100644 --- a/__mocks__/SDL_stdinc.mock.h +++ b/__mocks__/SDL_stdinc.mock.h @@ -2,7 +2,7 @@ #define SDL_STDINC_MOCK_H #include -#include "../src/packages/game/IZ_common.h" +#include "../src/packages/common/IZ_common.h" #include "../src/packages/test/IZ_test.h" mock(SDL_memcpy) void* SDL_memcpy(void* dst, const void* src, size_t len) { diff --git a/__mocks__/minIni.mock.h b/__mocks__/minIni.mock.h index a9b5cfc..d63cc64 100644 --- a/__mocks__/minIni.mock.h +++ b/__mocks__/minIni.mock.h @@ -1,7 +1,7 @@ #ifndef MININI_MOCK_H #define MININI_MOCK_H -#include "../src/packages/game/IZ_common.h" +#include "../src/packages/common/IZ_common.h" #include "../src/packages/test/IZ_test.h" mock(ini_getl) long ini_getl(const char *Section, const char *Key, long DefValue, const char *Filename) { diff --git a/__mocks__/portmidi.mock.h b/__mocks__/portmidi.mock.h index d33a015..e313636 100644 --- a/__mocks__/portmidi.mock.h +++ b/__mocks__/portmidi.mock.h @@ -3,7 +3,7 @@ #define PORTMIDI_INCLUDED -#include "../src/packages/game/IZ_common.h" +#include "../src/packages/common/IZ_common.h" typedef i32 PmDeviceID; typedef void PortMidiStream; diff --git a/docs/reference/files/config-server.ini b/docs/reference/files/config-server.ini index d563d3f..33acfb4 100644 --- a/docs/reference/files/config-server.ini +++ b/docs/reference/files/config-server.ini @@ -1,6 +1,6 @@ -[Network] -Name=Izanagi -Motd= -Port=42069 -[Database] -Path=db.sqlite +[Network] +Name=Izanagi Server +Motd= +Port=42069 +[Database] +Path=server.sqlite diff --git a/src/packages/game/IZ_common.h b/src/packages/common/IZ_common.h similarity index 100% rename from src/packages/game/IZ_common.h rename to src/packages/common/IZ_common.h diff --git a/src/packages/game/config/IZ_config.c b/src/packages/config/IZ_config.c similarity index 97% rename from src/packages/game/config/IZ_config.c rename to src/packages/config/IZ_config.c index ad4fef6..6d9bac2 100644 --- a/src/packages/game/config/IZ_config.c +++ b/src/packages/config/IZ_config.c @@ -29,7 +29,7 @@ typedef bool IZ_ConfigLoadParamsU16Validator(u16); typedef bool IZ_ConfigLoadParamsU8Validator(u8); -void IZ_ConfigEnsureValidString(IZ_ConfigItem item, char* buffer) { +void IZ_ConfigEnsureValidString(IZ_ConfigItem item, const char* buffer) { char dest[item.dest_size]; if (item.validator) { IZ_ConfigLoadParamsStringValidator* validator = item.validator; @@ -48,7 +48,7 @@ void IZ_ConfigEnsureValidString(IZ_ConfigItem item, char* buffer) { void IZ_ConfigLoadString(IZ_ConfigItem item, const char* config_path) { char buffer[item.dest_size]; - ini_gets(item.section, item.key, item.default_value, buffer, item.dest_size, config_path); + ini_gets(item.section, item.key, item.default_value, buffer, (i32) item.dest_size, config_path); IZ_ConfigEnsureValidString(item, buffer); } diff --git a/src/packages/game/config/IZ_config.h b/src/packages/config/IZ_config.h similarity index 84% rename from src/packages/game/config/IZ_config.h rename to src/packages/config/IZ_config.h index a26873f..df8cad6 100644 --- a/src/packages/game/config/IZ_config.h +++ b/src/packages/config/IZ_config.h @@ -1,10 +1,10 @@ #ifndef IZ_CONFIG_H #define IZ_CONFIG_H -#include #include +#include #include -#include "../IZ_common.h" +#include "../common/IZ_common.h" typedef enum { IZ_CONFIG_TYPE_VOID, @@ -26,9 +26,9 @@ typedef struct { void IZ_ConfigGetDefaultPath(const char*, size_t); -const char* IZ_ConfigGetCommandlineOption(u8, const char**, const char*); +const char* IZ_ConfigGetCommandlineOption(u8, const char*[], const char*); -void IZ_ConfigInit(IZ_ConfigItem[], const char*, u8, const char**); +void IZ_ConfigInit(IZ_ConfigItem[], const char*, u8, const char*[]); IZ_ProcedureResult IZ_ConfigSave(IZ_ConfigItem[], const char*); diff --git a/src/packages/game/IZ_app.c b/src/packages/game/IZ_app.c index 517a141..02a1405 100644 --- a/src/packages/game/IZ_app.c +++ b/src/packages/game/IZ_app.c @@ -8,7 +8,7 @@ void IZ_AppBindConnection(struct IZ_App* app, struct lws* wsi) { app->net_state.binding.connection = wsi; } -IZ_NetState* IZ_AppGetNetState(struct IZ_App* app) { +IZ_NetClientState* IZ_AppGetNetState(struct IZ_App* app) { return &app->net_state; } @@ -47,7 +47,7 @@ IZ_ProcedureResult IZ_AppInitialize(struct IZ_App* app, u8 argc, const char* arg return IZ_APP_RUN_INPUT_INIT_ERROR; } - if (IZ_NetInitialize(&app->net_state, app, IZ_AppRunNetworkingThread, config_path, argc, argv)) { + if (IZ_NetClientInitialize(&app->net_state, app, IZ_AppRunNetworkingThread, config_path, argc, argv)) { return IZ_APP_RUN_NETWORKING_ERROR; } @@ -58,7 +58,7 @@ IZ_ProcedureResult IZ_AppInitialize(struct IZ_App* app, u8 argc, const char* arg } void IZ_AppTeardown(struct IZ_App* app) { - IZ_NetDisconnect(&app->net_state); + IZ_NetClientDisconnect(&app->net_state); IZ_PoolTeardown(&app->pool); IZ_InputTeardown(&app->input_state); IZ_VideoTeardown(&app->video_state); diff --git a/src/packages/game/IZ_app.h b/src/packages/game/IZ_app.h index bf38ef7..7ccf406 100644 --- a/src/packages/game/IZ_app.h +++ b/src/packages/game/IZ_app.h @@ -24,9 +24,9 @@ typedef struct IZ_App { IZ_Pool pool; u64 ticks; - IZ_NetState net_state; + IZ_NetClientState net_state; } IZ_App; -IZ_ProcedureResult IZ_AppRun(struct IZ_App*, u8, const char**); +IZ_ProcedureResult IZ_AppRun(struct IZ_App*, u8, const char*[]); #endif diff --git a/src/packages/game/IZ_app_config.h b/src/packages/game/IZ_app_config.h index 02e51c1..7a89dc7 100644 --- a/src/packages/game/IZ_app_config.h +++ b/src/packages/game/IZ_app_config.h @@ -1,8 +1,8 @@ #ifndef IZ_APP_CONFIG_H #define IZ_APP_CONFIG_H -#include "SDL_filesystem.h" +#include #include "IZ_subsystem.h" -#include "config/IZ_config.h" +#include "../config/IZ_config.h" #endif diff --git a/src/packages/game/IZ_app_input.c b/src/packages/game/IZ_app_input.c index 15f9538..b00e26c 100644 --- a/src/packages/game/IZ_app_input.c +++ b/src/packages/game/IZ_app_input.c @@ -3,7 +3,7 @@ IZ_ProcedureResult IZ_AppHandleSDLEvents(struct IZ_App* app) { SDL_Event e; IZ_InputState* input_state = IZ_AppGetInputState(app); - IZ_NetState* net_state = IZ_AppGetNetState(app); + IZ_NetClientState* net_state = IZ_AppGetNetState(app); while (SDL_PollEvent(&e) != 0) { if (e.type == SDL_QUIT) { @@ -12,7 +12,7 @@ IZ_ProcedureResult IZ_AppHandleSDLEvents(struct IZ_App* app) { if (e.type == SDL_KEYDOWN) { if (e.key.keysym.sym == SDLK_PAGEUP) { - IZ_NetConnect( + IZ_NetClientConnect( net_state, (IZ_WSClientInitializeParams) { .host = "127.0.0.1", @@ -21,9 +21,9 @@ IZ_ProcedureResult IZ_AppHandleSDLEvents(struct IZ_App* app) { } ); } else if (e.key.keysym.sym == SDLK_PAGEDOWN) { - IZ_NetDisconnect(net_state); + IZ_NetClientDisconnect(net_state); } else if (e.key.keysym.sym == SDLK_INSERT) { - IZ_NetSendTextMessage(net_state, "hello", 5); + IZ_NetClientSendTextMessage(net_state, "hello", 5); } } diff --git a/src/packages/game/IZ_app_net.c b/src/packages/game/IZ_app_net.c index a0c4049..b7bec97 100644 --- a/src/packages/game/IZ_app_net.c +++ b/src/packages/game/IZ_app_net.c @@ -16,7 +16,7 @@ void IZ_AppHandleNetworkingInboundTextEvents(struct IZ_App* app, const char* tex void IZ_AppHandleOutboundNetworking(struct IZ_App* app) { // TODO implement queueing of messages - IZ_NetState* net_state = IZ_AppGetNetState(app); + IZ_NetClientState* net_state = IZ_AppGetNetState(app); IZ_InputState* input_state = IZ_AppGetInputState(app); u8 player_index; @@ -34,7 +34,7 @@ void IZ_AppHandleOutboundNetworking(struct IZ_App* app) { msg->action.player[0].index = player_index; msg->action.player[0].value = input_state->action[player_index]; msg->action.player[0].state = 0; - IZ_NetSendBinaryMessage( + IZ_NetClientSendBinaryMessage( net_state, msg, sizeof(*msg) @@ -60,8 +60,8 @@ void IZ_WSClientAttemptConnect(struct lws_sorted_usec_list *sul) { vhd->i.pwsi = &vhd->client_wsi; struct IZ_App* app = (struct IZ_App*) vhd->app; - IZ_NetState* net_state = IZ_AppGetNetState(app); - net_state->status = IZ_NET_STATUS_CONNECTING; + IZ_NetClientState* net_state = IZ_AppGetNetState(app); + net_state->status = IZ_NET_CLIENT_STATUS_CONNECTING; if (lws_client_connect_via_info(&vhd->i)) { return; } @@ -124,8 +124,8 @@ void IZ_WSClientProtocolTeardown(struct lws* wsi) { lws_sul_cancel(&vhd->sul); struct IZ_App* app = (struct IZ_App*) vhd->app; - IZ_NetState* net_state = IZ_AppGetNetState(app); - net_state->status = IZ_NET_STATUS_PRISTINE; + IZ_NetClientState* net_state = IZ_AppGetNetState(app); + net_state->status = IZ_NET_CLIENT_STATUS_PRISTINE; } IZ_ProcedureResult IZ_WSClientConnectionError(struct lws* wsi, void* in) { @@ -142,13 +142,13 @@ IZ_ProcedureResult IZ_WSClientConnectionError(struct lws* wsi, void* in) { struct IZ_App* app = (struct IZ_App*) vhd->app; IZ_AppBindConnection(app, NULL); vhd->client_wsi = NULL; - IZ_NetState* net_state = IZ_AppGetNetState(app); + IZ_NetClientState* net_state = IZ_AppGetNetState(app); if (net_state->retries == net_state->config.max_reconnect_retries) { lwsl_err("Max number of retries reached!\n"); - net_state->status = IZ_NET_STATUS_PRISTINE; + net_state->status = IZ_NET_CLIENT_STATUS_PRISTINE; return -1; } - net_state->status = IZ_NET_STATUS_ERROR; + net_state->status = IZ_NET_CLIENT_STATUS_ERROR; net_state->retries += 1; lws_sul_schedule( vhd->context, @@ -167,15 +167,15 @@ IZ_ProcedureResult IZ_WSClientOnOpen(struct lws* wsi, IZ_WSClientSessionData* ps lws_get_protocol(wsi) ); struct IZ_App* app = (struct IZ_App*) vhd->app; - IZ_NetState* net_state = IZ_AppGetNetState(app); + IZ_NetClientState* net_state = IZ_AppGetNetState(app); pss->ring = lws_ring_create(sizeof(IZ_WebsocketMessage), RING_COUNT,IZ_WebsocketDestroyMessage); if (!pss->ring) { - net_state->status = IZ_NET_STATUS_ERROR; + net_state->status = IZ_NET_CLIENT_STATUS_ERROR; return -1; } IZ_AppBindConnection(app, wsi); - net_state->status = IZ_NET_STATUS_CONNECTED; + net_state->status = IZ_NET_CLIENT_STATUS_CONNECTED; net_state->retries = 0; pss->tail = 0; return 0; @@ -287,7 +287,7 @@ void IZ_WSClientOnReceive(struct lws* wsi, IZ_WSClientSessionData* pss, void* in } IZ_ProcedureResult IZ_AppRunNetworkingThread(struct IZ_App* app) { - IZ_NetState* net_state = IZ_AppGetNetState(app); + IZ_NetClientState* net_state = IZ_AppGetNetState(app); if (IZ_WSClientInitialize(&net_state->binding, net_state->params)) { return -1; diff --git a/src/packages/game/IZ_app_net.h b/src/packages/game/IZ_app_net.h index e1d73a5..bfe4cce 100644 --- a/src/packages/game/IZ_app_net.h +++ b/src/packages/game/IZ_app_net.h @@ -1,7 +1,6 @@ #ifndef IZ_APP_NET_H #define IZ_APP_NET_H -#include "net/IZ_net.h" #include "IZ_subsystem.h" typedef enum { diff --git a/src/packages/game/IZ_app_video.c b/src/packages/game/IZ_app_video.c index d621a07..c34f06f 100644 --- a/src/packages/game/IZ_app_video.c +++ b/src/packages/game/IZ_app_video.c @@ -52,19 +52,19 @@ void IZ_VideoUpdateForDebugInput(IZ_VideoState* video_state, IZ_InputState* inpu } } -void IZ_VideoUpdateForDebugNet(IZ_VideoState* video_state, IZ_NetState* net_state) { +void IZ_VideoUpdateForDebugNet(IZ_VideoState* video_state, IZ_NetClientState* net_state) { const u8 size = 4; switch (net_state->status) { default: return; - case IZ_NET_STATUS_ERROR: + case IZ_NET_CLIENT_STATUS_ERROR: SDL_SetRenderDrawColor(video_state->renderer, 0xff, 0x00, 0x00, 0xff); break; - case IZ_NET_STATUS_CONNECTING: + case IZ_NET_CLIENT_STATUS_CONNECTING: SDL_SetRenderDrawColor(video_state->renderer, 0xff, 0xff, 0x00, 0xff); break; - case IZ_NET_STATUS_CONNECTED: + case IZ_NET_CLIENT_STATUS_CONNECTED: SDL_SetRenderDrawColor(video_state->renderer, 0x00, 0xff, 0x00, 0xff); break; } @@ -108,7 +108,7 @@ void IZ_VideoUpdate(IZ_VideoState* video_state) { struct IZ_App* app = video_state->user_data; u64 ticks = IZ_AppGetTicks(app); IZ_InputState* input_state = IZ_AppGetInputState(app); - IZ_NetState* net_state = IZ_AppGetNetState(app); + IZ_NetClientState* net_state = IZ_AppGetNetState(app); if (ticks - video_state->last_update_at > 1000 / video_state->config.max_fps) { // Update window diff --git a/src/packages/game/IZ_subsystem.h b/src/packages/game/IZ_subsystem.h index 66713fd..2e87097 100644 --- a/src/packages/game/IZ_subsystem.h +++ b/src/packages/game/IZ_subsystem.h @@ -1,15 +1,15 @@ #ifndef IZ_SUBSYSTEM_H #define IZ_SUBSYSTEM_H -#include "IZ_common.h" -#include "net/IZ_net.h" +#include "../common/IZ_common.h" +#include "../net/IZ_net_client.h" #include "input/IZ_input.h" struct IZ_App; u64 IZ_AppGetTicks(struct IZ_App*); -IZ_NetState* IZ_AppGetNetState(struct IZ_App*); +IZ_NetClientState* IZ_AppGetNetState(struct IZ_App*); IZ_InputState* IZ_AppGetInputState(struct IZ_App*); diff --git a/src/packages/game/core/IZ_creature.h b/src/packages/game/core/IZ_creature.h index 0f24a23..69fbb16 100644 --- a/src/packages/game/core/IZ_creature.h +++ b/src/packages/game/core/IZ_creature.h @@ -1,7 +1,7 @@ #ifndef IZ_CREATURE_H #define IZ_CREATURE_H -#include "../IZ_common.h" +#include "../../common/IZ_common.h" #include "IZ_object.h" typedef struct { diff --git a/src/packages/game/data/IZ_list.h b/src/packages/game/data/IZ_list.h index 2b66778..7b44b0d 100644 --- a/src/packages/game/data/IZ_list.h +++ b/src/packages/game/data/IZ_list.h @@ -1,7 +1,7 @@ #ifndef IZ_LIST_H #define IZ_LIST_H -#include "../IZ_common.h" +#include "../../common/IZ_common.h" #include "SDL_stdinc.h" typedef struct IZ_ListNode { diff --git a/src/packages/game/data/data.test.c b/src/packages/game/data/data.test.c index b17b5a7..32cba78 100644 --- a/src/packages/game/data/data.test.c +++ b/src/packages/game/data/data.test.c @@ -1,5 +1,5 @@ #include "../../test/IZ_test.h" -#include "../../game/IZ_common.h" +#include "../../common/IZ_common.h" #include "../../../__mocks__/SDL_stdinc.mock.h" #include "IZ_list.h" diff --git a/src/packages/game/geometry/IZ_point2d.h b/src/packages/game/geometry/IZ_point2d.h index 9718cf1..175ad57 100644 --- a/src/packages/game/geometry/IZ_point2d.h +++ b/src/packages/game/geometry/IZ_point2d.h @@ -1,7 +1,7 @@ #ifndef IZ_POINT2D_H #define IZ_POINT2D_H -#include "../IZ_common.h" +#include "../../common/IZ_common.h" typedef struct { f32 x; diff --git a/src/packages/game/input/IZ_action.h b/src/packages/game/input/IZ_action.h index be02c14..e130154 100644 --- a/src/packages/game/input/IZ_action.h +++ b/src/packages/game/input/IZ_action.h @@ -1,7 +1,7 @@ #ifndef IZ_ACTION_H #define IZ_ACTION_H -#include "../IZ_common.h" +#include "../../common/IZ_common.h" #define CONTROLS (unsigned char) 16 diff --git a/src/packages/game/input/IZ_input.c b/src/packages/game/input/IZ_input.c index ea81559..7724565 100644 --- a/src/packages/game/input/IZ_input.c +++ b/src/packages/game/input/IZ_input.c @@ -9,7 +9,7 @@ void IZ_InputHandlePortMIDIEvents(IZ_InputState* state, PmEvent e) { IZ_MIDIInputHandleEvents(&state->midi_input_state, &state->action, e); } -IZ_ProcedureResult IZ_InputInitialize(IZ_InputState* state, const char* config_path, u8 argc, const char** argv) { +IZ_ProcedureResult IZ_InputInitialize(IZ_InputState* state, const char* config_path, u8 argc, const char* argv[]) { *state = (IZ_InputState) { .action = {}, .joystick_state = {}, diff --git a/src/packages/game/input/IZ_input.h b/src/packages/game/input/IZ_input.h index 9fc161f..4017de0 100644 --- a/src/packages/game/input/IZ_input.h +++ b/src/packages/game/input/IZ_input.h @@ -17,7 +17,7 @@ void IZ_InputHandleSDLEvents(IZ_InputState*, SDL_Event); void IZ_InputHandlePortMIDIEvents(IZ_InputState*, PmEvent); -IZ_ProcedureResult IZ_InputInitialize(IZ_InputState*, const char*, u8, const char**); +IZ_ProcedureResult IZ_InputInitialize(IZ_InputState*, const char*, u8, const char*[]); void IZ_InputTeardown(IZ_InputState*); diff --git a/src/packages/game/input/IZ_joystick.h b/src/packages/game/input/IZ_joystick.h index eb4d16d..91ddb94 100644 --- a/src/packages/game/input/IZ_joystick.h +++ b/src/packages/game/input/IZ_joystick.h @@ -86,7 +86,7 @@ IZ_ProcedureResult IZ_JoystickSaveConfig(IZ_JoystickState(*)[IZ_PLAYERS], const void IZ_JoystickHandleEvents(IZ_JoystickState(*)[IZ_PLAYERS], IZ_Action(*)[IZ_PLAYERS], SDL_Event); -IZ_ProcedureResult IZ_JoystickInitialize(IZ_JoystickState(*)[IZ_PLAYERS], const char*, u8, const char**); +IZ_ProcedureResult IZ_JoystickInitialize(IZ_JoystickState(*)[IZ_PLAYERS], const char*, u8, const char*[]); void IZ_JoystickTeardown(IZ_JoystickState(*)[IZ_PLAYERS]); diff --git a/src/packages/game/input/IZ_keyboard.h b/src/packages/game/input/IZ_keyboard.h index c8d77f6..44e593e 100644 --- a/src/packages/game/input/IZ_keyboard.h +++ b/src/packages/game/input/IZ_keyboard.h @@ -66,6 +66,6 @@ IZ_ProcedureResult IZ_KeyboardSaveConfig(IZ_KeyboardState(*)[IZ_PLAYERS], const void IZ_KeyboardHandleEvents(IZ_KeyboardState(*)[IZ_PLAYERS], IZ_Action(*)[IZ_PLAYERS], SDL_Event); -IZ_ProcedureResult IZ_KeyboardInitialize(IZ_KeyboardState(*)[IZ_PLAYERS], const char*, u8, const char**); +IZ_ProcedureResult IZ_KeyboardInitialize(IZ_KeyboardState(*)[IZ_PLAYERS], const char*, u8, const char*[]); #endif diff --git a/src/packages/game/input/IZ_midi.h b/src/packages/game/input/IZ_midi.h index 351151d..0b63314 100644 --- a/src/packages/game/input/IZ_midi.h +++ b/src/packages/game/input/IZ_midi.h @@ -90,7 +90,7 @@ IZ_ProcedureResult IZ_MIDIInputSaveConfig(IZ_MIDIInputState(*)[IZ_PLAYERS], cons void IZ_MIDIInputHandleEvents(IZ_MIDIInputState(*)[IZ_PLAYERS], IZ_Action(*)[IZ_PLAYERS], PmEvent); -IZ_ProcedureResult IZ_MIDIInputInitialize(IZ_MIDIInputState(*)[IZ_PLAYERS], const char*, u8, const char**); +IZ_ProcedureResult IZ_MIDIInputInitialize(IZ_MIDIInputState(*)[IZ_PLAYERS], const char*, u8, const char*[]); void IZ_MIDIInputTeardown(IZ_MIDIInputState(*)[IZ_PLAYERS]); diff --git a/src/packages/game/memory/IZ_pool.h b/src/packages/game/memory/IZ_pool.h index 648a9be..7014bcc 100644 --- a/src/packages/game/memory/IZ_pool.h +++ b/src/packages/game/memory/IZ_pool.h @@ -2,7 +2,7 @@ #define IZ_POOL_H #include -#include "../IZ_common.h" +#include "../../common/IZ_common.h" #include "../data/IZ_list.h" #define POOL_MAX_SIZE (1llu << 23) // 16MB diff --git a/src/packages/game/net/IZ_net.h b/src/packages/game/net/IZ_net.h deleted file mode 100644 index 19109b3..0000000 --- a/src/packages/game/net/IZ_net.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef IZ_NET_H -#define IZ_NET_H - -#include -#include -#include "../IZ_common.h" -#include "../config/IZ_config.h" -#include "../input/IZ_action.h" -#include "core/IZ_websocket.h" -#include "svc/IZ_wsclient.h" - -typedef enum { - IZ_NET_STATUS_PRISTINE, - IZ_NET_STATUS_CONNECTING, - IZ_NET_STATUS_ERROR, - IZ_NET_STATUS_CONNECTED, -} IZ_NetStatus; - -typedef struct { - u16 packet_interval_ms; - u8 max_reconnect_retries; - u8 reconnect_interval_secs; - char username[32]; -} IZ_NetConfig; - -typedef struct { - SDL_Thread* client_thread; - IZ_NetConfig config; - IZ_Websocket binding; - IZ_WSClientInitializeParams params; - void* callback; - IZ_Action action[IZ_PLAYERS]; - u8 retries; - IZ_NetStatus status; - // TODO add message queue -} IZ_NetState; - -static IZ_NetState IZ_NET_DEFAULT_STATE = { - .client_thread = NULL, - .config = { - .packet_interval_ms = 200, - .max_reconnect_retries = 3, - .reconnect_interval_secs = 3, - .username = "Player", - }, - .binding = { - .interrupted = false, - .context = NULL, - .connection = NULL, - .user_data = NULL, - }, - .params = { - .port = 42069, - .path = "/", - .host = "localhost", - }, - .callback = NULL, - .action = {}, - .retries = 3, - .status = IZ_NET_STATUS_PRISTINE, -}; - -IZ_ProcedureResult IZ_NetInitialize(IZ_NetState*, void*, void*, const char*, u8, const char**); - -void IZ_NetConnect(IZ_NetState*, IZ_WSClientInitializeParams); - -void IZ_NetDisconnect(IZ_NetState*); - -IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetState*, const char*); - -void IZ_NetSendBinaryMessage(IZ_NetState*, void*, size_t); - -void IZ_NetSendTextMessage(IZ_NetState*, char*, size_t); - -#endif diff --git a/src/packages/game/output/video/IZ_video.h b/src/packages/game/output/video/IZ_video.h index d373b50..ddcda22 100644 --- a/src/packages/game/output/video/IZ_video.h +++ b/src/packages/game/output/video/IZ_video.h @@ -5,10 +5,10 @@ #include "minIni.h" #include "SDL_render.h" +#include "../../../net/IZ_net_client.h" +#include "../../../config/IZ_config.h" #include "../../input/IZ_input.h" -#include "../../net/IZ_net.h" -#include "../../IZ_common.h" -#include "../../config/IZ_config.h" +#include "../../../common/IZ_common.h" #define MAX_ACTIVE_SPRITES 32 @@ -43,7 +43,7 @@ static const IZ_VideoState IZ_VIDEO_DEFAULT_STATE = { .active_sprites = {}, }; -IZ_ProcedureResult IZ_VideoInitialize(IZ_VideoState*, void*, const char*, u8, const char**); +IZ_ProcedureResult IZ_VideoInitialize(IZ_VideoState*, void*, const char*, u8, const char*[]); IZ_ProcedureResult IZ_VideoSaveConfig(IZ_VideoState*, const char*); diff --git a/src/packages/game/util/IZ_midi.h b/src/packages/game/util/IZ_midi.h index ca8e3a6..b3dd727 100644 --- a/src/packages/game/util/IZ_midi.h +++ b/src/packages/game/util/IZ_midi.h @@ -3,7 +3,7 @@ #include #include -#include "../IZ_common.h" +#include "../../common/IZ_common.h" typedef u8 IZ_MIDINote; diff --git a/src/packages/game/log/IZ_log.c b/src/packages/log/IZ_log.c similarity index 100% rename from src/packages/game/log/IZ_log.c rename to src/packages/log/IZ_log.c diff --git a/src/packages/game/log/IZ_log.h b/src/packages/log/IZ_log.h similarity index 50% rename from src/packages/game/log/IZ_log.h rename to src/packages/log/IZ_log.h index 09f586c..ea331d5 100644 --- a/src/packages/game/log/IZ_log.h +++ b/src/packages/log/IZ_log.h @@ -1,9 +1,9 @@ #ifndef IZ_LOG_H #define IZ_LOG_H -#include -#include -#include "../IZ_common.h" +#include "SDL_log.h" +#include "libwebsockets.h" +#include "../common/IZ_common.h" void IZ_LogInterceptWSMessages(i32); diff --git a/src/packages/game/net/IZ_net.c b/src/packages/net/IZ_net_client.c similarity index 63% rename from src/packages/game/net/IZ_net.c rename to src/packages/net/IZ_net_client.c index a9b8651..b16a94f 100644 --- a/src/packages/game/net/IZ_net.c +++ b/src/packages/net/IZ_net_client.c @@ -1,14 +1,14 @@ -#include "IZ_net.h" +#include "IZ_net_client.h" -bool IZ_NetIsValidPacketIntervalMs(long packet_interval_ms) { +bool IZ_NetClientIsValidPacketIntervalMs(long packet_interval_ms) { return (100 <= packet_interval_ms && packet_interval_ms <= 500); } -bool IZ_NetIsValidMaxReconnectRetries(long max_reconnect_retries) { +bool IZ_NetClientIsValidMaxReconnectRetries(long max_reconnect_retries) { return (0 <= max_reconnect_retries && max_reconnect_retries <= 8); } -bool IZ_NetIsValidReconnectIntervalSeconds(long reconnect_interval_secs) { +bool IZ_NetClientIsValidReconnectIntervalSeconds(long reconnect_interval_secs) { return (3 <= reconnect_interval_secs && reconnect_interval_secs <= 10); } @@ -19,7 +19,7 @@ static IZ_ConfigItem net_config_items[] = { "Network", "Username", NULL, - &IZ_NET_DEFAULT_STATE.config.username, + &IZ_NET_CLIENT_DEFAULT_STATE.config.username, NULL }, { @@ -28,8 +28,8 @@ static IZ_ConfigItem net_config_items[] = { "Network", "PacketIntervalMs", "-i", - &IZ_NET_DEFAULT_STATE.config.packet_interval_ms, - IZ_NetIsValidPacketIntervalMs, + &IZ_NET_CLIENT_DEFAULT_STATE.config.packet_interval_ms, + IZ_NetClientIsValidPacketIntervalMs, }, { IZ_CONFIG_TYPE_U8, @@ -37,8 +37,8 @@ static IZ_ConfigItem net_config_items[] = { "Network", "MaxReconnectRetries", NULL, - &IZ_NET_DEFAULT_STATE.config.max_reconnect_retries, - IZ_NetIsValidMaxReconnectRetries, + &IZ_NET_CLIENT_DEFAULT_STATE.config.max_reconnect_retries, + IZ_NetClientIsValidMaxReconnectRetries, }, { IZ_CONFIG_TYPE_U8, @@ -46,33 +46,33 @@ static IZ_ConfigItem net_config_items[] = { "Network", "ReconnectIntervalSeconds", NULL, - &IZ_NET_DEFAULT_STATE.config.reconnect_interval_secs, - IZ_NetIsValidReconnectIntervalSeconds, + &IZ_NET_CLIENT_DEFAULT_STATE.config.reconnect_interval_secs, + IZ_NetClientIsValidReconnectIntervalSeconds, }, }; -void IZ_NetBindStateToConfig(IZ_NetState* state, IZ_ConfigItem config_items[]) { +void IZ_NetClientBindStateToConfig(IZ_NetClientState* state, IZ_ConfigItem config_items[]) { config_items[0].dest = &state->config.username; config_items[1].dest = &state->config.packet_interval_ms; config_items[2].dest = &state->config.max_reconnect_retries; config_items[3].dest = &state->config.reconnect_interval_secs; } -IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetState* state, const char* config_path) { - IZ_NetBindStateToConfig(state, net_config_items); +IZ_ProcedureResult IZ_NetClientSaveConfig(IZ_NetClientState* state, const char* config_path) { + IZ_NetClientBindStateToConfig(state, net_config_items); return IZ_ConfigSave(net_config_items, config_path); } -IZ_ProcedureResult IZ_NetInitialize( - IZ_NetState* state, +IZ_ProcedureResult IZ_NetClientInitialize( + IZ_NetClientState* state, void* user_data, void* callback, const char* config_path, u8 argc, const char* argv[] ) { - memcpy_s(state, sizeof(IZ_NetState), &IZ_NET_DEFAULT_STATE, sizeof(IZ_NetState)); - IZ_NetBindStateToConfig(state, net_config_items); + memcpy_s(state, sizeof(IZ_NetClientState), &IZ_NET_CLIENT_DEFAULT_STATE, sizeof(IZ_NetClientState)); + IZ_NetClientBindStateToConfig(state, net_config_items); IZ_ConfigInit(net_config_items, config_path, argc, argv); if (!user_data) { return -2; @@ -88,16 +88,16 @@ IZ_ProcedureResult IZ_NetInitialize( return 0; } -void IZ_NetConnect(IZ_NetState* state, IZ_WSClientInitializeParams params) { +void IZ_NetClientConnect(IZ_NetClientState* state, IZ_WSClientInitializeParams params) { if (!state->callback) { return; } - if (state->status == IZ_NET_STATUS_CONNECTED) { + if (state->status == IZ_NET_CLIENT_STATUS_CONNECTED) { return; } - if (state->status == IZ_NET_STATUS_CONNECTING) { + if (state->status == IZ_NET_CLIENT_STATUS_CONNECTING) { return; } @@ -111,8 +111,8 @@ void IZ_NetConnect(IZ_NetState* state, IZ_WSClientInitializeParams params) { SDL_DetachThread(state->client_thread); } -void IZ_NetDisconnect(IZ_NetState* state) { - if (state->status == IZ_NET_STATUS_PRISTINE) { +void IZ_NetClientDisconnect(IZ_NetClientState* state) { + if (state->status == IZ_NET_CLIENT_STATUS_PRISTINE) { return; } if (state->binding.connection) { @@ -128,8 +128,8 @@ void IZ_NetDisconnect(IZ_NetState* state) { IZ_WSClientCancelService(&state->binding); } -void IZ_NetSendBinaryMessage(IZ_NetState* state, void* in, size_t len) { - if (state->status != IZ_NET_STATUS_CONNECTED) { +void IZ_NetClientSendBinaryMessage(IZ_NetClientState* state, void* in, size_t len) { + if (state->status != IZ_NET_CLIENT_STATUS_CONNECTED) { return; } @@ -150,8 +150,8 @@ void IZ_NetSendBinaryMessage(IZ_NetState* state, void* in, size_t len) { lws_callback_on_writable(state->binding.connection); } -void IZ_NetSendTextMessage(IZ_NetState* state, char* in, size_t len) { - if (state->status != IZ_NET_STATUS_CONNECTED) { +void IZ_NetClientSendTextMessage(IZ_NetClientState* state, char* in, size_t len) { + if (state->status != IZ_NET_CLIENT_STATUS_CONNECTED) { return; } diff --git a/src/packages/net/IZ_net_client.h b/src/packages/net/IZ_net_client.h new file mode 100644 index 0000000..eeeee60 --- /dev/null +++ b/src/packages/net/IZ_net_client.h @@ -0,0 +1,74 @@ +#ifndef IZ_NET_CLIENT_H +#define IZ_NET_CLIENT_H + +#include "minIni.h" +#include "SDL_thread.h" +#include "../config/IZ_config.h" +#include "../common/IZ_common.h" +#include "../game/input/IZ_action.h" +#include "svc/IZ_wsclient.h" + +typedef enum { + IZ_NET_CLIENT_STATUS_PRISTINE, + IZ_NET_CLIENT_STATUS_CONNECTING, + IZ_NET_CLIENT_STATUS_ERROR, + IZ_NET_CLIENT_STATUS_CONNECTED, +} IZ_NetClientStatus; + +typedef struct { + u16 packet_interval_ms; + u8 max_reconnect_retries; + u8 reconnect_interval_secs; + char username[32]; +} IZ_NetClientConfig; + +typedef struct { + SDL_Thread* client_thread; + IZ_NetClientConfig config; + IZ_NetBinding binding; + IZ_NetInitializeParams params; + void* callback; + IZ_Action action[IZ_PLAYERS]; + u8 retries; + IZ_NetClientStatus status; + // TODO add message queue +} IZ_NetClientState; + +static IZ_NetClientState IZ_NET_CLIENT_DEFAULT_STATE = { + .client_thread = NULL, + .config = { + .packet_interval_ms = 200, + .max_reconnect_retries = 3, + .reconnect_interval_secs = 3, + .username = "Player", + }, + .binding = { + .interrupted = false, + .context = NULL, + .connection = NULL, + .user_data = NULL, + }, + .params = { + .port = 42069, + .path = "/", + .host = "localhost", + }, + .callback = NULL, + .action = {}, + .retries = 3, + .status = IZ_NET_CLIENT_STATUS_PRISTINE, +}; + +IZ_ProcedureResult IZ_NetClientInitialize(IZ_NetClientState*, void*, void*, const char *, u8, const char *[]); + +void IZ_NetClientConnect(IZ_NetClientState*, IZ_WSClientInitializeParams); + +void IZ_NetClientDisconnect(IZ_NetClientState*); + +IZ_ProcedureResult IZ_NetClientSaveConfig(IZ_NetClientState*, const char*); + +void IZ_NetClientSendBinaryMessage(IZ_NetClientState*, void*, size_t); + +void IZ_NetClientSendTextMessage(IZ_NetClientState*, char*, size_t); + +#endif diff --git a/src/packages/server/net/IZ_net.c b/src/packages/net/IZ_net_server.c similarity index 61% rename from src/packages/server/net/IZ_net.c rename to src/packages/net/IZ_net_server.c index 20c9503..a2ced2e 100644 --- a/src/packages/server/net/IZ_net.c +++ b/src/packages/net/IZ_net_server.c @@ -1,18 +1,18 @@ -#include "IZ_net.h" +#include "IZ_net_server.h" -void IZ_NetLoadConfig(IZ_NetState* state, const char* config_path) { +void IZ_NetLoadConfig(IZ_NetServerState* state, const char* config_path) { char buffer[128]; - ini_gets("Network", "Name", IZ_NET_DEFAULT_STATE.config.name, buffer, 128, config_path); + ini_gets("Network", "Name", IZ_NET_SERVER_DEFAULT_STATE.config.name, buffer, 128, config_path); memcpy_s(state->config.name, 64, buffer, 64); - ini_gets("Network", "Motd", IZ_NET_DEFAULT_STATE.config.motd, buffer, 128, config_path); + ini_gets("Network", "Motd", IZ_NET_SERVER_DEFAULT_STATE.config.motd, buffer, 128, config_path); memcpy_s(state->config.motd, 128, buffer, 128); - state->config.port = ini_getl("Network", "Port", IZ_NET_DEFAULT_STATE.config.port, config_path); + state->config.port = ini_getl("Network", "Port", IZ_NET_SERVER_DEFAULT_STATE.config.port, config_path); } -IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetState* state, const char* config_path) { +IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetServerState* state, const char* config_path) { if (!ini_puts("Network", "Name", state->config.name, config_path)) { return -1; } @@ -28,7 +28,7 @@ IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetState* state, const char* config_path) return 0; } -void IZ_NetOverrideConfig(IZ_NetState* state, u8 argc, const char* argv[]) { +void IZ_NetOverrideConfig(IZ_NetServerState* state, u8 argc, const char* argv[]) { const char* cmdline_buffer; char* rest_of_string; u16 port; @@ -49,7 +49,7 @@ void IZ_NetOverrideConfig(IZ_NetState* state, u8 argc, const char* argv[]) { } IZ_ProcedureResult IZ_NetInitialize( - IZ_NetState* state, + IZ_NetServerState* state, void* user_data, const char* config_path, u8 argc, @@ -58,7 +58,7 @@ IZ_ProcedureResult IZ_NetInitialize( if (!user_data) { return -1; } - memcpy_s(state, sizeof(IZ_NetState), &IZ_NET_DEFAULT_STATE, sizeof(IZ_NetState)); + memcpy_s(state, sizeof(IZ_NetServerState), &IZ_NET_SERVER_DEFAULT_STATE, sizeof(IZ_NetServerState)); IZ_NetLoadConfig(state, config_path); if (IZ_NetSaveConfig(state, config_path) < 0) { return -2; @@ -68,3 +68,6 @@ IZ_ProcedureResult IZ_NetInitialize( return 0; } +void IZ_NetServerCancelService(IZ_NetServerState* state) { + IZ_WSServerCancelService(&state->ws); +} diff --git a/src/packages/net/IZ_net_server.h b/src/packages/net/IZ_net_server.h new file mode 100644 index 0000000..e77e76e --- /dev/null +++ b/src/packages/net/IZ_net_server.h @@ -0,0 +1,43 @@ +#ifndef IZ_NET_SERVER_H +#define IZ_NET_SERVER_H + +#include +#include "../config/IZ_config.h" +#include "../common/IZ_common.h" +#include "core/IZ_websocket.h" +#include "svc/IZ_wsserver.h" + +#define IZ_DEFAULT_MOTD "" + +typedef struct { + u16 port; + char name[64]; + char motd[128]; +} IZ_NetServerConfig; + +typedef struct { + IZ_NetServerConfig config; + IZ_NetBinding ws; +} IZ_NetServerState; + +static IZ_NetServerState IZ_NET_SERVER_DEFAULT_STATE = { + .config = { + .port = 42069, + .name = IZ_APP_NAME " Server", + .motd = IZ_DEFAULT_MOTD, + }, + .ws = { + .interrupted = false, + .context = NULL, + .connection = NULL, + .user_data = NULL, + }, +}; + +IZ_ProcedureResult IZ_NetInitialize(IZ_NetServerState*, void*, const char*, u8, const char*[]); + +IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetServerState*, const char*); + +void IZ_NetServerCancelService(IZ_NetServerState*); + +#endif diff --git a/src/packages/game/net/core/IZ_websocket.c b/src/packages/net/core/IZ_websocket.c similarity index 100% rename from src/packages/game/net/core/IZ_websocket.c rename to src/packages/net/core/IZ_websocket.c diff --git a/src/packages/game/net/core/IZ_websocket.h b/src/packages/net/core/IZ_websocket.h similarity index 92% rename from src/packages/game/net/core/IZ_websocket.h rename to src/packages/net/core/IZ_websocket.h index f458c97..4b22c85 100644 --- a/src/packages/game/net/core/IZ_websocket.h +++ b/src/packages/net/core/IZ_websocket.h @@ -2,7 +2,7 @@ #define IZ_WEBSOCKET_H #include "libwebsockets.h" -#include "../../IZ_common.h" +#include "../../common/IZ_common.h" #define NETWORK_PROTOCOL "izanagi-networking" #define RING_COUNT 32 @@ -23,6 +23,8 @@ typedef struct { u8 interrupted: 1; } IZ_Websocket; +typedef IZ_Websocket IZ_NetBinding; + void IZ_WebsocketInitialize(IZ_Websocket*); IZ_ProcedureResult IZ_WebsocketHandle(IZ_Websocket*); diff --git a/src/packages/game/net/svc/IZ_wsclient.c b/src/packages/net/svc/IZ_wsclient.c similarity index 100% rename from src/packages/game/net/svc/IZ_wsclient.c rename to src/packages/net/svc/IZ_wsclient.c diff --git a/src/packages/game/net/svc/IZ_wsclient.h b/src/packages/net/svc/IZ_wsclient.h similarity index 93% rename from src/packages/game/net/svc/IZ_wsclient.h rename to src/packages/net/svc/IZ_wsclient.h index c5a5868..24688c8 100644 --- a/src/packages/game/net/svc/IZ_wsclient.h +++ b/src/packages/net/svc/IZ_wsclient.h @@ -1,7 +1,7 @@ #ifndef IZ_WSCLIENT_H #define IZ_WSCLIENT_H -#include "../../IZ_common.h" +#include "../../common/IZ_common.h" #include "../core/IZ_websocket.h" typedef struct { @@ -35,6 +35,8 @@ typedef struct { u16 port; } IZ_WSClientInitializeParams; +typedef IZ_WSClientInitializeParams IZ_NetInitializeParams; + IZ_ProcedureResult IZ_WSClientInitialize(IZ_Websocket*, IZ_WSClientInitializeParams); IZ_ProcedureResult IZ_WSClientHandle(IZ_Websocket*); diff --git a/src/packages/server/net/svc/IZ_wsserver.c b/src/packages/net/svc/IZ_wsserver.c similarity index 100% rename from src/packages/server/net/svc/IZ_wsserver.c rename to src/packages/net/svc/IZ_wsserver.c diff --git a/src/packages/server/net/svc/IZ_wsserver.h b/src/packages/net/svc/IZ_wsserver.h similarity index 97% rename from src/packages/server/net/svc/IZ_wsserver.h rename to src/packages/net/svc/IZ_wsserver.h index 312abbf..d3fa5ac 100644 --- a/src/packages/server/net/svc/IZ_wsserver.h +++ b/src/packages/net/svc/IZ_wsserver.h @@ -3,7 +3,7 @@ #include #include -#include "../../IZ_common.h" +#include "../../common/IZ_common.h" #include "../core/IZ_websocket.h" #ifndef S_ISDIR diff --git a/src/packages/server/IZ_app.c b/src/packages/server/IZ_app.c index 94afbf3..82d9997 100644 --- a/src/packages/server/IZ_app.c +++ b/src/packages/server/IZ_app.c @@ -4,7 +4,7 @@ static IZ_App* global_app; void IZ_AppHandleSignal(i32 _signal) { global_app->net_state.ws.interrupted = true; - IZ_WSServerCancelService(&global_app->net_state.ws); + IZ_NetServerCancelService(&global_app->net_state); } IZ_ProcedureResult IZ_AppInitialize(IZ_App *app, u8 argc, const char **argv) { diff --git a/src/packages/server/IZ_app.h b/src/packages/server/IZ_app.h index d76b27c..26fa1e8 100644 --- a/src/packages/server/IZ_app.h +++ b/src/packages/server/IZ_app.h @@ -3,18 +3,17 @@ #include #include -#include "net/svc/IZ_wsserver.h" -#include "log/IZ_log.h" -#include "IZ_common.h" -#include "IZ_config.h" -#include "net/IZ_net.h" +#include "../common/IZ_common.h" +#include "../net/IZ_net_server.h" +#include "../log/IZ_log.h" #include "db/IZ_repo.h" +#include "IZ_app_config.h" typedef struct { - IZ_NetState net_state; + IZ_NetServerState net_state; IZ_RepoState repo_state; } IZ_App; -IZ_ProcedureResult IZ_AppRun(IZ_App*, u8, const char**); +IZ_ProcedureResult IZ_AppRun(IZ_App*, u8, const char*[]); #endif diff --git a/src/packages/server/IZ_app_config.c b/src/packages/server/IZ_app_config.c new file mode 100644 index 0000000..6acfa9a --- /dev/null +++ b/src/packages/server/IZ_app_config.c @@ -0,0 +1,12 @@ +#include "IZ_app_config.h" + +void IZ_ConfigGetDefaultPath(const char* config_path, size_t string_size) { +#ifdef IZ_DEBUG + const char* config_path_dir = SDL_GetBasePath(); +#else + const char* config_path_dir = SDL_GetPrefPath("Modal Studios", IZ_APP_NAME); +#endif + + memcpy_s(config_path, string_size, config_path_dir, 128); + strcat_s(config_path, string_size, "config-server.ini"); +} diff --git a/src/packages/server/IZ_app_config.h b/src/packages/server/IZ_app_config.h new file mode 100644 index 0000000..d27ec2d --- /dev/null +++ b/src/packages/server/IZ_app_config.h @@ -0,0 +1,8 @@ +#ifndef IZ_APP_CONFIG_H +#define IZ_APP_CONFIG_H + +#include +#include "../config/IZ_config.h" +#include "IZ_subsystem.h" + +#endif diff --git a/src/packages/server/IZ_common.h b/src/packages/server/IZ_common.h deleted file mode 120000 index 6ebc667..0000000 --- a/src/packages/server/IZ_common.h +++ /dev/null @@ -1 +0,0 @@ -../game/IZ_common.h \ No newline at end of file diff --git a/src/packages/server/IZ_config.c b/src/packages/server/IZ_config.c deleted file mode 100644 index cbbe988..0000000 --- a/src/packages/server/IZ_config.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "IZ_config.h" - -void IZ_ConfigGetDefaultPath(const char* config_path, size_t string_size) { - //const char* config_path_dir = SDL_GetPrefPath("Modal Studios", IZ_APP_NAME); - const char* config_path_dir = SDL_GetBasePath(); - memcpy_s(config_path, string_size, config_path_dir, 128); - strcat_s(config_path, string_size, "config-server.ini"); -} - -const char* IZ_ConfigGetCommandlineOption(u8 argc, const char* argv[], const char* val) { - size_t n = strlen(val); - int c = argc; - - while (--c > 0) { - - if (!strncmp(argv[c], val, n)) { - if (!*(argv[c] + n) && c < argc - 1) { - /* coverity treats unchecked argv as "tainted" */ - if (!argv[c + 1] || strlen(argv[c + 1]) > 1024) - return NULL; - return argv[c + 1]; - } - - if (argv[c][n] == '=') - return &argv[c][n + 1]; - return argv[c] + n; - } - } - - return NULL; -} diff --git a/src/packages/server/IZ_config.h b/src/packages/server/IZ_config.h deleted file mode 100644 index 605c1f1..0000000 --- a/src/packages/server/IZ_config.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef IZ_CONFIG_H -#define IZ_CONFIG_H - -#include -#include -#include "IZ_common.h" - -// TODO unify loading of config from cmdline and config file -void IZ_ConfigGetDefaultPath(const char*, size_t); - -const char* IZ_ConfigGetCommandlineOption(u8, const char**, const char*); - -#endif diff --git a/src/packages/server/IZ_subsystem.h b/src/packages/server/IZ_subsystem.h new file mode 100644 index 0000000..0ee9f8c --- /dev/null +++ b/src/packages/server/IZ_subsystem.h @@ -0,0 +1,4 @@ +#ifndef IZ_SUBSYSTEM_H +#define IZ_SUBSYSTEM_H + +#endif diff --git a/src/packages/server/db/IZ_repo.h b/src/packages/server/db/IZ_repo.h index 6b6110e..995a8fe 100644 --- a/src/packages/server/db/IZ_repo.h +++ b/src/packages/server/db/IZ_repo.h @@ -1,11 +1,11 @@ #ifndef IZ_REPO_H #define IZ_REPO_H -#include "minIni.h" -#include "sqlite3.h" +#include +#include #include -#include "../IZ_common.h" -#include "../IZ_config.h" +#include "../../common/IZ_common.h" +#include "../../config/IZ_config.h" typedef struct { char path[64]; @@ -18,12 +18,12 @@ typedef struct { static IZ_RepoState IZ_REPO_DEFAULT_STATE = { .config = { - .path = "db.sqlite", + .path = "server.sqlite", }, .db = NULL, }; -IZ_ProcedureResult IZ_RepoInitialize(IZ_RepoState*, const char*, u8, const char**); +IZ_ProcedureResult IZ_RepoInitialize(IZ_RepoState*, const char*, u8, const char*[]); void IZ_RepoTeardown(IZ_RepoState*); diff --git a/src/packages/server/log b/src/packages/server/log deleted file mode 120000 index 68f7a9c..0000000 --- a/src/packages/server/log +++ /dev/null @@ -1 +0,0 @@ -../game/log \ No newline at end of file diff --git a/src/packages/server/net/IZ_net.h b/src/packages/server/net/IZ_net.h deleted file mode 100644 index bc69d21..0000000 --- a/src/packages/server/net/IZ_net.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef IZ_NET_H -#define IZ_NET_H - -#include -#include "../IZ_common.h" -#include "../IZ_config.h" -#include "core/IZ_websocket.h" - -#define IZ_DEFAULT_MOTD "" - -typedef struct { - u16 port; - char name[64]; - char motd[128]; -} IZ_NetConfig; - -typedef struct { - IZ_NetConfig config; - IZ_Websocket ws; -} IZ_NetState; - -static IZ_NetState IZ_NET_DEFAULT_STATE = { - .config = { - .port = 42069, - .name = IZ_APP_NAME " Server", - .motd = IZ_DEFAULT_MOTD, - }, - .ws = { - .interrupted = false, - .context = NULL, - .connection = NULL, - .user_data = NULL, - }, -}; - -IZ_ProcedureResult IZ_NetInitialize(IZ_NetState*, void*, const char*, u8, const char**); - -IZ_ProcedureResult IZ_NetSaveConfig(IZ_NetState*, const char*); - -#endif diff --git a/src/packages/server/net/core b/src/packages/server/net/core deleted file mode 120000 index cf01d31..0000000 --- a/src/packages/server/net/core +++ /dev/null @@ -1 +0,0 @@ -../../game/net/core \ No newline at end of file