// * AdmiralMOD by Matthias Lorenz, http://www.cod2mod.com *




// * Alle Spieler bereits im Spiel, alles auf zero *
StartGame() {
	
	if(game["am_enabled"] != 1) return;

	if(game["am_error_logfile"] == 1) logPrint("StartGame\n");




	// * MM Missionen *
	level.highscore_text = "";
	level.bomb_on_the_map_allies = 0;
	level.bomb_on_the_map_axis = 0;
	
	// * Sprint Schritte unterdrücken, solage bei S&D nach dem planten PlayerSounds ausgegeben werden  *
	level.sd_sound_play = undefined;

//** hinzugefügt für HELLZone_AM **//
	
	//** Headshot Distanzangabe mit oder ohne Komma **//
	if (getCvar("am_meter_mit_nachkomma") == "")   // ist am_meter_mit_nachkomma gesetzt?
	setCvar("am_meter_mit_nachkomma", "0");      // wenn nicht, setze sie auf 0
	
	level.nachkomma = getcvar("am_meter_mit_nachkomma"); //** Variable definieren, die in der Config liegt **//
	
//** ---Ende für HELLZone_AM--- **//		
	
	maps\mp\gametypes\_admiral_mod_hud::showAutoDownload();		
	maps\mp\gametypes\_admiral_mod_hud::showClanLevelLogoText();

	thread maps\mp\gametypes\_admiral_mod_hud::showMessages();
	thread maps\mp\gametypes\_admiral_mod_hud::showNextMap();

	maps\mp\gametypes\_admiral_mod_hud::InitLifes();
	thread maps\mp\gametypes\_admiral_mod_hud::UpdateLifes();

	maps\mp\gametypes\_admiral_mod_squad::InitSquads();

	if(!isDefined(game["map_dimension_ready"])) {
	
 		maps\mp\gametypes\_admiral_mod_utils::GetPlayfieldDimension();
  		wait 1;  // * Damit kein Absturz wenn sofort ein Objekt gespawned wird * 
		maps\mp\gametypes\_admiral_mod_utils::GetMapDimension();
		wait 1;  // * Damit kein Absturz wenn sofort ein Objekt gespawned wird * 
   	
  		game["map_dimension_ready"] = true;  	
  	}
  	
  	
  	// * Diese nach der MapDimension starten, sonst gibts Fehler *  
  	thread maps\mp\gametypes\_admiral_mod_ambient::MapMortarAttacks();  	
  	thread maps\mp\gametypes\_admiral_mod_ambient::AmbientWarSounds();
  	thread maps\mp\gametypes\_admiral_mod_ambient::AmbientFlybySounds();
  	thread maps\mp\gametypes\_admiral_mod_ambient::AmbientDogs();
	thread maps\mp\gametypes\_admiral_mod_ambient::AmbientMetall();

	thread maps\mp\gametypes\_admiral_mod_weapons::CheckGrenadeIncoming();	

	thread maps\mp\gametypes\_admiral_mod_compass::ShowMedic("allies");
	thread maps\mp\gametypes\_admiral_mod_compass::ShowMedic("axis");
	thread maps\mp\gametypes\_teams::CheckSwitchToPublic();
	
	thread CheckEmptyServer();


	//thread maps\mp\gametypes\_admiral_mod_planes::InitFighters();
	

	if(game["am_admiral_mod_server_search_option"] == 1) {
	
		if(maps\mp\gametypes\_admiral_mod_utils::find_first_string(game["am_hostname"], "(AM)") == -1) setcvar("sv_hostname", game["am_hostname"] + " (AM)");
	}
	
	
	
	setcvar("sv_fps",20);
	
	if(game["am_player_sprinting"] == 1) {
	
		setcvar("g_speed",150 + game["am_game_speed"]) ;
	}
	
	
	
	// * Bots *	
	if(game["am_error_bots"] > 0) {
	
		if(game["am_gametype"] == "mm" && game["am_mission_pack_edit"] == 1) {
		
		}
		else {
	
			maps\mp\gametypes\_teams::addTestClients(game["am_error_bots"]);
		}
	}




	setCvar("_Mod", "^5Visit Stats ^6@ ^5www.HellZone-am.de");
	setCvar("_ModVer", "");
	setCvar("_ModUpdate", "");

	
	if(game["am_tournament_mode"] == 1) {
	
		// * Tournament und Live-Score *
		if(game["am_tournament_live_score"] == 1) setCvar("sv_hostname", "AM Cup Server: Warm Up");		
	}




	// * Turrets Limit *
	maps\mp\gametypes\_admiral_mod_weapons::LimitTurrets(game["am_max_turrets"]);



	if(game["am_disable_map_ambient"] == 1) thread maps\mp\gametypes\_admiral_mod_ambient::AmbientPlayOff();
	

}


// * bei allen Spieltypen (außer DM), vor den 10 Sekunden (Highscore) *
EndMapPre() {

	if(game["am_error_logfile"] == 1) logPrint("EndMapPre\n");
	
	
	// * Allen Sqaud-Team-Membern die gleich Punktanzahl geben *
	

}


// * bei allen Spieltypen, nach den 10 Sekunden (Highscore) *
EndMap() {

	level notify("am_end_map");


	if(game["am_error_logfile"] == 1) logPrint("EndMap\n");



	// * Vote *
	if(game["am_gametype"] != "mm" && (game["am_vote_map"] == 1 || game["am_vote_gametype"] == 1)) {

		maps\mp\gametypes\_admiral_mod_vote::Vote();
	}
		
}


// * Bei S&D (matchstarted,...) *
StartRound() {

	if(game["am_error_logfile"] == 1) logPrint("StartRound\n");	

	level.bomb_on_the_map_allies = 0;
	level.bomb_on_the_map_axis = 0;
	

	// * Waffen menüupdate für alle Spectatoren *
	//level thread maps\mp\gametypes\_admiral_mod_weapons::MakeWeaponLimitSpectators();

}


// * Bei S&D (vor der 7 Sekunden Pause,... , dannach kommt MapRestart) *
EndRound() {

	
	if(game["am_gametype"] != "sd" && game["am_gametype"] != "sdr" && game["am_gametype"] != "csd") return;

		
	if(game["am_error_logfile"] == 1) logPrint("EndRound\n");


	
  	maps\mp\gametypes\_admiral_mod_tournament::CheckHalftimes();
	
}



CheckEmptyServer() {

	if(game["am_empty_server_map_rotation"] != 1) return;
	
	
	if(game["am_error_logfile"] == 1) logPrint("CheckEmptyServer\n");
	
	
	while(1) {
	
		wait 1 + game["am_empty_server_map_rotation_waittime"];
	
		// * Wenn kein Spieler auf dem Server, dann nächste Map *
		players = getentarray("player", "classname");
		
		if(players.size < 1) {

			exitLevel(false);	
		}
	}

}

