DEADSOFTWARE

Изменён способ передачи does команд и исправлены адские тормоза
[netwar.git] / dedicated.c
1 #include <SDL2/SDL.h>
2 #include <SDL2/SDL_net.h>
3 #include <string.h>
4 #include <stdbool.h>
6 #include "server.h"
7 #include "protocol.h"
9 static uint16_t port = PROTOCOL_PORT;
11 static void argverr() {
12 SDL_Log("Invalid argument\n");
13 exit(1);
14 }
16 static void useargs(char ** argv) {
17 int i = 1;
18 while(argv[i]) {
19 if(strcmp(argv[i], "-p") == 0) {
20 if(argv[++i])
21 port = atoi(argv[i++]);
22 else
23 argverr();
24 } else {
25 argverr();
26 }
27 }
28 }
30 static void sysinit() {
31 if(SDL_Init(SDL_INIT_EVENTS) != 0) {
32 SDL_Log("Unable to initialize SDL: %s\n", SDL_GetError());
33 exit(1);
34 }
35 atexit(SDL_Quit);
37 if(SDLNet_Init() != 0) {
38 SDL_Log("Unable to initialize SDLNet: %s\n", SDLNet_GetError());
39 exit(1);
40 }
41 atexit(SDLNet_Quit);
42 }
44 int main(int argc, char ** argv) {
45 sysinit();
46 useargs(argv);
48 sv_start(port);
49 sv_setclientlimit(32);
51 bool run = true;
52 while(run) {
53 SDL_Event event;
54 while(SDL_PollEvent(&event))
55 if(event.type == SDL_QUIT)
56 run = false;
58 sv_handle();
60 SDL_Delay(1);
61 }
63 sv_stop();
65 return 0;
66 }