From 766cdff5ffa72b65d7f106658d1603f47739b2ba Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Fri, 27 Oct 2023 11:05:14 +0800 Subject: + init --- GameCode/CharacterCreatorNavigation.cs | 162 +++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 GameCode/CharacterCreatorNavigation.cs (limited to 'GameCode/CharacterCreatorNavigation.cs') diff --git a/GameCode/CharacterCreatorNavigation.cs b/GameCode/CharacterCreatorNavigation.cs new file mode 100644 index 0000000..46292e4 --- /dev/null +++ b/GameCode/CharacterCreatorNavigation.cs @@ -0,0 +1,162 @@ +using InControl; +using UnityEngine; +using UnityEngine.UI; + +public class CharacterCreatorNavigation : MonoBehaviour +{ + private int itemsInRow = 7; + + private CharacterCreator creator; + + private Transform grid; + + private Transform bar; + + private GameObject currentObject; + + private GameObject currentBarObject; + + private CharacterCreatorDragging dragging; + + public int x; + + public int y; + + public int barPos; + + private float cd; + + private void Awake() + { + creator = GetComponent(); + dragging = GetComponentInChildren(); + grid = base.transform.GetChild(0).GetChild(0); + bar = base.transform.GetChild(0).GetChild(1); + } + + private void Update() + { + if (creator.playerActions != null) + { + PlayerActionUpdate(creator.playerActions.Device); + } + else if (creator.playerActions == null) + { + creator.currentControl = MenuControllerHandler.menuControl; + for (int i = 0; i < InputManager.ActiveDevices.Count; i++) + { + InputDevice device = InputManager.ActiveDevices[i]; + PlayerActionUpdate(device); + } + } + } + + private void PlayerActionUpdate(InputDevice device) + { + cd += Time.unscaledDeltaTime; + if (device != null) + { + if (device.CommandWasPressed) + { + creator.Finish(); + } + dragging.rightStick = device.RightStick.Value; + GridMovement(device); + BarMovement(device); + } + } + + private void BarMovement(InputDevice device) + { + if (!currentBarObject) + { + MoveNav(0); + } + if (device.LeftTrigger.WasPressed) + { + MoveNav(-1); + } + if (device.RightTrigger.WasPressed) + { + MoveNav(1); + } + } + + private void MoveNav(int delta) + { + cd = 0f; + if (delta > 0) + { + barPos++; + } + if (delta < 0) + { + barPos--; + } + VerifyBarPos(); + } + + private void VerifyBarPos() + { + if ((bool)currentBarObject) + { + currentBarObject.GetComponent().exitEvent.Invoke(); + } + barPos = Mathf.Clamp(barPos, 0, 3); + currentBarObject = bar.GetChild(barPos).gameObject; + currentBarObject.GetComponent().enterEvent.Invoke(); + currentBarObject.GetComponent