r2mods/ilspy_dump/ror2_csproj/RoR2.UI/HGGamepadInputEvent.cs

69 lines
1.5 KiB
C#
Raw Normal View History

2024-10-04 07:26:37 +00:00
using UnityEngine;
using UnityEngine.Events;
namespace RoR2.UI;
[RequireComponent(typeof(MPEventSystemLocator))]
public class HGGamepadInputEvent : MonoBehaviour
{
public string actionName;
public UnityEvent actionEvent;
public UILayerKey requiredTopLayer;
public GameObject[] enabledObjectsIfActive;
private MPEventSystemLocator eventSystemLocator;
public bool RequireInputMapperNotRunning;
private bool couldAcceptInput;
protected MPEventSystem eventSystem => eventSystemLocator?.eventSystem;
protected void Awake()
{
eventSystemLocator = GetComponent<MPEventSystemLocator>();
}
protected void Update()
{
bool flag = CanAcceptInput();
if (couldAcceptInput != flag)
{
GameObject[] array = enabledObjectsIfActive;
for (int i = 0; i < array.Length; i++)
{
array[i].SetActive(flag);
}
}
if (CanAcceptInput() && eventSystem.player.GetButtonDown(actionName))
{
actionEvent.Invoke();
}
couldAcceptInput = flag;
}
protected bool CanAcceptInput()
{
if (base.gameObject.activeInHierarchy && (!requiredTopLayer || requiredTopLayer.representsTopLayer))
{
MPEventSystem mPEventSystem = eventSystem;
if ((object)mPEventSystem != null && mPEventSystem.currentInputSource == MPEventSystem.InputSource.Gamepad)
{
if (RequireInputMapperNotRunning)
{
if (!InputMapperHelper.anyRemapperListening)
{
return InputMapperHelper.anyRemapperListeningStopTimestamp != Time.unscaledTime;
}
return false;
}
return true;
}
}
return false;
}
}