using System;
using System.Collections.Generic;
using UnityEngine;
using Yarn.Unity;
namespace AibisDream
{
[Serializable]
public class SceneExit
{
[Tooltip("出口名称,用于Yarn命令指定跳转目标,如 good_end / bad_end / default")]
public string exitName;
public TalkSceneSO targetScene;
}
///
/// 章节类型数据
///
[CreateAssetMenu(menuName = AibisAssetMenus.NarrativeTalkScene)]
public class TalkSceneSO : ScriptableObject
{
private const string DEFAULT_EXIT_NAME = "default";
public List exits = new();
public YarnProject yarnProject;
public string firstSceneName;
#region 用于显示的字段
public string title;
[Tooltip("章节面板显示用本地化 Key,对应 ChapterInfo 表条目;为空则回退 title")]
public string titleKey;
public string description;
public Sprite coverPic;
public string chapter;
#endregion
#region 仅编辑器使用
[HideInInspector] public Vector2 graphPosition;
public Color nodeColor = new(0.85f, 0.45f, 0.45f);
#endregion
public TalkSceneSO GetNextScene(string exitName = null)
{
if (exits == null || exits.Count == 0)
return null;
if (string.IsNullOrEmpty(exitName))
exitName = DEFAULT_EXIT_NAME;
foreach (var exit in exits)
{
if (exit.exitName == exitName)
return exit.targetScene;
}
return null;
}
}
}