61 lines
2.0 KiB
C
61 lines
2.0 KiB
C
|
#include <signal.h>
|
|||
|
|
|||
|
#include "common.h"
|
|||
|
#include "message.h"
|
|||
|
|
|||
|
SERVER_DATA* srv_create_data(SERVER_DATA* data, SERVER_PARAMETRS parametrs)
|
|||
|
{
|
|||
|
if(!data)
|
|||
|
{
|
|||
|
data = (SERVER_DATA*)malloc(sizeof(SERVER_DATA));
|
|||
|
show_message_error(data, "Failed to allocate space for SERVER_DATA");
|
|||
|
}
|
|||
|
|
|||
|
srv_create_enet(&data->enet, parametrs.port);
|
|||
|
puts("Enet создан!");
|
|||
|
srv_create_timer(&data->timer, parametrs.FPS);
|
|||
|
puts("Таймер загружен. Готов к запуску!");
|
|||
|
srv_create_event(&data->event, &data->timer);
|
|||
|
puts("События ждут указаний!");
|
|||
|
srv_create_users(&data->users, parametrs.users);
|
|||
|
puts("Место для игроков выделено!");
|
|||
|
srv_create_games(&data->games, parametrs.games);
|
|||
|
puts("Место для игр выделено!");
|
|||
|
puts("Все системы в норме! Запускаю сервер!");
|
|||
|
puts("--------------------------------------------------");
|
|||
|
|
|||
|
data->done = false;
|
|||
|
|
|||
|
srv_get_server_data(data);
|
|||
|
// Server Stop Event Logging
|
|||
|
srv_catch_signal(SIGINT, srv_stop_server);
|
|||
|
|
|||
|
return data;
|
|||
|
}
|
|||
|
|
|||
|
void srv_destroy_data(SERVER_DATA* data)
|
|||
|
{
|
|||
|
srv_destroy_enet(&data->enet);
|
|||
|
puts("Почистил Enet!");
|
|||
|
srv_destroy_event(&data->event);
|
|||
|
puts("С событиями тоже разобрался!");
|
|||
|
srv_destroy_timer(&data->timer);
|
|||
|
puts("Кто говорил, что временем нельзя управлять? Таймер остановлен!");
|
|||
|
srv_destroy_users(&data->users);
|
|||
|
puts("Освободил выделенное место для игроков!");
|
|||
|
srv_destroy_games(&data->games);
|
|||
|
puts("Освободил выделенное место для игр!");
|
|||
|
free(data);
|
|||
|
puts("Сервер остановлен! Порядок!");
|
|||
|
}
|
|||
|
|
|||
|
SERVER_DATA* srv_get_server_data(SERVER_DATA* data)
|
|||
|
{
|
|||
|
static SERVER_DATA* server;
|
|||
|
|
|||
|
if(data)
|
|||
|
server = data;
|
|||
|
|
|||
|
return server;
|
|||
|
}
|