about summary refs log tree commit diff
path: root/src/game/client/gc_effects.cpp
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-16 22:32:17 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-16 22:32:17 +0000
commit4a3c2e2c8c3a8dee5828258f920f1c175e952cb0 (patch)
treee0fda9dfad5e605c0810c8f27d719078cd48fd63 /src/game/client/gc_effects.cpp
parent727c9a3a3249deec1c5a96025e99c0c654e7ff80 (diff)
downloadzcatch-4a3c2e2c8c3a8dee5828258f920f1c175e952cb0.tar.gz
zcatch-4a3c2e2c8c3a8dee5828258f920f1c175e952cb0.zip
loads of fixes, skidding, velocity ramping and other stuff
Diffstat (limited to 'src/game/client/gc_effects.cpp')
-rw-r--r--src/game/client/gc_effects.cpp54
1 files changed, 43 insertions, 11 deletions
diff --git a/src/game/client/gc_effects.cpp b/src/game/client/gc_effects.cpp
index fcf7ac93..094392e5 100644
--- a/src/game/client/gc_effects.cpp
+++ b/src/game/client/gc_effects.cpp
@@ -2,7 +2,8 @@
 #include "gc_client.h"
 #include "../generated/gc_data.h"
 
-static bool add_trail = false;
+static bool add_50hz = false;
+static bool add_100hz = false;
 
 void effect_air_jump(vec2 pos)
 {
@@ -27,7 +28,7 @@ void effect_air_jump(vec2 pos)
 
 void effect_powerupshine(vec2 pos, vec2 size)
 {
-	if(!add_trail)
+	if(!add_50hz)
 		return;
 		
 	particle p;
@@ -48,7 +49,7 @@ void effect_powerupshine(vec2 pos, vec2 size)
 
 void effect_smoketrail(vec2 pos, vec2 vel)
 {
-	if(!add_trail)
+	if(!add_50hz)
 		return;
 		
 	particle p;
@@ -65,9 +66,28 @@ void effect_smoketrail(vec2 pos, vec2 vel)
 }
 
 
+void effect_skidtrail(vec2 pos, vec2 vel)
+{
+	if(!add_100hz)
+		return;
+	
+	particle p;
+	p.set_default();
+	p.spr = SPRITE_PART_SMOKE;
+	p.pos = pos;
+	p.vel = vel + random_dir()*50.0f;
+	p.life_span = 0.5f + frandom()*0.5f;
+	p.start_size = 24.0f + frandom()*12;
+	p.end_size = 0;
+	p.friction = 0.7f;
+	p.gravity = frandom()*-500.0f;
+	p.color = vec4(0.75f,0.75f,0.75f,1.0f);
+	particle_add(PARTGROUP_GENERAL, &p);	
+}
+
 void effect_bullettrail(vec2 pos)
 {
-	if(!add_trail)
+	if(!add_100hz)
 		return;
 		
 	particle p;
@@ -77,7 +97,7 @@ void effect_bullettrail(vec2 pos)
 	p.life_span = 0.25f + frandom()*0.25f;
 	p.start_size = 8.0f;
 	p.end_size = 0;
-	p.friction = 0.7;
+	p.friction = 0.7f;
 	particle_add(PARTGROUP_PROJECTILE_TRAIL, &p);
 }
 
@@ -170,14 +190,26 @@ void effect_explosion(vec2 pos)
 
 void effects_update()
 {
-	static float last_update = 0;
-	if(client_localtime()-last_update > 0.02f)
+	static float last_update_100hz = 0;
+	static float last_update_50hz = 0;
+
+	if(client_localtime()-last_update_100hz > 0.01f)
 	{
-		add_trail = true;
-		last_update = client_localtime();
-		flow_update();
+		add_100hz = true;
+		last_update_100hz = client_localtime();
 	}
 	else
-		add_trail = false;
+		add_100hz = false;
+
+	if(client_localtime()-last_update_50hz > 0.02f)
+	{
+		add_50hz = true;
+		last_update_50hz = client_localtime();
+	}
+	else
+		add_50hz = false;
+		
+	if(add_50hz)
+		flow_update();
 		
 }