about summary refs log tree commit diff
path: root/src/game/server
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-17 01:03:14 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-17 01:03:14 +0000
commitad19e0702efa07fbe7df073ade599573917b9250 (patch)
treee2b57dde40772a7534cc50d0c3b3bd92c19e519e /src/game/server
parent259d2886334e443f533d27244386e9e003b2cf34 (diff)
downloadzcatch-ad19e0702efa07fbe7df073ade599573917b9250.tar.gz
zcatch-ad19e0702efa07fbe7df073ade599573917b9250.zip
tweaked the rifle and added rifle sounds
Diffstat (limited to 'src/game/server')
-rw-r--r--src/game/server/gs_common.h1
-rw-r--r--src/game/server/gs_server.cpp27
2 files changed, 18 insertions, 10 deletions
diff --git a/src/game/server/gs_common.h b/src/game/server/gs_common.h
index 0de81318..494a16eb 100644
--- a/src/game/server/gs_common.h
+++ b/src/game/server/gs_common.h
@@ -204,6 +204,7 @@ public:
 	projectile(int type, int owner, vec2 pos, vec2 vel, int span, entity* powner,
 		int damage, int flags, float force, int sound_impact, int weapon);
 
+	vec2 get_pos(float time);
 	void fill_info(NETOBJ_PROJECTILE *proj);
 
 	virtual void reset();
diff --git a/src/game/server/gs_server.cpp b/src/game/server/gs_server.cpp
index fa3f9925..753a53a3 100644
--- a/src/game/server/gs_server.cpp
+++ b/src/game/server/gs_server.cpp
@@ -406,7 +406,7 @@ void projectile::reset()
 	world->destroy_entity(this);
 }
 
-void projectile::tick()
+vec2 projectile::get_pos(float time)
 {
 	float curvature = 0;
 	float speed = 0;
@@ -426,10 +426,17 @@ void projectile::tick()
 		speed = tuning.gun_speed;
 	}
 	
+	return calc_pos(pos, direction, curvature, speed, time);
+}
+
+
+void projectile::tick()
+{
+	
 	float pt = (server_tick()-start_tick-1)/(float)server_tickspeed();
 	float ct = (server_tick()-start_tick)/(float)server_tickspeed();
-	vec2 prevpos = calc_pos(pos, direction, curvature, speed, pt);
-	vec2 curpos = calc_pos(pos, direction, curvature, speed, ct);
+	vec2 prevpos = get_pos(pt);
+	vec2 curpos = get_pos(ct);
 
 	lifespan--;
 	
@@ -466,13 +473,10 @@ void projectile::fill_info(NETOBJ_PROJECTILE *proj)
 
 void projectile::snap(int snapping_client)
 {
-	/*float ct = (server_tick()-start_tick)/(float)server_tickspeed();*/
-	/*vec2 curpos = calc_pos(pos, vel, -7.5f*server_tickspeed(), ct);*/
-
-	/*if(distance(players[snapping_client].pos, curpos) > 1000.0f)
-		return;*/
-		
-	/* TODO: FIX ME */
+	float ct = (server_tick()-start_tick)/(float)server_tickspeed();
+	
+	if(distance(players[snapping_client].pos, get_pos(ct)) > 1000.0f)
+		return;
 
 	NETOBJ_PROJECTILE *proj = (NETOBJ_PROJECTILE *)snap_new_item(NETOBJTYPE_PROJECTILE, id, sizeof(NETOBJ_PROJECTILE));
 	fill_info(proj);
@@ -564,7 +568,10 @@ void laser::reset()
 void laser::tick()
 {
 	if(server_tick() > eval_tick+(server_tickspeed()*tuning.laser_bounce_delay)/1000.0f)
+	{
+		create_sound(pos, SOUND_RIFLE_BOUNCE);
 		do_bounce();
+	}
 
 }