using System.Collections;
using AibisDream.FixSystem;
using AibisDream.Framework;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine;
using Yarn.Unity;
namespace AibisDream.MiniGame.Language
{
///
/// 分析模式的 Yarn 命令接口
///
public static class AnalysisModeYarnCommand
{
private static AnalysisModeManager AnalysisModeManager => FixSystemCenter.SystemDic.Get();
///
/// 启动分析模式(使用 ScriptableObject 配置 - 推荐)
/// <>
/// 或
/// <>
///
/// 关卡配置名称(Resources/AnalysisLevels/ 下的文件名)
/// 完成时触发的对话节点(可选,会覆盖配置中的节点)
[YarnCommand("start_analysis")]
public static IEnumerator StartAnalysis(string levelName, string completionNode = "")
{
if (AnalysisModeManager == null)
{
Debug.LogError("AnalysisModeManager 未找到!请确保场景中有 AnalysisModeManager 组件。");
yield break;
}
var handler = ResourceSystem.LoadAsync($"AnalysisLevels/{levelName}");
yield return handler;
if (handler.Status == AsyncOperationStatus.Succeeded && handler.Result != null)
{
AnalysisModeData levelData = handler.Result;
AnalysisModeManager.OpenView(levelData, completionNode);
}
else
{
Debug.LogError($"找不到关卡配置: {levelName}.asset");
yield break;
}
}
///
/// 关闭分析模式
/// <>
///
[YarnCommand("close_analysis")]
public static void CloseAnalysis()
{
if (AnalysisModeManager == null)
{
Debug.LogWarning("AnalysisModeManager 未找到!");
return;
}
AnalysisModeManager.CloseView();
}
}
}