summaryrefslogtreecommitdiff
path: root/src/proto.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-03-14 22:11:31 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-03-14 22:11:31 +0000
commitd9e19a0d5ba8a797e12052e29f9c3a945d2331bc (patch)
tree95e18dfbf1879b5edd973d81003a43955adb141b /src/proto.c
parent593ac1e25c2053f06cb1b7e29785a695d3c57ad3 (diff)
- upravy v kode, lepsia synchronizacia
- clienty posielaju serveru "pingy", ak server isty cas ping od client anedostane tak ho dpoji ( nespojive UDP ) git-svn-id: http://opensvn.csie.org/tuxanci_ng@16 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/proto.c')
-rw-r--r--src/proto.c79
1 files changed, 77 insertions, 2 deletions
diff --git a/src/proto.c b/src/proto.c
index 2c2c5c4..ddfc51c 100644
--- a/src/proto.c
+++ b/src/proto.c
@@ -193,6 +193,66 @@ void proto_recv_newtux_client(char *msg)
tux->status = TUX_STATUS_ALIVE;
}
+void proto_send_kill_server(tux_t *tux)
+{
+ char msg[STR_SIZE];
+
+ assert( tux != NULL );
+
+ sprintf(msg, "kill %d\n", tux->id);
+
+ sendAllClient(msg);
+}
+
+void proto_recv_kill_client(char *msg)
+{
+ char cmd[STR_SIZE];
+ int id;
+ tux_t *tux;
+
+ assert( msg != NULL );
+
+ sscanf(msg, "%s %d", cmd, &id);
+
+ tux = getTuxID(getWorldArena()->listTux, id);
+
+ if( tux != NULL )
+ {
+ eventTuxIsDead(tux);
+ }
+}
+
+void proto_send_score_server(tux_t *tux)
+{
+ char msg[STR_SIZE];
+
+ assert( tux != NULL );
+
+ sprintf(msg, "score %d %d\n", tux->id, tux->score);
+
+ sendAllClient(msg);
+}
+
+void proto_recv_score_client(char *msg)
+{
+ char cmd[STR_SIZE];
+ int id, score;
+ tux_t *tux;
+
+ assert( msg != NULL );
+
+ sscanf(msg, "%s %d %d", cmd, &id, &score);
+
+ tux = getTuxID(getWorldArena()->listTux, id);
+
+ if( tux != NULL )
+ {
+ tux->score = score;
+ }
+
+ countRoundInc();
+}
+
void proto_send_deltux_server(client_t *client)
{
char msg[STR_SIZE];
@@ -293,19 +353,34 @@ void proto_recv_context_server(client_t *client, char *msg)
proto_send_newtux_server(NULL, client->tux);
}
+void proto_send_ping_client()
+{
+ char msg[STR_SIZE];
+ strcpy(msg, "ping\n");
+ sendServer(msg);
+}
+
+void proto_recv_ping_server(client_t *client, char *msg)
+{
+ assert( msg != NULL );
+ assert( client != NULL );
+
+ client->lastPing = SDL_GetTicks();
+}
+
void proto_send_end_client()
{
char msg[STR_SIZE];
strcpy(msg, "end\n");
sendServer(msg);
- printf("proto_send_end_client\n");
}
void proto_recv_end_server(client_t *client, char *msg)
{
assert( msg != NULL );
+ assert( client != NULL );
+
client->status = NET_STATUS_ZOMBIE;
- printf("proto_recv_end_server\n");
}
void proto_send_end_server()