93 lines
2.3 KiB
C#
93 lines
2.3 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using ConjureOS.Input;
|
|
|
|
namespace ConjureOS.ArcadeMenu
|
|
{
|
|
public class ConjureArcadeMenu : MonoBehaviour
|
|
{
|
|
public event Action OnOpen;
|
|
|
|
#if !ENABLE_INPUT_SYSTEM && ENABLE_LEGACY_INPUT_MANAGER
|
|
[SerializeField]
|
|
private string homeButton = "Home";
|
|
#endif
|
|
|
|
public bool IsOpened { get; private set; } = false;
|
|
|
|
private void Start()
|
|
{
|
|
#if !ENABLE_INPUT_SYSTEM && ENABLE_LEGACY_INPUT_MANAGER
|
|
if (!IsButtonAvailable(homeButton))
|
|
{
|
|
Debug.LogWarning(
|
|
$"ConjureOS: {nameof(homeButton)} in {nameof(ConjureArcadeMenu)} must be a valid action name ('{homeButton}' is not set up). " +
|
|
"To modify actions, go to 'Edit > Project Settings > Input Manager'.");
|
|
}
|
|
#endif
|
|
}
|
|
|
|
#if !ENABLE_INPUT_SYSTEM && ENABLE_LEGACY_INPUT_MANAGER
|
|
private bool IsButtonAvailable(string buttonName)
|
|
{
|
|
try
|
|
{
|
|
UnityEngine.Input.GetButton(buttonName);
|
|
return true;
|
|
}
|
|
catch (ArgumentException)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private bool WasButtonPressedThisFrame(string buttonName)
|
|
{
|
|
try
|
|
{
|
|
return UnityEngine.Input.GetButtonDown(buttonName);
|
|
}
|
|
catch (ArgumentException)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
private void Update()
|
|
{
|
|
#if ENABLE_INPUT_SYSTEM
|
|
foreach (ConjureArcadeController arcadeController in ConjureArcadeController.allControllers)
|
|
{
|
|
if (arcadeController.home.wasPressedThisFrame)
|
|
{
|
|
OpenArcadeMenu();
|
|
}
|
|
}
|
|
#elif ENABLE_LEGACY_INPUT_MANAGER
|
|
if (WasButtonPressedThisFrame(homeButton))
|
|
{
|
|
OpenArcadeMenu();
|
|
}
|
|
#endif
|
|
}
|
|
|
|
private void OpenArcadeMenu()
|
|
{
|
|
if (IsOpened)
|
|
{
|
|
return;
|
|
}
|
|
IsOpened = true;
|
|
|
|
// This will eventually open the arcade menu.
|
|
// However, for now, it will only close the game.
|
|
OnOpen?.Invoke();
|
|
|
|
#if UNITY_EDITOR
|
|
UnityEditor.EditorApplication.isPlaying = false;
|
|
#endif
|
|
Application.Quit();
|
|
}
|
|
}
|
|
} |