Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/SRDebugger/Services/Implementation/DebugTriggerImpl.cs
2026-02-21 16:45:37 +08:00

151 lines
3.5 KiB
C#

using System;
using SRDebugger.Internal;
using SRDebugger.UI.Other;
using SRF;
using SRF.Service;
using UnityEngine;
using UnityEngine.UI;
namespace SRDebugger.Services.Implementation
{
[Service(typeof(IDebugTriggerService))]
public class DebugTriggerImpl : SRServiceBase<IDebugTriggerService>, IDebugTriggerService
{
private PinAlignment _position;
private TriggerRoot _trigger;
public bool IsEnabled
{
get
{
return _trigger != null && _trigger.CachedGameObject.activeSelf;
}
set
{
if (value && _trigger == null)
{
CreateTrigger();
}
if (_trigger != null)
{
_trigger.CachedGameObject.SetActive(value);
}
}
}
public PinAlignment Position
{
get
{
return _position;
}
set
{
if (_trigger != null)
{
SetTriggerPosition(_trigger.TriggerTransform, value);
}
_position = value;
}
}
protected override void Awake()
{
base.Awake();
UnityEngine.Object.DontDestroyOnLoad(base.CachedGameObject);
base.CachedTransform.SetParent(Hierarchy.Get("SRDebugger"), true);
base.name = "Trigger";
}
protected override void Update()
{
base.Update();
if ((bool)_trigger && (bool)_trigger.TripleTapButton)
{
_trigger.TripleTapButton.GetComponent<Image>().color = new Color(1f, 1f, 1f, 0f);
}
}
private void CreateTrigger()
{
TriggerRoot triggerRoot = Resources.Load<TriggerRoot>("SRDebugger/UI/Prefabs/Trigger");
if (triggerRoot == null)
{
Debug.LogError("[SRDebugger] Error loading trigger prefab");
return;
}
_trigger = SRInstantiate.Instantiate(triggerRoot);
_trigger.CachedTransform.SetParent(base.CachedTransform, true);
SetTriggerPosition(_trigger.TriggerTransform, _position);
switch (Settings.Instance.TriggerBehaviour)
{
case Settings.TriggerBehaviours.TripleTap:
_trigger.TripleTapButton.onClick.AddListener(OnTriggerButtonClick);
_trigger.TapHoldButton.gameObject.SetActive(false);
break;
case Settings.TriggerBehaviours.TapAndHold:
_trigger.TapHoldButton.onLongPress.AddListener(OnTriggerButtonClick);
_trigger.TripleTapButton.gameObject.SetActive(false);
break;
case Settings.TriggerBehaviours.DoubleTap:
_trigger.TripleTapButton.RequiredTapCount = 2;
_trigger.TripleTapButton.onClick.AddListener(OnTriggerButtonClick);
_trigger.TapHoldButton.gameObject.SetActive(false);
break;
default:
throw new Exception("Unhandled TriggerBehaviour");
}
SRDebuggerUtil.EnsureEventSystemExists();
}
private void OnLevelWasLoaded(int level)
{
SRDebuggerUtil.EnsureEventSystemExists();
}
private void OnTriggerButtonClick()
{
SRDebug.Instance.ShowDebugPanel();
base.transform.parent.GetComponentInChildren<SRTabController>().TabContentsContainer.gameObject.SetActive(true);
}
private static void SetTriggerPosition(RectTransform t, PinAlignment position)
{
float x = 0f;
float y = 0f;
float x2 = 0f;
float y2 = 0f;
switch (position)
{
case PinAlignment.TopLeft:
case PinAlignment.TopRight:
y = 1f;
y2 = 1f;
break;
case PinAlignment.BottomLeft:
case PinAlignment.BottomRight:
y = 0f;
y2 = 0f;
break;
}
switch (position)
{
case PinAlignment.TopLeft:
case PinAlignment.BottomLeft:
x = 0f;
x2 = 0f;
break;
case PinAlignment.TopRight:
case PinAlignment.BottomRight:
x = 1f;
x2 = 1f;
break;
}
t.pivot = new Vector2(x, y);
Vector2 anchorMax = (t.anchorMin = new Vector2(x2, y2));
t.anchorMax = anchorMax;
}
}
}