Files
aibis-dream/Assets/Scripts/FixSystemNew/Screen System/ScreenYarnCommand.cs
T
2026-07-26 18:07:34 +08:00

121 lines
3.7 KiB
C#

using AibisDream.FixSystem;
using Yarn.Unity;
using System.Collections;
using UnityEngine;
namespace AibisDream
{
public static class ScreenYarnCommand
{
private static CablePanel CablePanel => FixPanelSystem.GetRepairPanel<CablePanel>();
private static CablePanelLight CablePanelLight => CablePanel?.PanelLight;
private static FixPanelLight PanelLight => FixPanelSystem.Instance?.PanelLight;
private static TaskPanel TaskPanel => FixPanelSystem.Instance.TaskPanel;
private static ScreenPanel ScreenPanel => FixPanelSystem.Instance.ScreenPanel;
#region Screen相关命令
[YarnCommand("clear_screen")]
public static void ClearTextScreen()
{
ScreenPanel.ClearScreen();
}
[YarnCommand("complete_task")]
public static void CompleteTask(string lineId)
{
TaskPanel.CompleteTask(lineId);
}
[YarnCommand("clear_tasks")]
public static void ClearTasks()
{
TaskPanel.ClearTasks();
}
[YarnCommand("show_task_panel")]
public static void ShowTaskPanel()
{
TaskPanel?.SetVisible(true);
}
#endregion
#region 灯光系统相关命令
[YarnCommand("set_light_state")]
public static void SetLightState(string state)
{
if (FixPanelSystem.Instance == null) return;
if (System.Enum.TryParse<LightState>(state, true, out var lightState))
{
FixPanelSystem.Instance.SetLightState(lightState);
}
}
[YarnCommand("set_small_light_state")]
public static void SetSmallLightState(string state)
{
if (CablePanelLight == null) return;
if (System.Enum.TryParse<SmallLightState>(state, true, out var smallLightState))
{
CablePanelLight.SetSmallLightState(smallLightState);
}
}
[YarnCommand("set_small_light_status")]
public static void SetSmallLightStatus(string status)
{
if (CablePanelLight == null) return;
if (System.Enum.TryParse<SmallLightStatus>(status, true, out var smallLightStatus))
{
CablePanelLight.SetSmallLightStatus(smallLightStatus);
}
}
[YarnCommand("set_environment_light_flickering")]
public static void SetEnvironmentLightFlickering(bool isFlickering)
{
if (PanelLight == null) return;
PanelLight.SetEnvironmentLightFlickering(isFlickering);
}
[YarnCommand("set_alarm_blink_speed")]
public static void SetAlarmBlinkSpeed(float speed)
{
if (PanelLight == null) return;
PanelLight.SetAlarmBlinkSpeed(speed);
}
[YarnCommand("stop_alarm_light")]
public static void StopAlarmLight()
{
if (PanelLight == null) return;
PanelLight.StopAlarmLight();
}
[YarnCommand("start_system")]
public static IEnumerator StartSystem()
{
if (FixPanelSystem.Instance == null) yield break;
yield return FixPanelSystem.Instance.StartAllSystems();
}
[YarnCommand("prepare_system_startup")]
public static void PrepareSystemStartup(string mode)
{
if (FixPanelSystem.Instance == null) return;
if (!System.Enum.TryParse(mode, true, out SystemStartupMode startupMode))
{
Debug.LogWarning($"[Yarn] Unknown system startup mode '{mode}'. Expected AutoOnHead or Deferred.");
return;
}
FixPanelSystem.Instance.PrepareSystemStartup(startupMode);
}
#endregion
}
}