mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-08 05:35:55 +00:00
Reticule cursor for gameplay
This commit is contained in:
parent
eae2b142f9
commit
b40f32bf5e
7 changed files with 76 additions and 8 deletions
|
|
@ -90,7 +90,7 @@ public partial class GameManager : Node2D
|
|||
}
|
||||
|
||||
|
||||
GlobalState.Instance.ResizeCursor();
|
||||
GlobalState.Instance.ChangeCursor(false);
|
||||
|
||||
if (GlobalState.Instance.SessionSettings.AllowSaving)
|
||||
{
|
||||
|
|
@ -359,17 +359,21 @@ public partial class GameManager : Node2D
|
|||
case GameState.Dialogue:
|
||||
case GameState.Shop:
|
||||
case GameState.Inventory:
|
||||
GlobalState.Instance.ChangeCursor(true);
|
||||
|
||||
GetTree().SetPause(true);
|
||||
//Input.MouseMode = Input.MouseModeEnum.Visible;
|
||||
break;
|
||||
case GameState.Playing:
|
||||
case GameState.Controlling:
|
||||
//Input.MouseMode = Input.MouseModeEnum.Confined;
|
||||
GlobalState.Instance.ChangeCursor(false);
|
||||
DelayedUnpause();
|
||||
//CallDeferred(MethodName.DelayedUnpause);
|
||||
//GetTree().SetPause(false);
|
||||
break;
|
||||
case GameState.Menu:
|
||||
GlobalState.Instance.ChangeCursor(true);
|
||||
//Input.MouseMode = Input.MouseModeEnum.Visible;
|
||||
DelayedUnpause();
|
||||
//CallDeferred(MethodName.DelayedUnpause);
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ public partial class MainMenu : CanvasLayer
|
|||
public override void _Ready()
|
||||
{
|
||||
DefaultSelectedButton.GrabFocus();
|
||||
GlobalState.Instance.ChangeCursor(true);
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ public partial class PauseMenu : Control
|
|||
private void QuitButtonOnPressed()
|
||||
{
|
||||
_gameManager.Unpause();
|
||||
GlobalState.Instance.ChangeCursor(true);
|
||||
GlobalState.Instance.GotoScene(MainMenuScene);
|
||||
//GetTree().ChangeSceneToFile(MainMenuScene);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue