mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-18 18:43:47 +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)
|
if (GlobalState.Instance.SessionSettings.AllowSaving)
|
||||||
{
|
{
|
||||||
|
|
@ -359,17 +359,21 @@ public partial class GameManager : Node2D
|
||||||
case GameState.Dialogue:
|
case GameState.Dialogue:
|
||||||
case GameState.Shop:
|
case GameState.Shop:
|
||||||
case GameState.Inventory:
|
case GameState.Inventory:
|
||||||
|
GlobalState.Instance.ChangeCursor(true);
|
||||||
|
|
||||||
GetTree().SetPause(true);
|
GetTree().SetPause(true);
|
||||||
//Input.MouseMode = Input.MouseModeEnum.Visible;
|
//Input.MouseMode = Input.MouseModeEnum.Visible;
|
||||||
break;
|
break;
|
||||||
case GameState.Playing:
|
case GameState.Playing:
|
||||||
case GameState.Controlling:
|
case GameState.Controlling:
|
||||||
//Input.MouseMode = Input.MouseModeEnum.Confined;
|
//Input.MouseMode = Input.MouseModeEnum.Confined;
|
||||||
|
GlobalState.Instance.ChangeCursor(false);
|
||||||
DelayedUnpause();
|
DelayedUnpause();
|
||||||
//CallDeferred(MethodName.DelayedUnpause);
|
//CallDeferred(MethodName.DelayedUnpause);
|
||||||
//GetTree().SetPause(false);
|
//GetTree().SetPause(false);
|
||||||
break;
|
break;
|
||||||
case GameState.Menu:
|
case GameState.Menu:
|
||||||
|
GlobalState.Instance.ChangeCursor(true);
|
||||||
//Input.MouseMode = Input.MouseModeEnum.Visible;
|
//Input.MouseMode = Input.MouseModeEnum.Visible;
|
||||||
DelayedUnpause();
|
DelayedUnpause();
|
||||||
//CallDeferred(MethodName.DelayedUnpause);
|
//CallDeferred(MethodName.DelayedUnpause);
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public partial class GlobalState : Node
|
||||||
private Control _loadingPlaque;
|
private Control _loadingPlaque;
|
||||||
|
|
||||||
private readonly StringName _menuMouseTexturePath = "uid://d3oxwik1uoe4j";
|
private readonly StringName _menuMouseTexturePath = "uid://d3oxwik1uoe4j";
|
||||||
private readonly StringName _reticuleMouseTexturePath = "uid://8nns6w0skiy3";
|
private readonly StringName _reticuleMouseTexturePath = "uid://b76bhqv247nft";
|
||||||
|
|
||||||
private readonly StringName _mapsDatabaseResource = "uid://blf2ii0j3fqil";
|
private readonly StringName _mapsDatabaseResource = "uid://blf2ii0j3fqil";
|
||||||
|
|
||||||
|
|
@ -31,6 +31,10 @@ public partial class GlobalState : Node
|
||||||
|
|
||||||
private Texture2D _menuMouseTexture;
|
private Texture2D _menuMouseTexture;
|
||||||
private Image _menuMouseImage;
|
private Image _menuMouseImage;
|
||||||
|
private Texture2D _reticuleMouseTexture;
|
||||||
|
private Image _reticuleMouseImage;
|
||||||
|
|
||||||
|
public bool UseMenuCursor { get; set; } = true;
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
|
|
@ -49,6 +53,9 @@ public partial class GlobalState : Node
|
||||||
_menuMouseTexture = ResourceLoader.Load<Texture2D>(_menuMouseTexturePath);
|
_menuMouseTexture = ResourceLoader.Load<Texture2D>(_menuMouseTexturePath);
|
||||||
_menuMouseImage = _menuMouseTexture.GetImage();
|
_menuMouseImage = _menuMouseTexture.GetImage();
|
||||||
|
|
||||||
|
_reticuleMouseTexture = ResourceLoader.Load<Texture2D>(_reticuleMouseTexturePath);
|
||||||
|
_reticuleMouseImage = _reticuleMouseTexture.GetImage();
|
||||||
|
|
||||||
GetTree().GetRoot().SizeChanged += OnSizeChanged;
|
GetTree().GetRoot().SizeChanged += OnSizeChanged;
|
||||||
//_mouseTexture =
|
//_mouseTexture =
|
||||||
OnSizeChanged();
|
OnSizeChanged();
|
||||||
|
|
@ -60,6 +67,12 @@ public partial class GlobalState : Node
|
||||||
ResizeCursor();
|
ResizeCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ChangeCursor(bool useMenu)
|
||||||
|
{
|
||||||
|
UseMenuCursor = useMenu;
|
||||||
|
ResizeCursor();
|
||||||
|
}
|
||||||
|
|
||||||
public void ResizeCursor()
|
public void ResizeCursor()
|
||||||
{
|
{
|
||||||
var root = GetTree().GetRoot();
|
var root = GetTree().GetRoot();
|
||||||
|
|
@ -70,7 +83,7 @@ public partial class GlobalState : Node
|
||||||
int scaleY = newSize.Y / baseSize.Y;
|
int scaleY = newSize.Y / baseSize.Y;
|
||||||
int scale = Math.Min(scaleX, scaleY); // Ensure pixel-perfect scaling
|
int scale = Math.Min(scaleX, scaleY); // Ensure pixel-perfect scaling
|
||||||
|
|
||||||
ResizeCursor(scale / 2);
|
ResizeCursor(UseMenuCursor ? scale / 2 : scale, UseMenuCursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GotoScene(string path)
|
public void GotoScene(string path)
|
||||||
|
|
@ -264,15 +277,27 @@ public partial class GlobalState : Node
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResizeCursor(float scale)
|
private void ResizeCursor(float scale, bool useMenuCursor)
|
||||||
{
|
{
|
||||||
var scaled = (Image)_menuMouseImage.Duplicate();
|
Image scaled;
|
||||||
|
Vector2I size;
|
||||||
|
if (useMenuCursor)
|
||||||
|
{
|
||||||
|
scaled = (Image)_menuMouseImage.Duplicate();
|
||||||
|
size = (Vector2I)(scale * _menuMouseTexture.GetSize());
|
||||||
|
|
||||||
var size = (Vector2I)(scale * _menuMouseTexture.GetSize());
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scaled = (Image)_reticuleMouseImage.Duplicate();
|
||||||
|
size = (Vector2I)(scale * _reticuleMouseTexture.GetSize());
|
||||||
|
}
|
||||||
|
|
||||||
scaled.Resize(size.X, size.Y, Image.Interpolation.Nearest);
|
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()
|
public void RestartLevel()
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ public partial class MainMenu : CanvasLayer
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
DefaultSelectedButton.GrabFocus();
|
DefaultSelectedButton.GrabFocus();
|
||||||
|
GlobalState.Instance.ChangeCursor(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ public partial class PauseMenu : Control
|
||||||
private void QuitButtonOnPressed()
|
private void QuitButtonOnPressed()
|
||||||
{
|
{
|
||||||
_gameManager.Unpause();
|
_gameManager.Unpause();
|
||||||
|
GlobalState.Instance.ChangeCursor(true);
|
||||||
GlobalState.Instance.GotoScene(MainMenuScene);
|
GlobalState.Instance.GotoScene(MainMenuScene);
|
||||||
//GetTree().ChangeSceneToFile(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