mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-09 01:55:54 +00:00
Reticule cursor for gameplay
This commit is contained in:
parent
eae2b142f9
commit
b40f32bf5e
7 changed files with 76 additions and 8 deletions
|
|
@ -23,7 +23,7 @@ public partial class GlobalState : Node
|
|||
private Control _loadingPlaque;
|
||||
|
||||
private readonly StringName _menuMouseTexturePath = "uid://d3oxwik1uoe4j";
|
||||
private readonly StringName _reticuleMouseTexturePath = "uid://8nns6w0skiy3";
|
||||
private readonly StringName _reticuleMouseTexturePath = "uid://b76bhqv247nft";
|
||||
|
||||
private readonly StringName _mapsDatabaseResource = "uid://blf2ii0j3fqil";
|
||||
|
||||
|
|
@ -31,7 +31,11 @@ public partial class GlobalState : Node
|
|||
|
||||
private Texture2D _menuMouseTexture;
|
||||
private Image _menuMouseImage;
|
||||
private Texture2D _reticuleMouseTexture;
|
||||
private Image _reticuleMouseImage;
|
||||
|
||||
public bool UseMenuCursor { get; set; } = true;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Instance = this;
|
||||
|
|
@ -48,6 +52,9 @@ public partial class GlobalState : Node
|
|||
|
||||
_menuMouseTexture = ResourceLoader.Load<Texture2D>(_menuMouseTexturePath);
|
||||
_menuMouseImage = _menuMouseTexture.GetImage();
|
||||
|
||||
_reticuleMouseTexture = ResourceLoader.Load<Texture2D>(_reticuleMouseTexturePath);
|
||||
_reticuleMouseImage = _reticuleMouseTexture.GetImage();
|
||||
|
||||
GetTree().GetRoot().SizeChanged += OnSizeChanged;
|
||||
//_mouseTexture =
|
||||
|
|
@ -60,6 +67,12 @@ public partial class GlobalState : Node
|
|||
ResizeCursor();
|
||||
}
|
||||
|
||||
public void ChangeCursor(bool useMenu)
|
||||
{
|
||||
UseMenuCursor = useMenu;
|
||||
ResizeCursor();
|
||||
}
|
||||
|
||||
public void ResizeCursor()
|
||||
{
|
||||
var root = GetTree().GetRoot();
|
||||
|
|
@ -70,7 +83,7 @@ public partial class GlobalState : Node
|
|||
int scaleY = newSize.Y / baseSize.Y;
|
||||
int scale = Math.Min(scaleX, scaleY); // Ensure pixel-perfect scaling
|
||||
|
||||
ResizeCursor(scale / 2);
|
||||
ResizeCursor(UseMenuCursor ? scale / 2 : scale, UseMenuCursor);
|
||||
}
|
||||
|
||||
public void GotoScene(string path)
|
||||
|
|
@ -264,15 +277,27 @@ public partial class GlobalState : Node
|
|||
return true;
|
||||
}
|
||||
|
||||
public void ResizeCursor(float scale)
|
||||
private void ResizeCursor(float scale, bool useMenuCursor)
|
||||
{
|
||||
var scaled = (Image)_menuMouseImage.Duplicate();
|
||||
|
||||
var size = (Vector2I)(scale * _menuMouseTexture.GetSize());
|
||||
Image scaled;
|
||||
Vector2I size;
|
||||
if (useMenuCursor)
|
||||
{
|
||||
scaled = (Image)_menuMouseImage.Duplicate();
|
||||
size = (Vector2I)(scale * _menuMouseTexture.GetSize());
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
scaled = (Image)_reticuleMouseImage.Duplicate();
|
||||
size = (Vector2I)(scale * _reticuleMouseTexture.GetSize());
|
||||
}
|
||||
|
||||
scaled.Resize(size.X, size.Y, Image.Interpolation.Nearest);
|
||||
|
||||
DisplayServer.CursorSetCustomImage(scaled);
|
||||
Input.SetCustomMouseCursor(scaled, Input.CursorShape.Arrow, useMenuCursor ? Vector2.Zero : new Vector2(size.X / 2,size.Y / 2));
|
||||
|
||||
//DisplayServer.CursorSetCustomImage(scaled);
|
||||
}
|
||||
|
||||
public void RestartLevel()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue