Files
TheGame/scripts/UI/Menus/PauseMenu.cs
Björn Blomberg ed4ce28921 Refactor: reorganize scripts with domain-driven design structure
Move all C# scripts from flat structure to organized folders:
- Core/ for game logic (Game, GameState, GameSettings)
- UI/Menus/ and UI/Dialogs/ for user interface
- Systems/ for reusable systems (Save, Localization)
- Data/ for data models and configuration
- Added framework for future: Gameplay/, Story/, Modding/

Update all .tscn scene files to reference new script paths.
Fix timing issue in AdvancedSaveDialog focus handling.
2025-10-17 14:50:40 +02:00

84 lines
3.1 KiB
C#

using Godot;
namespace TheGame
{
public partial class PauseMenu : Control
{
private Game _gameController;
private Label _titleLabel;
private Button _resumeButton;
private Button _saveButton;
private Button _settingsButton;
private Button _mainMenuButton;
private Button _desktopButton;
public override void _Ready()
{
// Lägg till i localized_ui gruppen
AddToGroup("localized_ui");
_gameController = GetParent<Game>();
_titleLabel = GetNode<Label>("MenuContainer/TitleLabel");
_resumeButton = GetNode<Button>("MenuContainer/ResumeButton");
_saveButton = GetNode<Button>("MenuContainer/SaveButton");
_settingsButton = GetNode<Button>("MenuContainer/SettingsButton");
_mainMenuButton = GetNode<Button>("MenuContainer/MainMenuButton");
_desktopButton = GetNode<Button>("MenuContainer/DesktopButton");
UpdateLocalization();
}
public void UpdateLocalization()
{
var loc = LocalizationManager.Instance;
_titleLabel.Text = loc.GetText("pause_menu_title");
_resumeButton.Text = loc.GetText("pause_menu_resume");
_saveButton.Text = loc.GetText("pause_menu_save");
_settingsButton.Text = loc.GetText("pause_menu_settings");
_mainMenuButton.Text = loc.GetText("pause_menu_main_menu");
_desktopButton.Text = loc.GetText("pause_menu_desktop");
}
private void _on_resume_button_pressed()
{
_gameController.TogglePause();
}
private void _on_save_button_pressed()
{
// Skapa och visa advanced save dialog
var advancedSaveDialog = new AdvancedSaveDialog();
advancedSaveDialog.ProcessMode = ProcessModeEnum.WhenPaused; // Sätt innan initialize
advancedSaveDialog.Initialize(_gameController);
GetTree().Root.AddChild(advancedSaveDialog);
advancedSaveDialog.PopupCentered(new Vector2I(450, 350));
}
private void _on_settings_button_pressed()
{
// Skapa settings menu som popup
var settingsScene = GD.Load<PackedScene>("res://scenes/SettingsMenu.tscn");
var settingsMenu = settingsScene.Instantiate<SettingsMenu>();
// Sätt process mode så att den fungerar när pausat
settingsMenu.ProcessMode = ProcessModeEnum.WhenPaused;
GetTree().Root.AddChild(settingsMenu);
}
private void _on_main_menu_button_pressed()
{
_gameController.HandleExitRequest(() => {
GetTree().Paused = false;
GameState.ResetGameState();
GetTree().ChangeSceneToFile("res://scenes/MainMenu.tscn");
});
}
private void _on_desktop_button_pressed()
{
_gameController.HandleExitRequest(() => GetTree().Quit());
}
}
}