121 lines
3.7 KiB
C#
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
|
|
}
|
|
}
|