Files
spacerace/Assets/Src/UI/MenuControls.cs
T
2023-08-01 16:32:49 +10:00

80 lines
1.7 KiB
C#

using UnityEngine;
using UnityEngine.UIElements;
using UnityEngine.InputSystem;
public class MenuControls : MonoBehaviour, SpaceRaceInput.IMenuActions {
UIDocument menuDoc;
[SerializeField]
UIDocument timingDoc;
[SerializeField]
ShipControls shipControls;
MenuUI menuUi;
[SerializeField]
TimingUI timingUi;
SpaceRaceInput input;
bool visible = false;
void Awake() {
menuDoc = GetComponent<UIDocument>();
if (input == null) {
input = new SpaceRaceInput();
input.menu.SetCallbacks(this);
}
input.menu.Enable();
menuUi = GetComponent<MenuUI>();
if (!menuUi) {
Debug.LogError("No MenuUI");
return;
}
Hide();
}
void OnDestroy() {
input.menu.RemoveCallbacks(this);
}
void Show() {
visible = true;
UnityEngine.Cursor.lockState = CursorLockMode.None;
menuDoc.enabled = true;
menuUi.AddTracks();
// take control off the ship
timingDoc.enabled = false;
timingUi.enabled = false;
shipControls.enabled = false;
}
void Hide() {
visible = false;
UnityEngine.Cursor.lockState = CursorLockMode.Locked;
menuDoc.enabled = false;
// resume control of the ship
timingDoc.enabled = true;
timingUi.enabled = true;
shipControls.enabled = true;
}
public void OnToggleMenu(InputAction.CallbackContext ctx) {
visible = !visible;
// Debug.Log($"Menu {visible}");
if (visible) {
Show();
return;
}
Hide();
return;
}
}