56 lines
1.7 KiB
C#
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();
|
|
}
|
|
}
|