Files
butchers-games-test/Assets/Scripts/Game/App/InputController.cs
T
2026-08-14 04:21:29 +03:00

84 lines
1.6 KiB
C#

using UnityEngine;
using OHM.UnityToolkit;
using UnityEngine.Serialization;
public class InputController : MonoBehaviour
{
[SerializeField]
[FormerlySerializedAs("core")]
private CoreController _core;
private bool _downValid;
private Vector2 GetTouchPos()
{
if (Input.touchCount >= 1)
{
return Input.GetTouch(0).position;
}
return Input.mousePosition;
}
private bool TouchDown()
{
if (Input.touchCount >= 1)
{
return Input.GetTouch(0).phase == TouchPhase.Began;
}
return Input.GetMouseButtonDown(0);
}
private bool TouchHold()
{
if (Input.touchCount >= 1)
{
TouchPhase phase = Input.GetTouch(0).phase;
return phase == TouchPhase.Moved || phase == TouchPhase.Stationary;
}
return Input.GetMouseButton(0);
}
private bool TouchUp()
{
if (Input.touchCount >= 1)
{
return Input.GetTouch(0).phase == TouchPhase.Ended;
}
return Input.GetMouseButtonUp(0);
}
private void Update()
{
Vector2 touchPos = GetTouchPos();
if (!UIUtils.IsInputBlocked(touchPos) && TouchDown())
{
IInputsListener listener = _core.GetCurrentInputsListener();
if (listener != null)
{
listener.InputDown(touchPos);
}
_downValid = true;
}
else if (_downValid)
{
if (TouchHold())
{
IInputsListener listener2 = _core.GetCurrentInputsListener();
if (listener2 != null)
{
listener2.InputMove(touchPos);
}
}
else if (TouchUp())
{
_downValid = false;
IInputsListener listener3 = _core.GetCurrentInputsListener();
if (listener3 != null)
{
listener3.InputUp();
}
}
}
}
}