about summary refs log tree commit diff
path: root/src/game/client/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/client/components')
-rw-r--r--src/game/client/components/effects.cpp2
-rw-r--r--src/game/client/components/players.cpp11
-rw-r--r--src/game/client/components/sounds.cpp10
-rw-r--r--src/game/client/components/sounds.hpp1
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);
 };