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;
}
}
}