Files
TheGame/scripts/PauseMenu.cs
Björn Blomberg 74062a37d6 Add localization support and refactor menus
- Implemented LocalizationManager for handling multiple languages.
- Updated LoadGameMenu, MainMenu, PauseMenu, and SettingsMenu to support localization.
- Added InstanceSelectionMenu for selecting game instances.
- Refactored SaveManager to handle new SaveInstance structure.
- Created SaveDialog for saving games with user-defined names.
- Enhanced SaveData to manage multiple save instances.
- Added error handling and logging for save/load operations.
- Updated UI elements to reflect localized text.
2025-10-17 14:22:21 +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());
}
}
}