newlon/scripts/Cursor.cs
2025-07-28 18:03:26 +05:00

56 lines
1.7 KiB
C#

using Godot;
using Newlon.Components.Level;
namespace Newlon;
public partial class Cursor : Node2D
{
#region Textures
private readonly Texture2D defaultArrow = ResourceLoader.Load<Texture2D>("uid://c20dwjohaljdk");
private readonly Texture2D defaultPoint = ResourceLoader.Load<Texture2D>("uid://cw0rqtl8ulndd");
private readonly Texture2D shovelArrow = ResourceLoader.Load<Texture2D>("uid://dq375kjjo17g2");
private readonly Texture2D plantArrow = ResourceLoader.Load<Texture2D>("uid://dx123mhv4oee");
#endregion
public static Cursor Instance { get; private set; }
public bool shovel = false;
public bool plant = false;
public static CursorMode Mode = CursorMode.Mouse;
private float sensitivity = 200.0f;
public enum CursorMode
{
Mouse,
Gamepad
}
public override void _EnterTree()
{
Instance = this;
}
public override void _Process(double delta)
{
switch (Mode)
{
case CursorMode.Mouse:
break;
case CursorMode.Gamepad:
if (GamepadHandler.Instance.IsGamepadControlled == false) return;
var vector = Input.GetVector("cursor_left", "cursor_right", "cursor_up", "cursor_down");
if (vector == Vector2.Zero) return;
var set_position = GetGlobalMousePosition() + vector * (float)delta * sensitivity / (float)Engine.TimeScale;
GetViewport().WarpMouse(GetGlobalTransformWithCanvas() * set_position);
break;
}
}
public static Vector2 GetCursorPosition()
{
return Instance.GetGlobalMousePosition();
}
}