using AibisDream.Kit;
using UnityEngine;
using UnityEngine.UI;
namespace AibisDream.UI
{
///
/// 录制 HUD 侧边栏:Ctrl+R 唤出,四个开关独立控制光标、版本号、Top Bar、对话视觉。
/// 挂在 Info Panel 下,与 VariableBar 同类调试 UI,不使用独立 Canvas。
/// UI 层级在 Persistence 场景中配置,不在运行时生成。
///
public class RecordingToolPanel : MonoBehaviour
{
[SerializeField] private Toggle showCursorToggle;
[SerializeField] private Toggle showVersionToggle;
[SerializeField] private Toggle showTopBarToggle;
[SerializeField] private Toggle showDialogToggle;
private bool _showCursor = true;
private bool _showVersion = true;
private bool _showTopBar = true;
private bool _showDialog = true;
private VerText _verText;
private void Awake()
{
_verText = FindObjectOfType(true);
gameObject.SetActive(false);
BindToggles();
ApplyAll();
}
public void TogglePanel()
{
gameObject.SetActive(!gameObject.activeSelf);
}
private void BindToggles()
{
showCursorToggle.isOn = _showCursor;
showVersionToggle.isOn = _showVersion;
showTopBarToggle.isOn = _showTopBar;
showDialogToggle.isOn = _showDialog;
showCursorToggle.onValueChanged.AddListener(OnShowCursorChanged);
showVersionToggle.onValueChanged.AddListener(OnShowVersionChanged);
showTopBarToggle.onValueChanged.AddListener(OnShowTopBarChanged);
showDialogToggle.onValueChanged.AddListener(OnShowDialogChanged);
}
private void OnShowCursorChanged(bool visible)
{
_showCursor = visible;
CursorManager.Instance?.SetCursorVisible(visible);
}
private void OnShowVersionChanged(bool visible)
{
_showVersion = visible;
_verText?.SetVisible(visible);
}
private void OnShowTopBarChanged(bool visible)
{
_showTopBar = visible;
UIManager.Instance?.GetPanel()?.SetTopBarVisible(visible);
}
private void OnShowDialogChanged(bool visible)
{
_showDialog = visible;
DialogUIManager.Instance?.SetDialogVisualVisible(visible);
}
private void ApplyAll()
{
OnShowCursorChanged(_showCursor);
OnShowVersionChanged(_showVersion);
OnShowTopBarChanged(_showTopBar);
OnShowDialogChanged(_showDialog);
}
}
}