92 lines
3.1 KiB
C#
92 lines
3.1 KiB
C#
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);
|
|
}
|
|
}
|
|
} |