using System.Collections.Generic; using Cthangover.Core.Scenes; using Godot; using Cthangover.Core.UI.Menu; namespace Cthangover.Mods.Interface.Menu { /// /// In-game pause menu: save/load/settings/quit. The settings and save/load /// panels are not referenced by type: they are registered in the /// (by the menu_base mod or any other mod /// that wants to provide them) and instantiated here by id, so the panel /// implementations can live entirely inside mods. Both panels stay hidden /// children created on _Ready to avoid loading delays when the player opens /// the menu. RefreshSaveButton dynamically disables save if the current /// scene doesn't allow saves (checked via /// SceneManager.IsSaveAllowedForCurrentScene). Button text is translated /// with a refresh-on-language-change subscription. /// public partial class GameMenu : Control { private ISettingsPanel _settingsPanel; private ISaveLoadPanel _saveLoadPanel; private Button _saveBtn; private Label _title; private readonly Dictionary _btnKeys = new(); /// Wires menu buttons, instantiates the hidden settings and save/load panels from the , and subscribes to language changes. public override void _Ready() { _saveBtn = GetNode