Example #1
0
    void ChangeState(State state)
    {
        switch (state)
        {
        case State.Waiting:
            // Wait for at least 2 players
            WaitingUI.SetActive(true);

            _currentState = State.Waiting;
            _updateState  = UpdateWaiting;
            break;

        case State.Ready:
            // Start the countdown, players can still join
            WaitingUI.SetActive(false);
            ReadyUI.SetActive(true);

            _currentState = State.Ready;
            _updateState  = UpdateReady;

            // start countdown of 10 seconds, then change state to ready
            StartCoroutine(ChangeStateAfter(State.InProgess, 10));
            break;

        case State.InProgess:
            // Game in progress
            ReadyUI.SetActive(false);
            InProgressUI.SetActive(true);

            _gameMode.Setup(this, _players);
            foreach (KeyValuePair <int, PlayerController> player in _players)
            {
                player.Value.CanMove  = true;
                player.Value.CanShoot = true;
            }

            _currentState = State.InProgess;
            _updateState  = UpdateInProgress;
            break;

        case State.GameOver:
            // Game is over, designate the winner
            InProgressUI.SetActive(false);
            GameOverUI.SetActive(true);

            foreach (KeyValuePair <int, PlayerController> player in _players)
            {
                player.Value.CanMove  = false;
                player.Value.CanShoot = false;
            }

            _currentState = State.GameOver;
            _updateState  = UpdateGameOver;
            break;
        }
    }
Example #2
0
        /**
         * Will change the update state to the given update state
         * This will Determine what objects receive updates and which objects are visible
         * @param newState
         */
        internal void setUpdateState(updateState newState)
        {
            if (active != newState)
            {
                //In Game
                if (newState == updateState.INGAME)
                {
                    player.visible = true;
                    player.getLight().visible = true;
                    powerBar.setVisibility(true);
                    laserButton.setVisibility(true, true);
                    wideButton.setVisibility(true, true);
                    mediumButton.setVisibility(true, true);
                    userText.visible         = true;
                    typeSelectedText.visible = true;

                    mainMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                    mainMenue.setVisibility(false, true);
                    escapeMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                    escapeMenue.setVisibility(false, true);
                    transitionMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                    transitionMenue.setVisibility(false, true);
                    active = newState;
                }
                //Main Menue
                else if (newState == updateState.MAINMENUE)
                {
                    player.visible = false;
                    player.getLight().visible = false;
                    powerBar.setVisibility(false);
                    laserButton.setVisibility(false, true);
                    wideButton.setVisibility(false, true);
                    mediumButton.setVisibility(false, true);
                    userText.visible         = false;
                    typeSelectedText.visible = false;
                    enemies.RemoveAllEnemies();
                    mediumButton.setSparcleVisiblity(false);
                    wideButton.setSparcleVisiblity(false);
                    laserButton.setSparcleVisiblity(false);
                    if (currentLevel != null)
                    {
                        currentLevel.end();
                    }
                    EnemySoundManager.clear();

                    mainMenue.setVisibility(true, true);
                    mainMenue.setState(MenueSystem.Panel.PanelState.IDLE, true);

                    escapeMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                    escapeMenue.setVisibility(false, true);
                    transitionMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                    transitionMenue.setVisibility(false, true);
                    active = newState;
                    setHeartCount(0);
                }
                //Transition Menue
                else if (newState == updateState.TRANSITION)
                {
                    if (state == GameState.EndState.LOSE || state == GameState.EndState.WIN)
                    {
                        transitionMenue.setVisibility(true, true);
                        transitionMenue.setState(MenueSystem.Panel.PanelState.IDLE, true);

                        mainMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                        mainMenue.setVisibility(false, true);
                        escapeMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                        escapeMenue.setVisibility(false, true);
                        active = newState;

                        if (state == GameState.EndState.LOSE)
                        {
                            transitionMenue.getPanel(1).setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                            ((MenueSystem.Label)transitionMenue.getPanel(2)).setText(((LevelButton)mainMenue.getPanel(2).getPanel(0).getPanel(LevelNumber)).loseMessage);
                        }
                        else
                        {
                            if (((LevelButton)transitionMenue.getPanel(1)).gameLevel != null)
                            {
                                transitionMenue.getPanel(1).setState(MenueSystem.Panel.PanelState.IDLE, true);
                            }
                            else
                            {
                                transitionMenue.getPanel(1).setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                            }
                            ((MenueSystem.Label)transitionMenue.getPanel(2)).setText(((LevelButton)mainMenue.getPanel(2).getPanel(0).getPanel(LevelNumber)).winMessage);
                        }
                    }
                    else
                    {
                        setUpdateState(updateState.ESC);
                    }
                }
                //Escape Menu
                else if (newState == updateState.ESC)
                {
                    escapeMenue.setVisibility(true, true);
                    escapeMenue.setState(MenueSystem.Panel.PanelState.IDLE, true);

                    mainMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                    mainMenue.setVisibility(false, true);
                    transitionMenue.setState(MenueSystem.Panel.PanelState.INACTIVE, true);
                    transitionMenue.setVisibility(false, true);
                    active = newState;
                }
            }
        }
    void ChangeState(State state)
    {
        switch (state) {
        case State.Waiting:
            // Wait for at least 2 players
            WaitingUI.SetActive(true);

            _currentState = State.Waiting;
            _updateState = UpdateWaiting;
            break;
        case State.Ready:
            // Start the countdown, players can still join
            WaitingUI.SetActive(false);
            ReadyUI.SetActive(true);

            _currentState = State.Ready;
            _updateState = UpdateReady;

            // start countdown of 10 seconds, then change state to ready
            StartCoroutine(ChangeStateAfter(State.InProgess, 10));
            break;
        case State.InProgess:
            // Game in progress
            ReadyUI.SetActive(false);
            InProgressUI.SetActive(true);

            _gameMode.Setup(this, _players);
            foreach (KeyValuePair<int, PlayerController> player in _players) {
                player.Value.CanMove = true;
                player.Value.CanShoot = true;
            }

            _currentState = State.InProgess;
            _updateState = UpdateInProgress;
            break;
        case State.GameOver:
            // Game is over, designate the winner
            InProgressUI.SetActive(false);
            GameOverUI.SetActive(true);

            foreach (KeyValuePair<int, PlayerController> player in _players) {
                player.Value.CanMove = false;
                player.Value.CanShoot = false;
            }

            _currentState = State.GameOver;
            _updateState = UpdateGameOver;
            break;
        }
    }