mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 08:45:33 +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);
|
||||
}
|
||||
|
|
|
|||
BIN
Sprites/UI/Aiming_Reticule_Cursor.ase
Normal file
BIN
Sprites/UI/Aiming_Reticule_Cursor.ase
Normal file
Binary file not shown.
BIN
Sprites/UI/Aiming_Reticule_Cursor.png
(Stored with Git LFS)
Normal file
BIN
Sprites/UI/Aiming_Reticule_Cursor.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
Sprites/UI/Aiming_Reticule_Cursor.png.import
Normal file
34
Sprites/UI/Aiming_Reticule_Cursor.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b76bhqv247nft"
|
||||
path="res://.godot/imported/Aiming_Reticule_Cursor.png-de5667f1b24c9f53f238e1f246925739.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Sprites/UI/Aiming_Reticule_Cursor.png"
|
||||
dest_files=["res://.godot/imported/Aiming_Reticule_Cursor.png-de5667f1b24c9f53f238e1f246925739.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
Loading…
Add table
Add a link
Reference in a new issue