/** * Copyright (c) 2025 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "client/client.h" #include "serversingleplayer.h" #include "serverlocal.h" #define SERVER_CLIENT_COUNT_MAX 4 typedef enum { SERVER_TYPE_SINGLE_PLAYER = 0, SERVER_TYPE_LOCAL = 1, SERVER_TYPE_REMOTE = 2 } servertype_t; typedef enum { SERVER_STATE_STOPPED = 0, SERVER_STATE_RUNNING = 1 } serverstate_t; typedef struct { servertype_t type; union { serversingleplayerstart_t singlePlayer; serverlocalstart_t local; }; } serverstart_t; typedef struct { serverstate_t state; servertype_t type; client_t clients[SERVER_CLIENT_COUNT_MAX]; uint8_t clientCount; union { serverlocal_t local; }; } server_t; extern server_t SERVER; void serverInit(); void serverStart(const serverstart_t start); void serverStop(); void serverUpdate(); void serverDispose();