2026-05-13 14:10:34 +08:00

96 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using Logic.CrashSight;
using UnityEngine;
using RuntimeData;
using Logic.Multilingual;
using Logic.Skill;
using TH1_Logic.Core;
using TH1Renderer;
using TH1Resource;
using Unity.VisualScripting;
public enum StoryCharEnum {
// 编号规则: 国家(2位) + 国家重复(2位) + 国内序号(1位)
// 国家: 01=Egyptian 02=French 03=Germany 04=Indian 05=Norway 06=British 07=Persian 08=Byzantine
// 国内序号与 GiantType 国内顺序对齐
None = 0,
EgyptianFlandre = 01011,
EgyptianRemilia = 01012,
EgyptianSakuya = 01013,
EgyptianMeiling = 01014,
EgyptianPatchouli = 01015,
FrenchKaguya = 02021,
FrenchReisen = 02022,
FrenchTewi = 02023,
FrenchEirin = 02024,
FrenchMokou = 02025,
GermanyKanako = 03031,
GermanySuwako = 03032,
GermanySanae = 03033,
GermanyAya = 03034,
GermanyMomiji = 03035,
IndianSatori = 04041,
IndianKoishi = 04042,
IndianUtsuho = 04043,
IndianYuugi = 04044,
IndianRin = 04045,
NorwayReimu = 05051,
BritishByakuren = 06061,
PersianMiko = 07071,
ByzantineZanmu = 08081,
// 通用版本(不带国家前缀,仅角色本体相关剧情使用)
Remilia = 100000,
Sakuya = 100001,
}
;
[Serializable]
[CreateAssetMenu(fileName = "StoryDataAssets", menuName = "TH1 Game Data/Story Data Asset")]
public class StoryDataAssets : ScriptableObject
{
public List<StoryCharData> CharDataList;
public List<StorySheetData> SheetData;
public Sprite GetCharSprite(StoryCharEnum charEnum)
{
foreach(var t in CharDataList)
if (t.CharName == charEnum)
return t.CharSprite;
return null;
}
}
[Serializable]
public class StorySheetData
{
public string SheetName;
public List<StoryDiagData> DiagList;
}
[Serializable]
public class StoryDiagData
{
public string GetSpeaker() { return CharName.ToString();}
public StoryCharEnum CharName;
[MultilingualField(false, true, false)]
public string Diag;
}
[Serializable]
public class StoryCharData
{
public StoryCharEnum CharName;
public Sprite CharSprite;
}