初次提交
This commit is contained in:
89
Script/Base/InputControl.cs
Normal file
89
Script/Base/InputControl.cs
Normal file
@ -0,0 +1,89 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user