using UnityEngine; using AibisDream.FixSystem; namespace AibisDream { public class BlockPuzzlePanel : MonoBehaviour, ILineView { [Header("组件索引")] [SerializeField] private UniversalScreen logScreen; [SerializeField] private UniversalScreen blockPuzzleScreen; [SerializeField] private BlockPuzzlePart blockPuzzlePart; // ---------------------- 基本功能 ---------------------- public void SwitchToLogScreen() { logScreen.gameObject.SetActive(true); blockPuzzleScreen.gameObject.SetActive(false); } // ---------------------- 维修部分 ---------------------- public BlockPuzzlePart Panel => blockPuzzlePart; public void ShowShapeInScreen(BlockShapeInfo shape) { logScreen.gameObject.SetActive(false); blockPuzzleScreen.gameObject.SetActive(true); // 在屏幕上显示对应信息 blockPuzzleScreen.SetImage("设备缩略图", shape.GetDetailImage()); blockPuzzleScreen.SetText("设备名称", shape.shapeName); blockPuzzleScreen.SetText("设备描述", shape.shapeDescription); blockPuzzleScreen.SetText("PWR", $"PWR\n{shape.paramValue.power.ToString("+0;-0;+0")}"); blockPuzzleScreen.SetText("NOISE", $"NOISE\n{shape.paramValue.noise.ToString("+0;-0;+0")}"); blockPuzzleScreen.SetText("HEAT", $"HEAT\n{shape.paramValue.heat.ToString("+0;-0;+0")}"); for (int i = 1; i <= 3; i++) { if (i <= shape.states.Length) { blockPuzzleScreen.SetText($"设备状态{i}", shape.states[i-1]); } else { blockPuzzleScreen.SetText($"设备状态{i}", ""); } } } public void ClearShapeInScreen() { blockPuzzleScreen.SetImage("设备缩略图", null); blockPuzzleScreen.SetText("设备名称", "待选择"); blockPuzzleScreen.SetText("设备描述", null); blockPuzzleScreen.SetText("PWR", "0"); blockPuzzleScreen.SetText("NOISE", "0"); blockPuzzleScreen.SetText("HEAT", "0"); for (int i = 1; i <= 3; i++) { blockPuzzleScreen.SetText($"设备状态{i}", ""); } } // ---------------------- 对话功能 ---------------------- public void RunLine(LineSyncToken syncToken) { // 对话时显示Log面板,隐藏BlockPuzzle面板 logScreen.gameObject.SetActive(true); blockPuzzleScreen.gameObject.SetActive(false); logScreen.RunLine(syncToken); } // -------------------------- 生命周期 -------------------------- private void OnEnable() { DialogUIManager.Instance?.RegisterScreenView(DialogViewType.Log, this); } private void OnDisable() { DialogUIManager.Instance?.UnRegisterScreenView(DialogViewType.Log); } } }