about summary refs log tree commit diff
path: root/src/game/client
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-10-14 12:11:42 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-10-14 12:11:42 +0000
commit4484948a6d4e12485c5b54ecf0e9e6d92b749d1a (patch)
tree88ef98544626de24605a54a5c461f9075a84b08c /src/game/client
parent3544db49270f6d99c8b2126f294d38267e2899cb (diff)
downloadzcatch-4484948a6d4e12485c5b54ecf0e9e6d92b749d1a.tar.gz
zcatch-4484948a6d4e12485c5b54ecf0e9e6d92b749d1a.zip
updated the demo recorder
Diffstat (limited to 'src/game/client')
-rw-r--r--src/game/client/components/camera.cpp4
-rw-r--r--src/game/client/components/items.cpp11
-rw-r--r--src/game/client/components/players.cpp4
-rw-r--r--src/game/client/gameclient.cpp22
4 files changed, 13 insertions, 28 deletions
diff --git a/src/game/client/components/camera.cpp b/src/game/client/components/camera.cpp
index ba9aed46..7b188e00 100644
--- a/src/game/client/components/camera.cpp
+++ b/src/game/client/components/camera.cpp
@@ -19,7 +19,8 @@ void CAMERA::on_render()
 {
 	//vec2 center;
 	zoom = 1.0f;
-	
+
+	// update camera center		
 	if(gameclient.snap.spectate)
 		center = gameclient.controls->mouse_pos;
 	else
@@ -37,4 +38,3 @@ void CAMERA::on_render()
 		center = gameclient.local_character_pos + camera_offset;
 	}
 }
-
diff --git a/src/game/client/components/items.cpp b/src/game/client/components/items.cpp
index 43ad3319..c880b93e 100644
--- a/src/game/client/components/items.cpp
+++ b/src/game/client/components/items.cpp
@@ -14,8 +14,6 @@
 
 void ITEMS::render_projectile(const NETOBJ_PROJECTILE *current, int itemid)
 {
-	gfx_texture_set(data->images[IMAGE_GAME].id);
-	gfx_quads_begin();
 
 	// get positions
 	float curvature = 0;
@@ -36,12 +34,19 @@ void ITEMS::render_projectile(const NETOBJ_PROJECTILE *current, int itemid)
 		speed = gameclient.tuning.gun_speed;
 	}
 
-	float ct = (client_tick()-current->start_tick)/(float)SERVER_TICK_SPEED + client_ticktime()*1/(float)SERVER_TICK_SPEED;
+	float ct = (client_prevtick()-current->start_tick)/(float)SERVER_TICK_SPEED + client_ticktime();
+	if(ct < 0)
+		return; // projectile havn't been shot yet
+		
 	vec2 startpos(current->x, current->y);
 	vec2 startvel(current->vx/100.0f, current->vy/100.0f);
 	vec2 pos = calc_pos(startpos, startvel, curvature, speed, ct);
 	vec2 prevpos = calc_pos(startpos, startvel, curvature, speed, ct-0.001f);
 
+
+	gfx_texture_set(data->images[IMAGE_GAME].id);
+	gfx_quads_begin();
+	
 	select_sprite(data->weapons.id[clamp(current->type, 0, NUM_WEAPONS-1)].sprite_proj);
 	vec2 vel = pos-prevpos;
 	//vec2 pos = mix(vec2(prev->x, prev->y), vec2(current->x, current->y), client_intratick());
diff --git a/src/game/client/components/players.cpp b/src/game/client/components/players.cpp
index 02977632..8125b6d9 100644
--- a/src/game/client/components/players.cpp
+++ b/src/game/client/components/players.cpp
@@ -145,12 +145,10 @@ void PLAYERS::render_player(
 			intratick = client_predintratick();
 		}
 	}
-
+	
 	vec2 position = mix(vec2(prev.x, prev.y), vec2(player.x, player.y), intratick);
 	vec2 vel = mix(vec2(prev.vx/256.0f, prev.vy/256.0f), vec2(player.vx/256.0f, player.vy/256.0f), intratick);
 	
-	//dbg_msg("", "%d %d %d %d %f", prev.x, prev.y, player.x, player.y, intratick);
-	
 	gameclient.flow->add(position, vel*100.0f, 10.0f);
 	
 	render_info.got_airjump = player.jumped&2?0:1;
diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp
index 7c9a1ed6..22800a7a 100644
--- a/src/game/client/gameclient.cpp
+++ b/src/game/client/gameclient.cpp
@@ -303,7 +303,7 @@ void GAMECLIENT::on_reset()
 
 void GAMECLIENT::update_local_character_pos()
 {
-	if(config.cl_predict)
+	if(config.cl_predict && client_state() != CLIENTSTATE_DEMOPLAYBACK)
 	{
 		if(!snap.local_character || (snap.local_character->health < 0) || (snap.gameobj && snap.gameobj->game_over))
 		{
@@ -328,7 +328,7 @@ static void evolve(NETOBJ_CHARACTER *character, int tick)
 	mem_zero(&tempcore, sizeof(tempcore));
 	tempcore.world = &tempworld;
 	tempcore.read(character);
-	//tempcore.input.direction = character->wanted_direction;
+	
 	while(character->tick < tick)
 	{
 		character->tick++;
@@ -343,21 +343,6 @@ static void evolve(NETOBJ_CHARACTER *character, int tick)
 
 void GAMECLIENT::on_render()
 {
-	// perform dead reckoning
-	// TODO: move this to a betterlocation
-	/*
-	for(int i = 0; i < MAX_CLIENTS; i++)
-	{
-		if(!snap.characters[i].active)
-			continue;
-					
-		// perform dead reckoning
-		if(snap.characters[i].prev.tick)
-			evolve(&snap.characters[i].prev, client_prevtick());
-		if(snap.characters[i].cur.tick)
-			evolve(&snap.characters[i].cur, client_tick());
-	}*/
-	
 	// update the local character position
 	update_local_character_pos();
 	
@@ -621,9 +606,6 @@ void GAMECLIENT::on_snapshot()
 		}
 	}
 	
-	if(client_state() == CLIENTSTATE_DEMOPLAYBACK)
-		gameclient.snap.spectate = true;
-	
 	// setup local pointers
 	if(snap.local_cid >= 0)
 	{