コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        if (device != null)
        {
            #region StateManagement
            // Activation (Decativated -> Activated)
            if (device.Action1.WasPressed &&
                state == SelectionPanelState.Deactivated)
            {
                state = SelectionPanelState.Activated;
                AudioManager.instance.PlaySound("UI_panelActivation", "UI");
            }

            // Validation (Activated -> Validated)
            else if (device.Action1.WasPressed &&
                     state == SelectionPanelState.Activated &&
                     CharacterSelectionScreen.selectableCharacters[characterSelected] == true &&
                     select.inputActivationScript.inputOK)
            {
                state = SelectionPanelState.Validated;
                AudioManager.instance.PlaySound("UI_validate", "UI");
                InstantiatePlayer();
                validatedCharacter = newPlayer;
            }

            // Deactivation (Activated -> Deactivated)
            if (device.Action2.WasPressed &&
                state == SelectionPanelState.Activated)
            {
                state = SelectionPanelState.Deactivated;
                AudioManager.instance.PlaySound("UI_cancel", "UI");
                device = null;
            }

            // Unvalidation (Validated -> Activated)
            else if (device.Action2.WasPressed &&
                     state == SelectionPanelState.Validated)
            {
                state = SelectionPanelState.Activated;
                UIElements.SetActive(true);
                AudioManager.instance.PlaySound("UI_cancel", "UI");
                select.ready = false;
                CharacterSelectionScreen.selectableCharacters [characterSelected] = true;
                Destroy(newPlayer.gameObject);
                blockCharacterSelection = false;
                device.StopVibration();
            }

            // Trying to validate on a character not avalaible
            else if (device.Action1.WasPressed &&
                     state == SelectionPanelState.Activated &&
                     CharacterSelectionScreen.selectableCharacters[characterSelected] == false)
            {
                //Play error sound
                //Display "not available text"
            }
            #endregion
        }

        #region ActionsToDoForEachState
        switch (state)
        {
        case SelectionPanelState.Deactivated:
            characterSprite.gameObject.SetActive(false);
            guid.SetActive(true);
            leftArrow.SetActive(false);
            rightArrow.SetActive(false);
            doorDownAnimator.SetBool("open", false);
            doorUpAnimator.SetBool("open", false);
            notAvailable.gameObject.SetActive(false);
            border.sprite = basicBorder;
            break;

        case SelectionPanelState.Activated:
            if (CharacterSelectionScreen.selectableCharacters[characterSelected] == false)
            {
                if (characterSelected < GameManager.nbOfCharacters - 1)
                {
                    FindNextSelectableCharacter(characterSelected + 1);
                }
                else
                {
                    FindNextSelectableCharacter(0);
                }
            }
            UIElements.SetActive(true);
            RoomElements.SetActive(false);
            characterSprite.gameObject.SetActive(true);
            guid.SetActive(true);
            leftArrow.SetActive(true);
            rightArrow.SetActive(true);
            doorDownAnimator.SetBool("open", true);
            doorUpAnimator.SetBool("open", true);
            characterSprite.sprite = characterSprites[characterSelected];
            //Activate character selection
            CharacterSelection();
            border.sprite = basicBorder;
            break;

        case SelectionPanelState.Validated:
            border.sprite = validatedBorders[characterSelected];
            guid.SetActive(false);
            CharacterSelectionScreen.selectableCharacters [characterSelected] = false;
            blockCharacterSelection = true;
            UIElements.SetActive(false);
            RoomElements.SetActive(true);
            if (!MatchStart.gameHasStarted)
            {
                MatchStart.gameHasStarted = true;
            }
            if (device.CommandWasPressed)
            {
                if (tract)
                {
                    tract = false;
                }
                else if (!tract)
                {
                    tract = true;
                }
                AudioManager.instance.PlaySound("UI_pick", "UI");
                newPlayer.GetComponentInChildren <Hook>().inverseRetractation = tract;
            }
            break;
        }
        #endregion
    }
コード例 #2
0
 void OnEnable()
 {
     state = SelectionPanelState.Deactivated;
 }