// Update is called once per frame void Update() { //if a new button is highlighted, play the move cursor sound if (prevSelectedButton != EventSystem.current.currentSelectedGameObject) { SoundManager.instance.MoveCursor(); prevSelectedButton = EventSystem.current.currentSelectedGameObject; } //check scene state //depending on the state, if a new button is selected, call a method which will update text fields, move UI elements, etc if (choosingUnit && EventSystem.current.currentSelectedGameObject != currentSelectedUnit && EventSystem.current.currentSelectedGameObject != null && EventSystem.current.currentSelectedGameObject.transform.parent != proceedContainer.transform) { currentSelectedUnit = EventSystem.current.currentSelectedGameObject; UnitOnSelect(); } if (choosingItem && EventSystem.current.currentSelectedGameObject != currentSelectedItem && EventSystem.current.currentSelectedGameObject != null) { currentSelectedItem = EventSystem.current.currentSelectedGameObject; ItemOnSelect(); } if (choosingTargetUnit && EventSystem.current.currentSelectedGameObject != currentSelectedTargetUnit && EventSystem.current.currentSelectedGameObject != null) { currentSelectedTargetUnit = EventSystem.current.currentSelectedGameObject; TargetUnitOnSelect(); } if (choosingTargetItem && EventSystem.current.currentSelectedGameObject != currentSelectedTargetItem && EventSystem.current.currentSelectedGameObject != null) { currentSelectedTargetItem = EventSystem.current.currentSelectedGameObject; TargetItemOnSelect(); } if (choosingSlot && EventSystem.current.currentSelectedGameObject != currentSelectedEquip && EventSystem.current.currentSelectedGameObject != null) { currentSelectedEquip = EventSystem.current.currentSelectedGameObject; EquipOnSelect(); } if (choosingEquip && EventSystem.current.currentSelectedGameObject != currentSelectedTargetEquip && EventSystem.current.currentSelectedGameObject != null) { currentSelectedTargetEquip = EventSystem.current.currentSelectedGameObject; TargetEquipOnSelect(); } //behavior for cancel input in different states //mostly involves setting state flags and activating and deactivating different UI windows if (Input.GetButtonDown("Cancel")) { if (!choosingUnit) { SoundManager.instance.MenuCancel(); } if (buttonContainerOpen) { buttonContainerOpen = false; choosingUnit = true; infoContainer.SetActive(true); proceedContainer.SetActive(true); buttonContainer.SetActive(false); ReengageUnitButtons(UnitHandle); } else if (choosingItem) { choosingItem = false; buttonContainerOpen = true; itemContainer.SetActive(false); buttonContainer.SetActive(true); swapItemsButton.Select(); prevSelectedButton = swapItemsButton.gameObject; } else if (choosingTargetUnit) { choosingTargetUnit = false; choosingItem = true; DisengageButtons(unitButtonList); ReengageItemButtons(itemButtonList); itemButtonList[itemListIndex].Select(); prevSelectedButton = itemButtonList[itemListIndex].gameObject; targetItemContainer.SetActive(false); rightSheet.SetActive(false); currentSelectedItem = null; } else if (choosingTargetItem) { choosingTargetItem = false; choosingTargetUnit = true; ReengageUnitButtons(TargetUnitHandle); DisengageButtons(targetItemButtonList); unitButtonList[partyUnitIndex].interactable = false; unitButtonList[targetUnitIndex].Select(); prevSelectedButton = unitButtonList[targetUnitIndex].gameObject; targetItemToolTip.SetActive(false); currentSelectedTargetItem = null; } else if (proceedBool) { CancelHandle(); } else if (quitBool) { QuitCancelHandle(); } else if (choosingSlot) { choosingSlot = false; buttonContainerOpen = true; equipContainer.SetActive(false); buttonContainer.SetActive(true); equipButton.Select(); prevSelectedButton = equipButton.gameObject; } else if (choosingEquip) { currentUnitScript.Unequip(gameManager.equipDict[currentUnitScript.equipmentList[currentSelectedEquip.transform.GetSiblingIndex()]].GetComponent <EquipmentScript>(), currentSelectedEquip.transform.GetSiblingIndex()); currentUnitScript.Equip(preEquip, currentSelectedEquip.transform.GetSiblingIndex()); choosingEquip = false; choosingSlot = true; //rather than delete buttons, they are set inactive and can be activated and populated when needed later for (int i = 1; i < equipmentListContainer.transform.GetChild(0).childCount; i++) { equipmentListContainer.transform.GetChild(0).GetChild(i).gameObject.SetActive(false); } rightSheet.SetActive(false); infoContainer.SetActive(false); equipmentListContainer.SetActive(false); equipmentScrollbar.SetActive(false); targetEquipToolTip.SetActive(false); equipContainer.SetActive(true); currentSelectedEquip.GetComponent <Button>().Select(); prevSelectedButton = currentSelectedEquip; currentSelectedEquip = null; currentSelectedTargetEquip = null; } } }