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

136 lines
2.9 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace RoR2.UI;
[RequireComponent(typeof(MPEventSystemLocator))]
public class MPScrollbar : Scrollbar
{
public bool allowAllEventSystems;
private MPEventSystemLocator eventSystemLocator;
private RectTransform viewPortRectTransform;
private EventSystem eventSystem => eventSystemLocator.eventSystem;
protected override void Awake()
{
base.Awake();
eventSystemLocator = GetComponent<MPEventSystemLocator>();
}
private Selectable FilterSelectable(Selectable selectable)
{
if ((bool)selectable)
{
MPEventSystemLocator component = selectable.GetComponent<MPEventSystemLocator>();
if (!component || component.eventSystem != eventSystemLocator.eventSystem)
{
selectable = null;
}
}
return selectable;
}
public bool InputModuleIsAllowed(BaseInputModule inputModule)
{
if (allowAllEventSystems)
{
return true;
}
EventSystem eventSystem = this.eventSystem;
if ((bool)eventSystem)
{
return inputModule == eventSystem.currentInputModule;
}
return false;
}
public override Selectable FindSelectableOnDown()
{
return FilterSelectable(base.FindSelectableOnDown());
}
public override Selectable FindSelectableOnLeft()
{
return FilterSelectable(base.FindSelectableOnLeft());
}
public override Selectable FindSelectableOnRight()
{
return FilterSelectable(base.FindSelectableOnRight());
}
public override Selectable FindSelectableOnUp()
{
return FilterSelectable(base.FindSelectableOnUp());
}
public override void OnPointerUp(PointerEventData eventData)
{
if (InputModuleIsAllowed(eventData.currentInputModule))
{
if ((bool)eventSystem && base.gameObject == eventSystem.currentSelectedGameObject)
{
base.enabled = false;
base.enabled = true;
}
base.OnPointerUp(eventData);
}
}
public override void OnSelect(BaseEventData eventData)
{
if (InputModuleIsAllowed(eventData.currentInputModule))
{
base.OnSelect(eventData);
}
}
public override void OnDeselect(BaseEventData eventData)
{
if (InputModuleIsAllowed(eventData.currentInputModule))
{
base.OnDeselect(eventData);
}
}
public override void OnPointerEnter(PointerEventData eventData)
{
if (InputModuleIsAllowed(eventData.currentInputModule))
{
base.OnPointerEnter(eventData);
}
}
public override void OnPointerExit(PointerEventData eventData)
{
if (InputModuleIsAllowed(eventData.currentInputModule))
{
base.OnPointerExit(eventData);
}
}
public override void OnPointerDown(PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Left)
{
if (IsInteractable() && base.navigation.mode != 0)
{
eventSystem.SetSelectedGameObject(base.gameObject, eventData);
}
base.OnPointerDown(eventData);
}
}
public override void Select()
{
if (!eventSystem.alreadySelecting)
{
eventSystem.SetSelectedGameObject(base.gameObject);
}
}
}