X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=server.c;h=e28b30203679bdde9c28ac957b2a8f487e9570cc;hb=0aebaa861295894d8bfd51ee7d02da0d4b63e477;hp=d6cbfcc3b3c07cb1670bb914466dd414dca5136d;hpb=4148d3ff0c0c4b52b0741c38a867a1502600a65f;p=netwar.git diff --git a/server.c b/server.c index d6cbfcc..e28b302 100644 --- a/server.c +++ b/server.c @@ -47,7 +47,7 @@ static void sv_sync_client(int id, bool full) { for(int i = 0; i < clientlimit; i++) if(full || g_player[i].updated) - SendMessage(sock, client[id].address, sv_splr(i, g_player[i].live, g_player[i].x, g_player[i].y, g_player[i].r, g_player[i].vx, g_player[i].vy, g_player[i].vr)); + SendMessage(sock, client[id].address, sv_splr(i, g_player[i].live, g_player[i].x, g_player[i].y, g_player[i].r, g_player[i].vx, g_player[i].vy, g_player[i].vr, g_player[i].shoot)); for(int i = 0; i < MAX_BULLETS; i++) if(full || g_bullet[i].updated) @@ -56,7 +56,7 @@ static void sv_sync_client(int id, bool full) { static void sv_spawn_player(int id) { assert(id >= 0); - g_player_set(id, true, randfm(), randfm(), randfm(), 0, 0, 0); + g_player_set(id, true, randfm(), randfm(), randfm(), 0, 0, 0, PLAYER_SHOOT); } static void sv_kill_player(int id, bool send, const char * msg) { @@ -67,7 +67,7 @@ static void sv_kill_player(int id, bool send, const char * msg) { SendMessage(sock, client[id].address, sv_kill(msg)); client[id].connected = false; - g_player_set(id, false, 0, 0, 0, 0, 0, 0); + g_player_set(id, false, 0, 0, 0, 0, 0, 0, 0); SDL_Log("Player %s (%i) disconnected: %s", client[id].name, id, msg); } @@ -111,14 +111,13 @@ static void sv_register_player(IPaddress address, ProtocolMessage m) { static void sv_recv() { IPaddress address; ProtocolMessage m; - if(!RecvMessage(sock, &address, &m)) - return; - - switch(m.type) { - case CL_INFO: sv_register_player(address, m); break; - case CL_KILL: sv_kill_player(sv_find_client(address), false, ""); break; - case CL_DOES: sv_move_player(sv_find_client(address), m); break; - default: SDL_Log("invalid message %i", m.type); + while(RecvMessage(sock, &address, &m)) { + switch(m.type) { + case CL_INFO: sv_register_player(address, m); break; + case CL_KILL: sv_kill_player(sv_find_client(address), false, ""); break; + case CL_DOES: sv_move_player(sv_find_client(address), m); break; + default: SDL_Log("invalid message %i", m.type); + } } } @@ -135,6 +134,7 @@ static void sv_send() { } void sv_start(uint16_t port) { + g_init(true); sock = OpenPort(port); lastTime = SDL_GetTicks(); currTime = SDL_GetTicks();