about summary refs log tree commit diff
path: root/src/game/server/srv_common.cpp
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-15 10:24:49 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-15 10:24:49 +0000
commita2566b3ebd93e0bbc55a920a7be08054a9377f11 (patch)
tree44a4612805d894168fe4b3b4c065fccc1a1686e9 /src/game/server/srv_common.cpp
parentac9873056aa1fe529b098f19ff31e9ffa0e016a2 (diff)
downloadzcatch-a2566b3ebd93e0bbc55a920a7be08054a9377f11.tar.gz
zcatch-a2566b3ebd93e0bbc55a920a7be08054a9377f11.zip
cleaned up code structure a bit
Diffstat (limited to 'src/game/server/srv_common.cpp')
-rw-r--r--src/game/server/srv_common.cpp264
1 files changed, 0 insertions, 264 deletions
diff --git a/src/game/server/srv_common.cpp b/src/game/server/srv_common.cpp
deleted file mode 100644
index 83754780..00000000
--- a/src/game/server/srv_common.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */
-#include <engine/config.h>
-#include "srv_common.h"
-#include <string.h>
-
-gameobject::gameobject()
-: entity(OBJTYPE_GAME)
-{
-	// select gametype
-	if(strcmp(config.sv_gametype, "ctf") == 0)
-	{
-		gametype = GAMETYPE_CTF;
-		dbg_msg("game", "-- Capture The Flag --");
-	}
-	else if(strcmp(config.sv_gametype, "tdm") == 0)
-	{
-		gametype = GAMETYPE_TDM;
-		dbg_msg("game", "-- Team Death Match --");
-	}
-	else
-	{
-		gametype = GAMETYPE_DM;
-		dbg_msg("game", "-- Death Match --");
-	}
-		
-	//
-	do_warmup(config.sv_warmup);
-	game_over_tick = -1;
-	sudden_death = 0;
-	round_start_tick = server_tick();
-	round_count = 0;
-	is_teamplay = false;
-	teamscore[0] = 0;
-	teamscore[1] = 0;	
-}
-
-void gameobject::endround()
-{
-	if(warmup) // game can't end when we are running warmup
-		return;
-		
-	world->paused = true;
-	game_over_tick = server_tick();
-	sudden_death = 0;
-}
-
-void gameobject::resetgame()
-{
-	world->reset_requested = true;
-}
-
-static bool is_separator(char c)
-{
-	return c == ';' || c == ' ' || c == ',' || c == '\t';
-}
-
-void gameobject::startround()
-{
-	resetgame();
-	
-	round_start_tick = server_tick();
-	sudden_death = 0;
-	game_over_tick = -1;
-	world->paused = false;
-	teamscore[0] = 0;
-	teamscore[1] = 0;
-	round_count++;
-}
-
-void gameobject::cyclemap()
-{
-	if(!strlen(config.sv_maprotation))
-		return;
-	// handle maprotation
-	char buf[512];
-	const char *s = strstr(config.sv_maprotation, config.sv_map);
-	if(s == 0)
-		s = config.sv_maprotation; // restart rotation
-	else
-	{
-		s += strlen(config.sv_map); // skip this map
-		while(is_separator(s[0]))
-			s++;
-		if(s[0] == 0)
-			s = config.sv_maprotation; // restart rotation
-	}
-		
-	int i = 0;
-	for(; i < 512; i++)
-	{
-		buf[i] = s[i];
-		if(is_separator(s[i]) || s[i] == 0)
-		{
-			buf[i] = 0;
-			break;
-		}
-	}
-	
-	i = 0; // skip spaces
-	while(is_separator(buf[i]))
-		i++;
-	
-	dbg_msg("game", "rotating map to %s", &buf[i]);
-	strcpy(config.sv_map, &buf[i]);
-}
-
-void gameobject::post_reset()
-{
-	for(int i = 0; i < MAX_CLIENTS; i++)
-	{
-		if(players[i].client_id != -1)
-			players[i].respawn();
-	}
-}
-	
-void gameobject::on_player_info_change(class player *p)
-{
-	const int team_colors[2] = {65387, 10223467};
-	if(is_teamplay)
-	{
-		if(p->team >= 0 || p->team <= 1)
-		{
-			p->use_custom_color = 1;
-			p->color_body = team_colors[p->team];
-			p->color_feet = team_colors[p->team];
-		}
-	}
-}
-
-
-int gameobject::on_player_death(class player *victim, class player *killer, int weapon)
-{
-	// do scoreing
-	if(!killer)
-		return 0;
-	if(killer == victim)
-		victim->score--; // suicide
-	else
-	{
-		if(is_teamplay && victim->team == killer->team)
-			killer->score--; // teamkill
-		else
-			killer->score++; // normal kill
-	}
-	return 0;
-}
-
-void gameobject::do_warmup(int seconds)
-{
-	warmup = seconds*SERVER_TICK_SPEED;
-}
-
-bool gameobject::is_friendly_fire(int cid1, int cid2)
-{
-	if(cid1 == cid2)
-		return false;
-	
-	if(is_teamplay)
-	{
-		if(players[cid1].team == players[cid2].team)
-			return true;
-	}
-	
-	return false;
-}
-
-void gameobject::tick()
-{
-	// do warmup
-	if(warmup)
-	{
-		warmup--;
-		if(!warmup)
-			startround();
-	}
-	
-	if(game_over_tick != -1)
-	{
-		// game over.. wait for restart
-		if(server_tick() > game_over_tick+server_tickspeed()*10)
-		{
-			cyclemap();
-			startround();
-		}
-	}
-	
-	
-	// update browse info
-	int prog = -1;
-	if(config.sv_timelimit > 0)
-		prog = max(prog, (server_tick()-round_start_tick) * 100 / (config.sv_timelimit*server_tickspeed()*60));
-
-	if(config.sv_scorelimit)
-	{
-		if(is_teamplay)
-		{
-			prog = max(prog, (teamscore[0]*100)/config.sv_scorelimit);
-			prog = max(prog, (teamscore[1]*100)/config.sv_scorelimit);
-		}
-		else
-		{
-			for(int i = 0; i < MAX_CLIENTS; i++)
-			{
-				if(players[i].client_id != -1)
-					prog = max(prog, (players[i].score*100)/config.sv_scorelimit);
-			}
-		}
-	}
-
-	if(warmup)
-		prog = -1;
-	
-	server_setbrowseinfo(gametype, prog);
-}
-
-void gameobject::snap(int snapping_client)
-{
-	obj_game *game = (obj_game *)snap_new_item(OBJTYPE_GAME, 0, sizeof(obj_game));
-	game->paused = world->paused;
-	game->game_over = game_over_tick==-1?0:1;
-	game->sudden_death = sudden_death;
-	
-	game->score_limit = config.sv_scorelimit;
-	game->time_limit = config.sv_timelimit;
-	game->round_start_tick = round_start_tick;
-	game->gametype = gametype;
-	
-	game->warmup = warmup;
-	
-	game->teamscore[0] = teamscore[0];
-	game->teamscore[1] = teamscore[1];
-}
-
-int gameobject::getteam(int notthisid)
-{
-	int numplayers[2] = {0,0};
-	for(int i = 0; i < MAX_CLIENTS; i++)
-	{
-		if(players[i].client_id != -1 && players[i].client_id != notthisid)
-		{
-			numplayers[players[i].team]++;
-		}
-	}
-
-	return numplayers[0] > numplayers[1] ? 1 : 0;
-}
-
-void gameobject::do_team_wincheck()
-{
-	if(game_over_tick == -1 && !warmup)
-	{
-		// check score win condition
-		if((config.sv_scorelimit > 0 && (teamscore[0] >= config.sv_scorelimit || teamscore[1] >= config.sv_scorelimit)) ||
-			(config.sv_timelimit > 0 && (server_tick()-round_start_tick) >= config.sv_timelimit*server_tickspeed()*60))
-		{
-			if(teamscore[0] != teamscore[1])
-				endround();
-			else
-				sudden_death = 1;
-		}
-	}
-}
-
-gameobject *gameobj = 0;