53 lines
960 B
C
53 lines
960 B
C
/**
|
|
* 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(); |