diff options
| author | Sophia Pearson <codergal89@gmail.com> | 2022-05-27 23:52:37 +0200 |
|---|---|---|
| committer | Sophia Pearson <codergal89@gmail.com> | 2022-05-27 23:52:37 +0200 |
| commit | 0477b9ab34817165ac7b11ad77a6740995f55892 (patch) | |
| tree | 5721a9c7a1f0437fb8c526544bc7e63a0ea9cc66 | |
| parent | 1010b138a0e52f860ef73d5552b0be236573c46b (diff) | |
| download | texty-0477b9ab34817165ac7b11ad77a6740995f55892.tar.xz texty-0477b9ab34817165ac7b11ad77a6740995f55892.zip | |
gui: add signals to start menu
| -rw-r--r-- | Scenes/StartMenu.tscn | 5 | ||||
| -rw-r--r-- | Scripts/StartMenu.cs | 37 | ||||
| -rw-r--r-- | Tests/ComponentTests/test_StartMenu.gd | 48 | ||||
| -rw-r--r-- | Texty.csproj | 18 |
4 files changed, 94 insertions, 14 deletions
diff --git a/Scenes/StartMenu.tscn b/Scenes/StartMenu.tscn index 7ebef31..ba9458b 100644 --- a/Scenes/StartMenu.tscn +++ b/Scenes/StartMenu.tscn @@ -40,3 +40,8 @@ margin_top = 98.0 margin_right = 166.0 margin_bottom = 139.0 text = "Quit" + +[connection signal="visibility_changed" from="." to="." method="OnVisibilityChanged"] +[connection signal="pressed" from="MainContainer/Buttons/StartButton" to="." method="OnStartButtonPressed"] +[connection signal="pressed" from="MainContainer/Buttons/CreditsButton" to="." method="OnCreditsButtonPressed"] +[connection signal="pressed" from="MainContainer/Buttons/QuitButton" to="." method="OnQuitButtonPressed"] diff --git a/Scripts/StartMenu.cs b/Scripts/StartMenu.cs index 70b84b2..a1f64cc 100644 --- a/Scripts/StartMenu.cs +++ b/Scripts/StartMenu.cs @@ -2,11 +2,15 @@ using Godot; namespace Texty.Scripts { - public class StartMenu : MarginContainer - { - public Button CreditsButton; - public Button QuitButton; - public Button StartButton; + public class StartMenu : MarginContainer + { + [Signal] public delegate void QuitGame(); + [Signal] public delegate void ShowCredits(); + [Signal] public delegate void StartGame(); + + public Button CreditsButton; + public Button QuitButton; + public Button StartButton; public override void _Ready() { @@ -15,5 +19,28 @@ namespace Texty.Scripts QuitButton = buttons.GetNode<Button>(nameof(QuitButton)); StartButton = buttons.GetNode<Button>(nameof(StartButton)); } + + public void OnCreditsButtonPressed() + { + EmitSignal(nameof(ShowCredits)); + } + + public void OnQuitButtonPressed() + { + EmitSignal(nameof(QuitGame)); + } + + public void OnStartButtonPressed() + { + EmitSignal(nameof(StartGame)); + } + + public void OnVisibilityChanged() + { + if(Visible) + StartButton.GrabFocus(); + else + StartButton.ReleaseFocus(); + } } }
\ No newline at end of file diff --git a/Tests/ComponentTests/test_StartMenu.gd b/Tests/ComponentTests/test_StartMenu.gd new file mode 100644 index 0000000..194a2dc --- /dev/null +++ b/Tests/ComponentTests/test_StartMenu.gd @@ -0,0 +1,48 @@ +extends GutTest + +const Scene = preload('res://Scenes/StartMenu.tscn') +const StartMenu = preload('res://Scripts/StartMenu.cs') + +var _instance: StartMenu = null +var _sender = InputSender.new(Input) +const _quit_game = 'QuitGame' +const _show_credits = 'ShowCredits' +const _start_game = 'StartGame' + +func before_each(): + _instance = add_child_autofree(Scene.instance()) + yield(_instance, 'visibility_changed') + +func after_each(): + _sender.release_all() + _sender.clear() + +func test_can_instantiate(): + assert_not_null(_instance) + +func test_StartButton_is_focused_when_scene_becomes_visible(): + assert_true(_instance.StartButton.has_focus()) + +func test_has_QuitGame_signal(): + assert_has_signal(_instance, _quit_game) + +func test_has_ShowCredits_signal(): + assert_has_signal(_instance, _show_credits) + +func test_has_StartGame_signal(): + assert_has_signal(_instance, _start_game) + +func test_clicking_the_Start_button_emits_ShowCredits_signal(): + watch_signals(_instance) + yield(UiHelpers.click_control(_sender, _instance.CreditsButton), 'idle') + assert_signal_emitted(_instance, _show_credits) + +func test_clicking_the_Quit_button_emits_QuitGame_signal(): + watch_signals(_instance) + yield(UiHelpers.click_control(_sender, _instance.QuitButton), 'idle') + assert_signal_emitted(_instance, _quit_game) + +func test_clicking_the_Start_button_emits_StartGame_signal(): + watch_signals(_instance) + yield(UiHelpers.click_control(_sender, _instance.StartButton), 'idle') + assert_signal_emitted(_instance, _start_game) diff --git a/Texty.csproj b/Texty.csproj index 8fcb0cb..5b156e0 100644 --- a/Texty.csproj +++ b/Texty.csproj @@ -8,18 +8,18 @@ <NeutralLanguage>en-US</NeutralLanguage> </PropertyGroup> <ItemGroup> - <Compile Remove="ScriptTemplates\**"/> - <Compile Remove="Scenes\**"/> - <Compile Remove="Tests\**"/> + <Compile Remove="ScriptTemplates\**" /> + <Compile Remove="Scenes\**" /> + <Compile Remove="Tests\**" /> </ItemGroup> <ItemGroup> - <EmbeddedResource Remove="ScriptTemplates\**"/> - <EmbeddedResource Remove="Scenes\**"/> - <EmbeddedResource Remove="Tests\**"/> + <EmbeddedResource Remove="ScriptTemplates\**" /> + <EmbeddedResource Remove="Scenes\**" /> + <EmbeddedResource Remove="Tests\**" /> </ItemGroup> <ItemGroup> - <Content Include="addons\ClassExporter\plugin.cfg"/> - <Content Include="Tests\**"/> - <Content Include="Scenes\**"/> + <Content Include="addons\ClassExporter\plugin.cfg" /> + <Content Include="Tests\**" /> + <Content Include="Scenes\**" /> </ItemGroup> </Project>
\ No newline at end of file |
