Files
godot-------/Script/Base/InputControl.cs
m0_75251201 7700703099 初次提交
2025-07-12 11:30:22 +08:00

89 lines
2.3 KiB
C#

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();
}
}
/// <summary>
/// 切换背包 UI 的打开/关闭状态
/// </summary>
private void ToggleBagUI()
{
if (bagUI.IsOpen)
{
bagUI.CloseBag(); // 关闭背包
}
else
{
// 如果开发者 UI 已打开,则先关闭开发者 UI
if (devUI.Visible)
{
devUI.Visible = false;
}
bagUI.OpenBag(); // 打开背包
}
// 更新暂停状态
UpdatePauseState();
}
/// <summary>
/// 切换开发者 UI 的可见性
/// </summary>
private void ToggleDevUI()
{
if (devUI.Visible)
{
devUI.Visible = false; // 关闭开发者 UI
}
else
{
// 如果背包已打开,则先关闭背包
if (bagUI.IsOpen)
{
bagUI.CloseBag();
}
devUI.Visible = true; // 打开开发者 UI
}
// 更新暂停状态
UpdatePauseState();
}
/// <summary>
/// 更新游戏的暂停状态
/// </summary>
private void UpdatePauseState()
{
// 如果背包或开发者 UI 任一打开,则暂停游戏
tickControl.pause = bagUI.IsOpen || devUI.Visible;
}
}
}