using Godot; using System; namespace Cosmobox { public partial class InputControl : Node { [Export] public TickControl tickControl; // 控制游戏暂停的节点 [Export] public Player player; // 玩家节点 [Export] public BagUI bagUI; // 背包 UI [Export] public Control devUI; // 开发者 UI public override void _Ready() { // 初始化状态 UpdatePauseState(); } public override void _Process(double delta) { // 监听 "bag" 按键 if (Input.IsActionJustPressed("bag")) { ToggleBagUI(); } // 监听开发者 UI 的切换(假设通过某个按键触发) if (Input.IsActionJustPressed("dev_ui")) { ToggleDevUI(); } } /// /// 切换背包 UI 的打开/关闭状态 /// private void ToggleBagUI() { if (bagUI.IsOpen) { bagUI.CloseBag(); // 关闭背包 } else { // 如果开发者 UI 已打开,则先关闭开发者 UI if (devUI.Visible) { devUI.Visible = false; } bagUI.OpenBag(); // 打开背包 } // 更新暂停状态 UpdatePauseState(); } /// /// 切换开发者 UI 的可见性 /// private void ToggleDevUI() { if (devUI.Visible) { devUI.Visible = false; // 关闭开发者 UI } else { // 如果背包已打开,则先关闭背包 if (bagUI.IsOpen) { bagUI.CloseBag(); } devUI.Visible = true; // 打开开发者 UI } // 更新暂停状态 UpdatePauseState(); } /// /// 更新游戏的暂停状态 /// private void UpdatePauseState() { // 如果背包或开发者 UI 任一打开,则暂停游戏 tickControl.pause = bagUI.IsOpen || devUI.Visible; } } }