public GamePlay() { gameFinished = null; winningFinish = null; losingFinish = null; }
/// <summary> /// starts game depending on current GameSettings properties /// </summary> public void LoadAndInitialize(GameTime gameTime, int cameraStickBikeID) { //setup camera cameraX = cameraY = 0; this.cameraStickBikeID = cameraStickBikeID; //do some research about game bool team_game = false; switch(GameSettings.gameType) { case GameType.DeathMatch: winningFinish = DeathMatchWinning; losingFinish = DeathMatchLosing; break; case GameType.Demolition: winningFinish = DemolitionWinning; losingFinish = DemolitionLosing; break; case GameType.PointMatch: winningFinish = PointMatchWinning; losingFinish = PointMatchLosing; break; case GameType.TimeMatch: winningFinish = TimeMatchWinning; losingFinish = TimeMatchLosing; break; case GameType.TeamDeathMatch: team_game = true; winningFinish = TeamDeathMatchWinning; losingFinish = TeamDeathMatchLosing; break; case GameType.TeamDemolition: team_game = true; winningFinish = TeamDemolitionWinning; losingFinish = TeamDemolitionLosing; break; case GameType.TeamPointMatch: team_game = true; winningFinish = TeamPointMatchWinning; losingFinish = TeamPointMatchLosing; break; case GameType.TeamTimeMatch: team_game = true; winningFinish = TeamTimeMatchWinning; losingFinish = TeamTimeMatchLosing; break; } //map parameters already loaded during new game/join game setup //setup bikes bool need_agentcontroller = false; for (int i = 0; i < GameSettings.gameSlots.Length; i++) if (GameSettings.gameSlots[i] != null) { if (GameSettings.gameSlots[i].type == typeof(BotMotor)) { GameSettings.gameMotors[i] = new BotMotor(MotorkiGame.game, (team_game ? (i / 5 == 0 ? Color.Red : Color.Blue) : GetBotBikeColor()), (BotMotor.BotSophistication)GameSettings.gameSlots[i].playerID); GameSettings.gameMotors[i].name = GameSettings.gameSlots[i].name; if ((BotMotor.BotSophistication)GameSettings.gameSlots[i].playerID != BotMotor.BotSophistication.Easy) { need_agentcontroller = true; } } else if ((GameSettings.gameSlots[i].type == typeof(PlayerMotor)) && (GameSettings.gameSlots[i].playerID != -1)) { GameSettings.gameMotors[i] = new PlayerMotor(MotorkiGame.game, GameSettings.gameSlots[i].playerID, (team_game ? (i / 5 == 0 ? Color.Red : Color.Blue) : (GameSettings.gameSlots[i].playerID == 0 ? GameSettings.playerColor : GetBotBikeColor()))); GameSettings.gameMotors[i].name = (GameSettings.gameSlots[i].playerID == 0 ? GameSettings.playerName : "<network>"); } } else GameSettings.gameMotors[i] = null; if (need_agentcontroller) { if (GameSettings.agentController != null) { GameSettings.agentController.KillAgentController(); GameSettings.agentController = null; } GameSettings.agentController = new AgentController(); } //load map data and initialize it GameSettings.gameMap.LoadAndInitialize(); //load and initialize bikes for (int i = 0; i < GameSettings.gameMotors.Length; i++) if (GameSettings.gameMotors[i] != null) { Vector2 pos; float rot; if (!GameSettings.gameMap.GetBikeSpawnData((team_game ? i / 5 : -1), out pos, out rot)) throw new Exception("No spawn point found!!"); GameSettings.gameMotors[i].LoadAndInitialize(new Rectangle(0, 0, (int)GameSettings.gameMap.Parameters.Size.X, (int)GameSettings.gameMap.Parameters.Size.Y)); GameSettings.gameMotors[i].Spawn(pos, rot); } //confirm game started currentTime = startTime = gameTime.TotalGameTime.TotalSeconds; gameStarted = true; }