diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-01-11 15:51:43 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-01-11 15:51:43 +0000 |
| commit | 46125d5ed7126276098875efcc61cd4b11bbd6d2 (patch) | |
| tree | dee0ce2c56473066e2660cfca8eaeee972ce5ae3 /src/game/client/components | |
| parent | fec578e084ade00d07b2e802fd86b88743d94bbf (diff) | |
| download | zcatch-46125d5ed7126276098875efcc61cd4b11bbd6d2.tar.gz zcatch-46125d5ed7126276098875efcc61cd4b11bbd6d2.zip | |
fixed so predicted sounds and air jump effect works with demo playback
Diffstat (limited to 'src/game/client/components')
| -rw-r--r-- | src/game/client/components/effects.cpp | 2 | ||||
| -rw-r--r-- | src/game/client/components/players.cpp | 11 | ||||
| -rw-r--r-- | src/game/client/components/sounds.cpp | 10 | ||||
| -rw-r--r-- | src/game/client/components/sounds.hpp | 1 |
4 files changed, 24 insertions, 0 deletions
diff --git a/src/game/client/components/effects.cpp b/src/game/client/components/effects.cpp index 5e2e25e3..6b3d90ed 100644 --- a/src/game/client/components/effects.cpp +++ b/src/game/client/components/effects.cpp @@ -38,6 +38,8 @@ void EFFECTS::air_jump(vec2 pos) p.pos = pos + vec2(6.0f, 16.0f); gameclient.particles->add(PARTICLES::GROUP_GENERAL, &p); + + gameclient.sounds->play(SOUNDS::CHN_WORLD, SOUND_PLAYER_AIRJUMP, 1.0f, pos); } void EFFECTS::damage_indicator(vec2 pos, vec2 dir) diff --git a/src/game/client/components/players.cpp b/src/game/client/components/players.cpp index c0488d19..0b3a7053 100644 --- a/src/game/client/components/players.cpp +++ b/src/game/client/components/players.cpp @@ -93,6 +93,7 @@ void PLAYERS::render_player( // check for teamplay modes bool is_teamplay = false; + bool new_tick = gameclient.new_tick; if(gameclient.snap.gameobj) is_teamplay = gameclient.snap.gameobj->flags&GAMEFLAG_TEAMS != 0; @@ -165,6 +166,7 @@ void PLAYERS::render_player( gameclient.predicted_char.write(&player); gameclient.predicted_prev_char.write(&prev); intratick = client_predintratick(); + new_tick = gameclient.new_predicted_tick; } } @@ -175,6 +177,15 @@ void PLAYERS::render_player( gameclient.flow->add(position, vel*100.0f, 10.0f); render_info.got_airjump = player.jumped&2?0:1; + + + // detect events + if(new_tick) + { + // detect air jump + if(!render_info.got_airjump && !(prev.jumped&2)) + gameclient.effects->air_jump(position); + } if(prev.health < 0) // Don't flicker from previous position position = vec2(player.x, player.y); diff --git a/src/game/client/components/sounds.cpp b/src/game/client/components/sounds.cpp index 024d07d4..dfa7e31b 100644 --- a/src/game/client/components/sounds.cpp +++ b/src/game/client/components/sounds.cpp @@ -21,6 +21,16 @@ void SOUNDS::on_render() snd_set_listener_pos(gameclient.camera->center.x, gameclient.camera->center.y); } +void SOUNDS::play_and_record(int chn, int setid, float vol, vec2 pos) +{ + NETMSG_SV_SOUNDGLOBAL msg; + msg.soundid = setid; + msg.pack(MSGFLAG_NOSEND|MSGFLAG_RECORD); + client_send_msg(); + + play(chn, setid, vol, pos); +} + void SOUNDS::play(int chn, int setid, float vol, vec2 pos) { SOUNDSET *set = &data->sounds[setid]; diff --git a/src/game/client/components/sounds.hpp b/src/game/client/components/sounds.hpp index 5e3dfd6e..95ddb1ec 100644 --- a/src/game/client/components/sounds.hpp +++ b/src/game/client/components/sounds.hpp @@ -16,6 +16,7 @@ public: virtual void on_render(); void play(int chn, int setid, float vol, vec2 pos); + void play_and_record(int chn, int setid, float vol, vec2 pos); }; |