dusk/backup/server/server.c
2025-02-22 20:22:58 -06:00

77 lines
1.6 KiB
C

/**
* Copyright (c) 2025 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "server.h"
#include "console/console.h"
#include "assert/assert.h"
server_t SERVER;
void serverInit() {
memset(&SERVER, 0, sizeof(server_t));
}
void serverStart(const serverstart_t start) {
assertTrue(SERVER.state==SERVER_STATE_STOPPED, "Server is already running.");
SERVER.type = start.type;
SERVER.clientCount = 0;
switch(start.type) {
case SERVER_TYPE_SINGLE_PLAYER:
serverSinglePlayerStart(start.singlePlayer);
break;
case SERVER_TYPE_LOCAL:
serverLocalStart(start.local);
break;
case SERVER_TYPE_REMOTE:
assertUnreachable("Remote server not implemented.");
break;
default:
assertUnreachable("Unknown server type.");
}
SERVER.state = SERVER_STATE_RUNNING;
}
void serverStop() {
assertTrue(SERVER.state == SERVER_STATE_RUNNING,"Server is already stopped.");
for(uint8_t i = 0; i < SERVER.clientCount; i++) {
clientDispose(&SERVER.clients[i]);
}
switch(SERVER.type) {
case SERVER_TYPE_SINGLE_PLAYER:
assertUnreachable("Single player server not implemented.");
break;
case SERVER_TYPE_LOCAL:
serverLocalStop();
break;
case SERVER_TYPE_REMOTE:
assertUnreachable("Remote server not implemented.");
break;
default:
assertUnreachable("Unknown server type.");
}
SERVER.state = SERVER_STATE_STOPPED;
}
void serverUpdate() {
if(SERVER.state == SERVER_STATE_STOPPED) return;
}
void serverDispose() {
if(SERVER.state == SERVER_STATE_RUNNING) serverStop();
}