- 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.
84 lines
3.1 KiB
C#
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());
|
|
}
|
|
}
|
|
} |