Esempio n. 1
0
        //public UtilityFunctions Utility {
        //    get {
        //        return _utility;
        //    }
        //}

        public GameController(GameResources res)
        {
            _state = new Stack <GameState>();
            //bottom state will be quitting. If player exits main menu then the game is over
            _state.Push(GameState.Quitting);

            //at the start the player is viewing the main menu
            _state.Push(GameState.ViewingMainMenu);

            _resources = res;

            _utility    = new UtilityFunctions();
            _menu       = new MenuController();
            _deployment = new DeploymentController();
            _discovery  = new DiscoveryController();
            _endGame    = new EndingGameController();
            _highScore  = new HighScoreController();

            _highScore.LoadHighScore();
        }
Esempio n. 2
0
        /*<summary>
         * Draws the current state of the game to the screen.
         *</summary>
         *<remarks>
         * What is drawn depends upon the state of the game.
         *</remarks>
         */
        public static void DrawScreen()
        {
            UtilityFunctions.DrawBackground();
            switch (CurrentState)
            {
            case GameState.ViewingMainMenu:
                MenuController.DrawMainMenu();
                break;

            case GameState.ViewingGameMenu:
                MenuController.DrawGameMenu();
                break;

            case GameState.AlteringSettings:
                MenuController.DrawSettings();
                break;

            case GameState.AlteringShips:
                MenuController.DrawShipsMenu();
                break;

            case GameState.Deploying:
                DeploymentController.DrawDeployment();
                break;

            case GameState.Discovering:
                DiscoveryController.DrawDiscovery();
                break;

            case GameState.EndingGame:
                EndingGameController.DrawEndOfGame();
                break;

            case GameState.ViewingHighScores:
                HighScoreController.DrawHighScores();
                break;
            }
            UtilityFunctions.DrawAnimations();
            SwinGame.RefreshScreen();
        }
Esempio n. 3
0
        /*<summary>
         * Handles the user SwinGame.
         *</summary>
         *<remarks>
         * Reads key and mouse input and converts these into
         * actions for the game to perform. The actions
         * performed depend upon the state of the game.
         *</remarks>
         */
        public static void HandleUserInput()
        {
            // Read incoming input events
            SwinGame.ProcessEvents();
            switch (CurrentState)
            {
            case GameState.ViewingMainMenu:
                MenuController.HandleMainMenuInput();
                break;

            case GameState.ViewingGameMenu:
                MenuController.HandleGameMenuInput();
                break;

            case GameState.AlteringSettings:
                MenuController.HandleSetupMenuInput();
                break;

            case GameState.AlteringShips:
                MenuController.HandleShipsMenuInput();
                break;

            case GameState.Deploying:
                DeploymentController.HandleDeploymentInput();
                break;

            case GameState.Discovering:
                DiscoveryController.HandleDiscoveryInput();
                break;

            case GameState.EndingGame:
                EndingGameController.HandleEndOfGameInput();
                break;

            case GameState.ViewingHighScores:
                HighScoreController.HandleHighScoreInput();
                break;
            }
            UtilityFunctions.UpdateAnimations();
        }
        /*<summary>
         * Handles user input for the Deployment phase of the game.
         *</summary>
         *<remarks>
         * Involves selecting the ships, deloying ships, changing the direction
         * of the ships to add, randomising deployment, end then ending
         * deployment
         *</remarks>
         */
        public static void HandleDeploymentInput()
        {
            if (SwinGame.KeyTyped(KeyCode.vk_ESCAPE))
            {
                GameController.AddNewState(GameState.ViewingGameMenu);
            }

            if ((SwinGame.KeyTyped(KeyCode.vk_UP) || SwinGame.KeyTyped(KeyCode.vk_DOWN)))
            {
                _currentDirection = Direction.UpDown;
            }

            if ((SwinGame.KeyTyped(KeyCode.vk_LEFT) || SwinGame.KeyTyped(KeyCode.vk_RIGHT)))
            {
                _currentDirection = Direction.LeftRight;
            }

            if (SwinGame.KeyTyped(KeyCode.vk_r))
            {
                GameController.HumanPlayer.RandomizeDeployment();
            }

            if (SwinGame.MouseClicked(MouseButton.LeftButton))
            {
                ShipName selected;
                selected = GetShipMouseIsOver();
                if (GameController.ShipsToDeploy == 3)
                {
                    if ((selected != ShipName.None))
                    {
                        if ((selected != ShipName.Tug) && (selected != ShipName.Submarine))
                        {
                            _selectedShip = selected;
                        }
                    }
                    else
                    {
                        DeploymentController.DoDeployClick();
                    }
                }
                else if (GameController.ShipsToDeploy == 4)
                {
                    if (selected != ShipName.None)
                    {
                        if (selected != ShipName.Tug)
                        {
                            _selectedShip = selected;
                        }
                    }
                    else
                    {
                        DeploymentController.DoDeployClick();
                    }
                }
                else if ((selected != ShipName.None))
                {
                    _selectedShip = selected;
                }
                else
                {
                    DeploymentController.DoDeployClick();
                }

                if ((GameController.HumanPlayer.ReadyToDeploy && UtilityFunctions.IsMouseInRectangle(PLAY_BUTTON_LEFT, TOP_BUTTONS_TOP, PLAY_BUTTON_WIDTH, TOP_BUTTONS_HEIGHT)))
                {
                    GameController.EndDeployment();
                }
                else if (UtilityFunctions.IsMouseInRectangle(UP_DOWN_BUTTON_LEFT, TOP_BUTTONS_TOP, DIR_BUTTONS_WIDTH, TOP_BUTTONS_HEIGHT))
                {
                    _currentDirection = Direction.UpDown;
                }
                else if (UtilityFunctions.IsMouseInRectangle(LEFT_RIGHT_BUTTON_LEFT, TOP_BUTTONS_TOP, DIR_BUTTONS_WIDTH, TOP_BUTTONS_HEIGHT))
                {
                    _currentDirection = Direction.LeftRight;
                }
                else if (UtilityFunctions.IsMouseInRectangle(RANDOM_BUTTON_LEFT, TOP_BUTTONS_TOP, RANDOM_BUTTON_WIDTH, TOP_BUTTONS_HEIGHT))
                {
                    GameController.HumanPlayer.RandomizeDeployment();
                }
            }
        }