// 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 }
void OnEnable() { state = SelectionPanelState.Deactivated; }