using Godot; using Newlon.Components.Level; namespace Newlon; public partial class Cursor : Node2D { #region Textures private readonly Texture2D defaultArrow = ResourceLoader.Load("uid://c20dwjohaljdk"); private readonly Texture2D defaultPoint = ResourceLoader.Load("uid://cw0rqtl8ulndd"); private readonly Texture2D shovelArrow = ResourceLoader.Load("uid://dq375kjjo17g2"); private readonly Texture2D plantArrow = ResourceLoader.Load("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(); } }