diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-01-12 12:08:26 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-01-12 12:08:26 +0000 |
| commit | 1c1677f02300e5ab10bca9c74ce7f49d4605b9d6 (patch) | |
| tree | 1601d291fd6c531d5b8dcb6f0ca95829c31b0c76 /src/engine/server | |
| parent | 24e17b41a8a5d600e0f116bc059ba121ac21bad5 (diff) | |
| download | zcatch-1c1677f02300e5ab10bca9c74ce7f49d4605b9d6.tar.gz zcatch-1c1677f02300e5ab10bca9c74ce7f49d4605b9d6.zip | |
merged 0.3.3 changes over to trunk
Diffstat (limited to 'src/engine/server')
| -rw-r--r-- | src/engine/server/es_server.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c index 7cdaa0dc..fda4b5d5 100644 --- a/src/engine/server/es_server.c +++ b/src/engine/server/es_server.c @@ -89,6 +89,7 @@ typedef struct int last_acked_snapshot; SNAPSTORAGE snapshots; + CLIENT_INPUT latestinput; CLIENT_INPUT inputs[200]; /* TODO: handle input better */ int current_input; @@ -184,6 +185,13 @@ void snap_free_id(int id) } } +int *server_latestinput(int client_id, int *size) +{ + if(client_id < 0 || client_id > MAX_CLIENTS || clients[client_id].state < SRVCLIENT_STATE_READY) + return 0; + return clients[client_id].latestinput.data; +} + const char *server_clientname(int client_id) { if(client_id < 0 || client_id > MAX_CLIENTS || clients[client_id].state < SRVCLIENT_STATE_READY) @@ -489,6 +497,8 @@ static int new_client_callback(int cid, void *user) } clients[cid].current_input = 0; + mem_zero(&clients[cid].latestinput, sizeof(clients[cid].latestinput)); + snapstorage_purge_all(&clients[cid].snapshots); clients[cid].last_acked_snapshot = -1; clients[cid].snap_rate = SRVCLIENT_SNAPRATE_INIT; @@ -624,7 +634,9 @@ static void server_process_client_packet(NETPACKET *packet) for(i = 0; i < size/4; i++) input->data[i] = msg_unpack_int(); - + + mem_copy(clients[cid].latestinput.data, input->data, MAX_INPUT_SIZE*sizeof(int)); + clients[cid].current_input++; clients[cid].current_input %= 200; } |