From b2488000d241cc3e5bf4faa7f69543b65cf307cc Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Sun, 14 Jan 2024 21:44:36 +0100 Subject: [PATCH 01/12] Add ability for YatWindows to set default window position --- addons/yat/src/scenes/monitor/Monitor.cs | 2 +- addons/yat/src/scenes/yat_window/YatWindow.cs | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/addons/yat/src/scenes/monitor/Monitor.cs b/addons/yat/src/scenes/monitor/Monitor.cs index 5524155a..0cc91a52 100644 --- a/addons/yat/src/scenes/monitor/Monitor.cs +++ b/addons/yat/src/scenes/monitor/Monitor.cs @@ -18,7 +18,7 @@ public override void _Ready() _timer = GetNode("Timer"); _components = GetNode("%Components"); - Move(WindowPosition.TopLeft, 16); + Move(EWindowPosition.TopLeft, 16); } /// diff --git a/addons/yat/src/scenes/yat_window/YatWindow.cs b/addons/yat/src/scenes/yat_window/YatWindow.cs index 0fc25f05..2185acdd 100644 --- a/addons/yat/src/scenes/yat_window/YatWindow.cs +++ b/addons/yat/src/scenes/yat_window/YatWindow.cs @@ -7,10 +7,13 @@ public partial class YatWindow : Window [Export(PropertyHint.Range, "0, 128, 1")] public int ViewportEdgeOffset = 48; + [Export] public EWindowPosition DefaultWindowPosition = EWindowPosition.Center; + [Export] public bool AllowToGoOffscreen = true; // TODO: Implement this + private YAT _yat; private Viewport _viewport; - public enum WindowPosition + public enum EWindowPosition { TopLeft, TopRight, @@ -25,6 +28,7 @@ public override void _Ready() _viewport = _yat.GetTree().Root.GetViewport(); _viewport.SizeChanged += OnViewportSizeChanged; + Move(DefaultWindowPosition, (uint)ViewportEdgeOffset); OnViewportSizeChanged(); } @@ -39,23 +43,23 @@ private void OnViewportSizeChanged() }; } - public void Move(WindowPosition position, uint offset = 0) + public void Move(EWindowPosition position, uint offset = 0) { switch (position) { - case WindowPosition.TopLeft: + case EWindowPosition.TopLeft: MoveTopLeft(offset); break; - case WindowPosition.TopRight: + case EWindowPosition.TopRight: MoveTopRight(offset); break; - case WindowPosition.BottomRight: + case EWindowPosition.BottomRight: MoveBottomRight(offset); break; - case WindowPosition.BottomLeft: + case EWindowPosition.BottomLeft: MoveBottomLeft(offset); break; - case WindowPosition.Center: + case EWindowPosition.Center: MoveToTheCenter(); break; } From 6e0e440ad2152cdffa902cb1e40ebeb69d6c40de Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Sun, 14 Jan 2024 22:17:55 +0100 Subject: [PATCH 02/12] Add Reset command to YAT --- addons/yat/src/YAT.cs | 1 + addons/yat/src/commands/builtin/Reset.cs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 addons/yat/src/commands/builtin/Reset.cs diff --git a/addons/yat/src/YAT.cs b/addons/yat/src/YAT.cs index a8d0f18f..fae4790c 100644 --- a/addons/yat/src/YAT.cs +++ b/addons/yat/src/YAT.cs @@ -75,6 +75,7 @@ public override void _Ready() AddCommand(new Pause()); AddCommand(new Watch()); AddCommand(new Stats()); + AddCommand(new Reset()); AddCommand(new Cowsay()); AddCommand(new Options()); AddCommand(new Restart()); diff --git a/addons/yat/src/commands/builtin/Reset.cs b/addons/yat/src/commands/builtin/Reset.cs new file mode 100644 index 00000000..163db0d0 --- /dev/null +++ b/addons/yat/src/commands/builtin/Reset.cs @@ -0,0 +1,20 @@ +using YAT.Attributes; +using YAT.Enums; +using YAT.Interfaces; + +namespace YAT.Commands +{ + [Command( + "reset", + "Resets the terminal to its default position and/or size.", + "[b]reset[/b] [i]action[/i]" + )] + [Argument("action", "[all, position, size]", "The action to perform.")] + public sealed class Reset : ICommand + { + public CommandResult Execute(CommandArguments args) + { + return CommandResult.Success; + } + } +} From 45c1cd7ca29efab36e2bbf0cc2d666df9d04d414 Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Sun, 14 Jan 2024 22:29:41 +0100 Subject: [PATCH 03/12] Add PositionResetRequested signal to BaseTerminal.cs --- addons/yat/docs/TERMINAL.md | 9 +++++---- addons/yat/src/scenes/base_terminal/BaseTerminal.cs | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/yat/docs/TERMINAL.md b/addons/yat/docs/TERMINAL.md index 4ce04aa1..b3b260e4 100644 --- a/addons/yat/docs/TERMINAL.md +++ b/addons/yat/docs/TERMINAL.md @@ -32,7 +32,8 @@ $ qc add -name="Red Hello" -command="echo [color=red]Hello[/color]" ### Signals -| Name | Arguments | Description | -| -------------------- | -------------- | -------------------------------------------------- | -| CloseRequested | N/A | Sent when terminal is requested to close. | -| TitleChangeRequested | title (string) | Sent when change to terminal's title is requested. | +| Name | Arguments | Description | +| ---------------------- | -------------- | -------------------------------------------------- | +| CloseRequested | N/A | Sent when terminal is requested to close. | +| TitleChangeRequested | title (string) | Sent when change to terminal's title is requested. | +| PositionResetRequested | N/A | Sent when terminal position reset is requested. | diff --git a/addons/yat/src/scenes/base_terminal/BaseTerminal.cs b/addons/yat/src/scenes/base_terminal/BaseTerminal.cs index df3a5253..284d16c6 100644 --- a/addons/yat/src/scenes/base_terminal/BaseTerminal.cs +++ b/addons/yat/src/scenes/base_terminal/BaseTerminal.cs @@ -9,6 +9,7 @@ public partial class BaseTerminal : Control { [Signal] public delegate void CloseRequestedEventHandler(); [Signal] public delegate void TitleChangeRequestedEventHandler(string title); + [Signal] public delegate void PositionResetRequestedEventHandler(); public Input Input { get; private set; } public TerminalContext Context { get; private set; } From 6ea381232e9b2b40a7181c417126fbfbfd56b7a8 Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Sun, 14 Jan 2024 22:30:00 +0100 Subject: [PATCH 04/12] Handle PositionResetRequested signal --- addons/yat/src/scenes/game_terminal/GameTerminal.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/yat/src/scenes/game_terminal/GameTerminal.cs b/addons/yat/src/scenes/game_terminal/GameTerminal.cs index ee21eac1..67b5f718 100644 --- a/addons/yat/src/scenes/game_terminal/GameTerminal.cs +++ b/addons/yat/src/scenes/game_terminal/GameTerminal.cs @@ -17,6 +17,7 @@ public override void _Ready() BaseTerminal = GetNode("Content/BaseTerminal"); BaseTerminal.TitleChangeRequested += title => Title = title; + BaseTerminal.PositionResetRequested += ResetPosition; CloseRequested += _yat.CloseTerminal; MoveToCenter(); From 886b22ed5a0558762e7cc66455b2cd69cd5017cf Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Sun, 14 Jan 2024 22:30:25 +0100 Subject: [PATCH 05/12] Add ResetPosition method to YatWindow class --- addons/yat/src/scenes/yat_window/YatWindow.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/yat/src/scenes/yat_window/YatWindow.cs b/addons/yat/src/scenes/yat_window/YatWindow.cs index 2185acdd..88914e58 100644 --- a/addons/yat/src/scenes/yat_window/YatWindow.cs +++ b/addons/yat/src/scenes/yat_window/YatWindow.cs @@ -32,6 +32,11 @@ public override void _Ready() OnViewportSizeChanged(); } + public void ResetPosition() + { + Move(DefaultWindowPosition, (uint)ViewportEdgeOffset); + } + private void OnViewportSizeChanged() { var viewportSize = (Vector2I)_viewport.GetVisibleRect().Size; From b0142533b1f0523c5453d1111579a81ed3a78828 Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Sun, 14 Jan 2024 22:33:55 +0100 Subject: [PATCH 06/12] Add SizeResetRequested signal to BaseTerminal.cs --- addons/yat/docs/TERMINAL.md | 1 + addons/yat/src/scenes/base_terminal/BaseTerminal.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/addons/yat/docs/TERMINAL.md b/addons/yat/docs/TERMINAL.md index b3b260e4..01518060 100644 --- a/addons/yat/docs/TERMINAL.md +++ b/addons/yat/docs/TERMINAL.md @@ -37,3 +37,4 @@ $ qc add -name="Red Hello" -command="echo [color=red]Hello[/color]" | CloseRequested | N/A | Sent when terminal is requested to close. | | TitleChangeRequested | title (string) | Sent when change to terminal's title is requested. | | PositionResetRequested | N/A | Sent when terminal position reset is requested. | +| SizeResetRequested | N/A | Sent when terminal size reset is requested. | diff --git a/addons/yat/src/scenes/base_terminal/BaseTerminal.cs b/addons/yat/src/scenes/base_terminal/BaseTerminal.cs index 284d16c6..e68670e6 100644 --- a/addons/yat/src/scenes/base_terminal/BaseTerminal.cs +++ b/addons/yat/src/scenes/base_terminal/BaseTerminal.cs @@ -10,6 +10,7 @@ public partial class BaseTerminal : Control [Signal] public delegate void CloseRequestedEventHandler(); [Signal] public delegate void TitleChangeRequestedEventHandler(string title); [Signal] public delegate void PositionResetRequestedEventHandler(); + [Signal] public delegate void SizeResetRequestedEventHandler(); public Input Input { get; private set; } public TerminalContext Context { get; private set; } From 04e72c942d382d57e9acea7d681d7bd9e787f9e7 Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Sun, 14 Jan 2024 22:34:06 +0100 Subject: [PATCH 07/12] Handle SizeResetRequested signal --- addons/yat/src/scenes/game_terminal/GameTerminal.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/yat/src/scenes/game_terminal/GameTerminal.cs b/addons/yat/src/scenes/game_terminal/GameTerminal.cs index 67b5f718..3a7ce24b 100644 --- a/addons/yat/src/scenes/game_terminal/GameTerminal.cs +++ b/addons/yat/src/scenes/game_terminal/GameTerminal.cs @@ -18,6 +18,7 @@ public override void _Ready() BaseTerminal = GetNode("Content/BaseTerminal"); BaseTerminal.TitleChangeRequested += title => Title = title; BaseTerminal.PositionResetRequested += ResetPosition; + BaseTerminal.SizeResetRequested += ResetSize; CloseRequested += _yat.CloseTerminal; MoveToCenter(); From 8a646272a10f80519b32aab3ac4ebeb6fe257225 Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Mon, 15 Jan 2024 19:26:16 +0100 Subject: [PATCH 08/12] Add InitialSize property to YatWindow class --- addons/yat/src/scenes/yat_window/YatWindow.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/yat/src/scenes/yat_window/YatWindow.cs b/addons/yat/src/scenes/yat_window/YatWindow.cs index 88914e58..cac2d0c7 100644 --- a/addons/yat/src/scenes/yat_window/YatWindow.cs +++ b/addons/yat/src/scenes/yat_window/YatWindow.cs @@ -10,6 +10,8 @@ public partial class YatWindow : Window [Export] public EWindowPosition DefaultWindowPosition = EWindowPosition.Center; [Export] public bool AllowToGoOffscreen = true; // TODO: Implement this + public Vector2I InitialSize { get; set; } + private YAT _yat; private Viewport _viewport; @@ -28,6 +30,8 @@ public override void _Ready() _viewport = _yat.GetTree().Root.GetViewport(); _viewport.SizeChanged += OnViewportSizeChanged; + InitialSize = Size; + Move(DefaultWindowPosition, (uint)ViewportEdgeOffset); OnViewportSizeChanged(); } From 45bbbab9b1af1fce512decdfddc81026c863babb Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Mon, 15 Jan 2024 19:26:28 +0100 Subject: [PATCH 09/12] Fix SizeResetRequested event handler in GameTerminal.cs --- addons/yat/src/scenes/game_terminal/GameTerminal.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/yat/src/scenes/game_terminal/GameTerminal.cs b/addons/yat/src/scenes/game_terminal/GameTerminal.cs index 3a7ce24b..a4f519cc 100644 --- a/addons/yat/src/scenes/game_terminal/GameTerminal.cs +++ b/addons/yat/src/scenes/game_terminal/GameTerminal.cs @@ -18,7 +18,7 @@ public override void _Ready() BaseTerminal = GetNode("Content/BaseTerminal"); BaseTerminal.TitleChangeRequested += title => Title = title; BaseTerminal.PositionResetRequested += ResetPosition; - BaseTerminal.SizeResetRequested += ResetSize; + BaseTerminal.SizeResetRequested += () => Size = InitialSize; CloseRequested += _yat.CloseTerminal; MoveToCenter(); From 0ec48981dfc79ace10a6764f05a184dc2a6c9334 Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Mon, 15 Jan 2024 19:26:42 +0100 Subject: [PATCH 10/12] Add reset functionality for terminal size and position --- addons/yat/src/commands/builtin/Reset.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/addons/yat/src/commands/builtin/Reset.cs b/addons/yat/src/commands/builtin/Reset.cs index 163db0d0..a92ce6e5 100644 --- a/addons/yat/src/commands/builtin/Reset.cs +++ b/addons/yat/src/commands/builtin/Reset.cs @@ -14,6 +14,22 @@ public sealed class Reset : ICommand { public CommandResult Execute(CommandArguments args) { + var action = (string)args.ConvertedArgs["action"]; + + switch (action) + { + case "size": + args.Terminal.EmitSignal(nameof(args.Terminal.SizeResetRequested)); + break; + case "position": + args.Terminal.EmitSignal(nameof(args.Terminal.PositionResetRequested)); + break; + case "all": + args.Terminal.EmitSignal(nameof(args.Terminal.SizeResetRequested)); + args.Terminal.EmitSignal(nameof(args.Terminal.PositionResetRequested)); + break; + } + return CommandResult.Success; } } From 9ea434368489f1ddc9748348fa6959b1715b3650 Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Mon, 15 Jan 2024 19:28:54 +0100 Subject: [PATCH 11/12] Update changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21d8c810..0c86a593 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. +## [Unreleased] + +### Added + +- Ability for YatWindows to set default window position. +- Reset command. +- PositionResetRequested & SizeResetRequested signal for BaseTerminal. + ## [1.17.0-beta 2024-01-12] ### Added From 44d1094dd265b912d91ed7d197e4fab13e41be33 Mon Sep 17 00:00:00 2001 From: MASSHUU12 Date: Mon, 15 Jan 2024 19:30:16 +0100 Subject: [PATCH 12/12] Add new 'reset' command to BUILTIN_COMMANDS.md --- addons/yat/docs/BUILTIN_COMMANDS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/yat/docs/BUILTIN_COMMANDS.md b/addons/yat/docs/BUILTIN_COMMANDS.md index 4cc28855..3db982da 100644 --- a/addons/yat/docs/BUILTIN_COMMANDS.md +++ b/addons/yat/docs/BUILTIN_COMMANDS.md @@ -32,3 +32,4 @@ | stats | st | Manages the game monitor. | | cs | N/A | Changes the scene. | | wenv | N/A | Manages the world environment. | +| reset | N/A | Resets the terminal to its default position and/or size. |