about summary refs log tree commit diff
path: root/src/game/server
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-10-03 21:32:02 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-10-03 21:32:02 +0000
commita67738e9801a4485cfaf68012279cd5042dc2ab9 (patch)
tree5a4fa1db378b9b889b73b66ff9ac974fdc141dca /src/game/server
parent30a7246f2fd5e2141de2c37f01b491abe374f3f9 (diff)
downloadzcatch-a67738e9801a4485cfaf68012279cd5042dc2ab9.tar.gz
zcatch-a67738e9801a4485cfaf68012279cd5042dc2ab9.zip
general fixes. fixed scoreboard
Diffstat (limited to 'src/game/server')
-rw-r--r--src/game/server/game_server.cpp5
-rw-r--r--src/game/server/srv_common.h2
-rw-r--r--src/game/server/srv_ctf.cpp1
-rw-r--r--src/game/server/srv_tdm.cpp11
4 files changed, 14 insertions, 5 deletions
diff --git a/src/game/server/game_server.cpp b/src/game/server/game_server.cpp
index 0e42614e..78b95de3 100644
--- a/src/game/server/game_server.cpp
+++ b/src/game/server/game_server.cpp
@@ -306,6 +306,8 @@ void gameobject::startround()
 	sudden_death = 0;
 	game_over_tick = -1;
 	world->paused = false;
+	teamscore[0] = 0;
+	teamscore[1] = 0;
 }
 
 void gameobject::post_reset()
@@ -344,6 +346,9 @@ void gameobject::snap(int snapping_client)
 	game->time_limit = config.timelimit;
 	game->round_start_tick = round_start_tick;
 	game->gametype = gametype;
+	
+	game->teamscore[0] = teamscore[0];
+	game->teamscore[1] = teamscore[1];
 }
 
 int gameobject::getteam(int notthisid)
diff --git a/src/game/server/srv_common.h b/src/game/server/srv_common.h
index 7b6e7e1e..22aa4535 100644
--- a/src/game/server/srv_common.h
+++ b/src/game/server/srv_common.h
@@ -117,6 +117,8 @@ protected:
 	int game_over_tick;
 	int sudden_death;
 	
+	int teamscore[2];
+	
 public:
 	int gametype;
 	gameobject();
diff --git a/src/game/server/srv_ctf.cpp b/src/game/server/srv_ctf.cpp
index 7a13b877..1831db31 100644
--- a/src/game/server/srv_ctf.cpp
+++ b/src/game/server/srv_ctf.cpp
@@ -59,6 +59,7 @@ void gameobject_ctf::tick()
 				if(distance(f->pos, flags[fi^1]->pos) < 24)
 				{
 					// CAPTURE! \o/
+					teamscore[fi^1]++;
 					for(int i = 0; i < 2; i++)
 						flags[i]->reset();
 				}
diff --git a/src/game/server/srv_tdm.cpp b/src/game/server/srv_tdm.cpp
index ca1a5a67..3ed35dca 100644
--- a/src/game/server/srv_tdm.cpp
+++ b/src/game/server/srv_tdm.cpp
@@ -7,22 +7,23 @@ void gameobject_tdm::tick()
 	if(game_over_tick == -1)
 	{
 		// game is running
+		teamscore[0] = 0;
+		teamscore[1] = 0;
 		
 		// gather some stats
-		int totalscore[2] = {0,0};
 		int topscore_count = 0;
 		for(int i = 0; i < MAX_CLIENTS; i++)
 		{
 			if(players[i].client_id != -1)
-				totalscore[players[i].team] += players[i].score;
+				teamscore[players[i].team] += players[i].score;
 		}
-		if (totalscore[0] >= config.scorelimit)
+		if (teamscore[0] >= config.scorelimit)
 			topscore_count++;
-		if (totalscore[1] >= config.scorelimit)
+		if (teamscore[1] >= config.scorelimit)
 			topscore_count++;
 		
 		// check score win condition
-		if((config.scorelimit > 0 && (totalscore[0] >= config.scorelimit || totalscore[1] >= config.scorelimit)) ||
+		if((config.scorelimit > 0 && (teamscore[0] >= config.scorelimit || teamscore[1] >= config.scorelimit)) ||
 			(config.timelimit > 0 && (server_tick()-round_start_tick) >= config.timelimit*server_tickspeed()*60))
 		{
 			if(topscore_count == 1)