44 lines
1.7 KiB
C#
44 lines
1.7 KiB
C#
namespace AibisDream.SaveSystem
|
|
{
|
|
/// <summary>
|
|
/// 从 <see cref="SaveSnapshot"/> 根对象直接读取的宏观摘要(场景 / 章节 SO / YarnProject)。
|
|
/// <para>
|
|
/// scene 与 anchor 已提升到根对象,无需再从 sections 字典派生。
|
|
/// 槽位 / 「继续游戏」等 UI 在需要展示时调用 <see cref="From"/> 即可。
|
|
/// </para>
|
|
/// </summary>
|
|
public readonly struct SaveSnapshotSummary
|
|
{
|
|
/// <summary>Addressable 场景 key(来自 <see cref="SaveSnapshot.scene"/>)。</summary>
|
|
public readonly string SceneName;
|
|
|
|
/// <summary>当前 <c>TalkSceneSO</c> 的 asset 名称(来自 <see cref="AnchorSnapshot.sceneSoName"/>)。</summary>
|
|
public readonly string SceneSoName;
|
|
|
|
/// <summary>当前 <c>YarnProject</c> 的 name(来自 <see cref="AnchorSnapshot.yarnProjectId"/>)。</summary>
|
|
public readonly string YarnProjectId;
|
|
|
|
public SaveSnapshotSummary(string sceneName, string sceneSoName, string yarnProjectId)
|
|
{
|
|
SceneName = sceneName;
|
|
SceneSoName = sceneSoName;
|
|
YarnProjectId = yarnProjectId;
|
|
}
|
|
|
|
/// <summary>从快照根对象直接读取宏观摘要。</summary>
|
|
public static SaveSnapshotSummary From(SaveSnapshot snapshot)
|
|
{
|
|
if (snapshot == null)
|
|
{
|
|
return new SaveSnapshotSummary(null, null, null);
|
|
}
|
|
|
|
var sceneName = snapshot.scene?.sceneName;
|
|
var sceneSoName = snapshot.anchor?.sceneSoName;
|
|
var yarnProjectId = snapshot.anchor?.yarnProjectId;
|
|
|
|
return new SaveSnapshotSummary(sceneName, sceneSoName, yarnProjectId);
|
|
}
|
|
}
|
|
}
|