diff options
author | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
commit | 766cdff5ffa72b65d7f106658d1603f47739b2ba (patch) | |
tree | 34d7799a94dfa9be182825577583c0fa6dc935f7 /GameCode/CharacterSelectionInstance.cs |
+ init
Diffstat (limited to 'GameCode/CharacterSelectionInstance.cs')
-rw-r--r-- | GameCode/CharacterSelectionInstance.cs | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/GameCode/CharacterSelectionInstance.cs b/GameCode/CharacterSelectionInstance.cs new file mode 100644 index 0000000..dd11ab4 --- /dev/null +++ b/GameCode/CharacterSelectionInstance.cs @@ -0,0 +1,157 @@ +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class CharacterSelectionInstance : MonoBehaviour +{ + public int currentlySelectedFace; + + public Player currentPlayer; + + public GameObject getReadyObj; + + private HoverEvent currentButton; + + private CharacterSelectionInstance[] selectors; + + private HoverEvent[] buttons; + + public bool isReady; + + private float counter; + + private void Start() + { + selectors = base.transform.parent.GetComponentsInChildren<CharacterSelectionInstance>(); + } + + public void ResetMenu() + { + base.transform.GetChild(0).gameObject.SetActive(value: false); + currentPlayer = null; + getReadyObj.gameObject.SetActive(value: false); + PlayerManager.instance.RemovePlayers(); + } + + private void OnEnable() + { + if (!base.transform.GetChild(0).gameObject.activeSelf) + { + GetComponentInChildren<GeneralParticleSystem>(includeInactive: true).gameObject.SetActive(value: true); + GetComponentInChildren<GeneralParticleSystem>(includeInactive: true).Play(); + } + } + + public void StartPicking(Player pickingPlayer) + { + currentPlayer = pickingPlayer; + currentlySelectedFace = 0; + GetComponentInChildren<GeneralParticleSystem>(includeInactive: true).gameObject.SetActive(value: false); + GetComponentInChildren<GeneralParticleSystem>(includeInactive: true).Stop(); + base.transform.GetChild(0).gameObject.SetActive(value: true); + getReadyObj.gameObject.SetActive(value: true); + if (currentPlayer.data.input.inputType == GeneralInput.InputType.Keyboard) + { + getReadyObj.GetComponent<TextMeshProUGUI>().text = "PRESS [SPACE] WHEN READY"; + } + else + { + getReadyObj.GetComponent<TextMeshProUGUI>().text = "PRESS [START] WHEN READY"; + } + buttons = base.transform.GetComponentsInChildren<HoverEvent>(); + for (int i = 0; i < buttons.Length; i++) + { + if (pickingPlayer.data.input.inputType == GeneralInput.InputType.Controller) + { + buttons[i].enabled = false; + buttons[i].GetComponent<Button>().interactable = false; + buttons[i].GetComponent<CharacterCreatorPortrait>().controlType = MenuControllerHandler.MenuControl.Controller; + continue; + } + buttons[i].enabled = true; + buttons[i].GetComponent<Button>().interactable = true; + buttons[i].GetComponent<CharacterCreatorPortrait>().controlType = MenuControllerHandler.MenuControl.Mouse; + Navigation navigation = buttons[i].GetComponent<Button>().navigation; + navigation.mode = Navigation.Mode.None; + buttons[i].GetComponent<Button>().navigation = navigation; + } + } + + public void ReadyUp() + { + isReady = !isReady; + bool flag = true; + for (int i = 0; i < selectors.Length; i++) + { + if (!selectors[i].isReady) + { + flag = false; + } + } + if (flag) + { + MainMenuHandler.instance.Close(); + GM_ArmsRace.instance.StartGame(); + } + if (currentPlayer.data.input.inputType == GeneralInput.InputType.Keyboard) + { + getReadyObj.GetComponent<TextMeshProUGUI>().text = (isReady ? "READY" : "PRESS [SPACE] WHEN READY"); + } + else + { + getReadyObj.GetComponent<TextMeshProUGUI>().text = (isReady ? "READY" : "PRESS [START] WHEN READY"); + } + } + + private void Update() + { + if (!currentPlayer) + { + return; + } + if (currentPlayer.data.input.inputType != 0) + { + if (Input.GetKeyDown(KeyCode.Space)) + { + ReadyUp(); + } + return; + } + if (currentPlayer.data.playerActions.Device.CommandWasPressed) + { + ReadyUp(); + } + HoverEvent component = buttons[currentlySelectedFace].GetComponent<HoverEvent>(); + if (currentButton != component) + { + if ((bool)currentButton) + { + currentButton.GetComponent<SimulatedSelection>().Deselect(); + } + currentButton = component; + currentButton.GetComponent<SimulatedSelection>().Select(); + } + counter += Time.deltaTime; + if (Mathf.Abs(currentPlayer.data.playerActions.Move.X) > 0.5f && counter > 0.2f) + { + if (currentPlayer.data.playerActions.Move.X > 0.5f) + { + currentlySelectedFace++; + } + else + { + currentlySelectedFace--; + } + counter = 0f; + } + if (currentPlayer.data.playerActions.Jump.WasPressed) + { + currentButton.GetComponent<Button>().onClick.Invoke(); + } + if (currentPlayer.data.playerActions.Device.Action4.WasPressed) + { + currentButton.GetComponent<CharacterCreatorPortrait>().EditCharacter(); + } + currentlySelectedFace = Mathf.Clamp(currentlySelectedFace, 0, buttons.Length - 1); + } +} |