Exemple #1
0
 public GamePlay()
 {
     gameFinished = null;
     winningFinish = null;
     losingFinish = null;
 }
Exemple #2
0
        /// <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;
        }