Gamepad support
This commit is contained in:
parent
87f841e8e1
commit
ed369cf718
24 changed files with 240 additions and 78 deletions
|
|
@ -1,50 +1,52 @@
|
|||
using Godot;
|
||||
using Newlon.Components.Level;
|
||||
|
||||
namespace Newlon;
|
||||
|
||||
public partial class Cursor : Node
|
||||
public partial class Cursor : Node2D
|
||||
{
|
||||
public static Cursor Instance { get; private set; }
|
||||
#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 override void _Ready()
|
||||
public enum CursorMode
|
||||
{
|
||||
Mouse,
|
||||
Gamepad
|
||||
}
|
||||
public override void _EnterTree()
|
||||
{
|
||||
Instance = this;
|
||||
SetDefaultCursor();
|
||||
}
|
||||
|
||||
public void UpdateCursor()
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
if (shovel)
|
||||
switch (Mode)
|
||||
{
|
||||
SetShovelCursor();
|
||||
return;
|
||||
case CursorMode.Mouse:
|
||||
break;
|
||||
case CursorMode.Gamepad:
|
||||
var vector = Input.GetVector("cursor_left", "cursor_right", "cursor_up", "cursor_down");
|
||||
|
||||
var set_position = GetGlobalMousePosition() + vector * (float)delta * sensitivity;
|
||||
|
||||
GetViewport().WarpMouse(GetGlobalTransformWithCanvas() * set_position);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if (plant)
|
||||
{
|
||||
SetPlantCursor();
|
||||
return;
|
||||
}
|
||||
|
||||
SetDefaultCursor() ;
|
||||
}
|
||||
|
||||
public void SetDefaultCursor()
|
||||
|
||||
}
|
||||
public static Vector2 GetCursorPosition()
|
||||
{
|
||||
Input.SetCustomMouseCursor(ResourceLoader.Load<Texture2D>("res://assets/sprites/atlases/cursor/default_arrow.png"),shape:Input.CursorShape.Arrow);
|
||||
Input.SetCustomMouseCursor(ResourceLoader.Load<Texture2D>("res://assets/sprites/atlases/cursor/default_point.png"),shape:Input.CursorShape.PointingHand);
|
||||
}
|
||||
|
||||
public void SetPlantCursor()
|
||||
{
|
||||
Input.SetCustomMouseCursor(ResourceLoader.Load<Texture2D>("res://assets/sprites/atlases/cursor/plant_arrow.png"));
|
||||
}
|
||||
|
||||
public void SetShovelCursor()
|
||||
{
|
||||
Input.SetCustomMouseCursor(ResourceLoader.Load<Texture2D>("res://assets/sprites/atlases/cursor/shovel_arrow.png"));
|
||||
return Instance.GetGlobalMousePosition();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue