diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-04-05 14:50:43 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-04-05 14:50:43 +0000 |
| commit | 34c3a1c1426e6443ba30b8e2852b73bf92757dff (patch) | |
| tree | c804647d311bfcf2627c5a519a15888c6e396b93 /src/game | |
| parent | f713ad20288800e8a74160ba390ddefb47841033 (diff) | |
| download | zcatch-34c3a1c1426e6443ba30b8e2852b73bf92757dff.tar.gz zcatch-34c3a1c1426e6443ba30b8e2852b73bf92757dff.zip | |
new network code. not perfect. connectionless packets is missing so no server discovery is possible. reduced network traffic by A LOT
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/client/gc_hooks.cpp | 23 | ||||
| -rw-r--r-- | src/game/g_version.h | 4 |
2 files changed, 24 insertions, 3 deletions
diff --git a/src/game/client/gc_hooks.cpp b/src/game/client/gc_hooks.cpp index 33b9ba91..72c94abc 100644 --- a/src/game/client/gc_hooks.cpp +++ b/src/game/client/gc_hooks.cpp @@ -361,6 +361,7 @@ extern "C" void modc_rcon_line(const char *line) extern "C" int modc_snap_input(int *data) { static NETOBJ_PLAYER_INPUT last_data = {0}; + static int64 last_send_time = 0; // update player state if(chat_mode != CHATMODE_NONE) @@ -414,8 +415,28 @@ extern "C" int modc_snap_input(int *data) input_data.target_y = (int)(cosf(t*3)*100.0f); } - // copy and return size + // check if we need to send input + bool send = false; + if(input_data.left != last_data.left) send = true; + else if(input_data.left != last_data.left) send = true; + else if(input_data.right != last_data.right) send = true; + else if(input_data.jump != last_data.jump) send = true; + else if(input_data.fire != last_data.fire) send = true; + else if(input_data.hook != last_data.hook) send = true; + else if(input_data.player_state != last_data.player_state) send = true; + else if(input_data.wanted_weapon != last_data.wanted_weapon) send = true; + else if(input_data.next_weapon != last_data.next_weapon) send = true; + else if(input_data.prev_weapon != last_data.prev_weapon) send = true; + + if(time_get() > last_send_time + time_freq()/5) + send = true; + last_data = input_data; + if(!send) + return 0; + + // copy and return size + last_send_time = time_get(); mem_copy(data, &input_data, sizeof(input_data)); return sizeof(input_data); } diff --git a/src/game/g_version.h b/src/game/g_version.h index e577316a..7472c783 100644 --- a/src/game/g_version.h +++ b/src/game/g_version.h @@ -1,4 +1,4 @@ /* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ #include "generated/nethash.c" -#define GAME_VERSION "0.4.2" -#define GAME_NETVERSION "0.4 " GAME_NETVERSION_HASH +#define GAME_VERSION "0.5.0-dev" +#define GAME_NETVERSION "0.5 " GAME_NETVERSION_HASH |