using System.Collections;
using UnityEngine;
using Yarn.Unity;
using AibisDream.FixSystem;
using AibisDream.Framework;
namespace AibisDream.MiniGame.Language
{
///
/// 语言分析系统 Yarn 命令
///
public static class LanguageAnalysisYarnCommands
{
private static FixStateMachine FixStateMachine => FixSystemCenter.SystemDic.Get();
///
/// 进入语言分析系统状态
/// <>
///
[YarnCommand("enter_language_analysis")]
public static void EnterLanguageAnalysis()
{
if (FixStateMachine == null)
{
Debug.LogError("[LanguageAnalysis] FixStateMachine 未找到!");
return;
}
// 通过协程切换状态
MonoBehaviourHelper.Instance.StartCoroutine(SwitchToLanguageAnalysisState());
}
///
/// 退出语言分析系统状态
/// <>
///
[YarnCommand("exit_language_analysis")]
public static void ExitLanguageAnalysis()
{
if (FixStateMachine == null)
{
Debug.LogError("[LanguageAnalysis] FixStateMachine 未找到!");
return;
}
// 切换回诊所状态或其他默认状态
MonoBehaviourHelper.Instance.StartCoroutine(FixStateMachine.SwitchState(FixState.Clinic));
}
private static IEnumerator SwitchToLanguageAnalysisState()
{
yield return FixStateMachine.SwitchState(FixState.LanguageAnalysis);
}
}
///
/// MonoBehaviour 辅助类,用于启动协程
///
public class MonoBehaviourHelper : MonoBehaviour
{
private static MonoBehaviourHelper _instance;
public static MonoBehaviourHelper Instance
{
get
{
if (_instance == null)
{
GameObject go = new GameObject("MonoBehaviourHelper");
_instance = go.AddComponent();
DontDestroyOnLoad(go);
}
return _instance;
}
}
}
}