diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-12-09 15:38:19 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-12-09 15:38:19 +0000 |
| commit | 8854bacf6d24cbb3ade4f86a1a8c848e08ceb32b (patch) | |
| tree | 467c558f8b087d1d4d410fd5d361479fc467bd8f /src/game/client/game_client.cpp | |
| parent | fef40c16cc8910d96f2e21e2258dd02cd23a90fa (diff) | |
| download | zcatch-8854bacf6d24cbb3ade4f86a1a8c848e08ceb32b.tar.gz zcatch-8854bacf6d24cbb3ade4f86a1a8c848e08ceb32b.zip | |
fixed crashbug, fixed ninja, fixed predicted sounds
Diffstat (limited to 'src/game/client/game_client.cpp')
| -rw-r--r-- | src/game/client/game_client.cpp | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp index 30cad6c0..bdd42240 100644 --- a/src/game/client/game_client.cpp +++ b/src/game/client/game_client.cpp @@ -761,18 +761,11 @@ extern "C" void modc_predict() } // predict - int num_predicted = 0; - int got = 0; for(int tick = client_tick()+1; tick <= client_predtick(); tick++) { - num_predicted++; - // fetch the local if(tick == client_predtick() && world.players[local_cid]) - { - got|=1; predicted_prev_player = *world.players[local_cid]; - } // first calculate where everyone should move for(int c = 0; c < MAX_CLIENTS; c++) @@ -837,14 +830,19 @@ extern "C" void modc_predict() } if(tick == client_predtick() && world.players[local_cid]) - { - got|=2; predicted_player = *world.players[local_cid]; - } } - - if(got!=3) - dbg_msg("predict", "way few predictions %d %d", num_predicted, got); +} + +static void clear_object_pointers() +{ + // clear out the invalid pointers + local_character = 0; + local_prev_character = 0; + local_info = 0; + flags[0] = 0; + flags[1] = 0; + gameobj = 0; } extern "C" void modc_newsnapshot() @@ -863,13 +861,7 @@ extern "C" void modc_newsnapshot() } } - // clear out the invalid pointers - local_character = 0; - local_prev_character = 0; - local_info = 0; - flags[0] = 0; - flags[1] = 0; - gameobj = 0; + clear_object_pointers(); // setup world view { @@ -2753,6 +2745,8 @@ void menu_do_connected(); extern "C" void modc_statechange(int state, int old) { + clear_object_pointers(); + if(state == CLIENTSTATE_OFFLINE) { menu_do_disconnected(); @@ -2853,6 +2847,9 @@ extern "C" void modc_connected() chat_reset(); proj_particles.reset(); + + clear_object_pointers(); + last_new_predicted_tick = -1; for(int i = 0; i < MAX_CLIENTS; i++) { |