using System; using System.Collections; using System.Collections.Generic; using System.Linq; using Cute; using LitJson; using UnityEngine; // TODO(engine-cleanup-pass2): 310 of 317 methods unrun in baseline // Type: Wizard.Master // See data_dumps/reports/engine-cleanup/live-methods.baseline.txt namespace Wizard; public class Master { public interface ReadFromCsv { void ReadCsvColumns(string[] columns); } private List _roomChaosBattleInfo; private List _colosseumChaosBattleInfo; private List> _chaosBattleInfoList; private Dictionary> _classInfomationOrder; private Dictionary> _roomClassInfomationOrder; private Dictionary> _colosseumClassInfomationOrder; private List>> _classInfomationOrderList; public List ClassCharacterList { get; private set; } public Dictionary SleeveCategoryIdDic { get; set; } public Dictionary LeaderSkinSeriesIdDic { get; set; } public SleeveMgr SleeveMgr { get; private set; } public EmblemMgr EmblemMgr { get; private set; } public DegreeMgr DegreeMgr { get; private set; } public List ItemList { get; set; } public List GiftTransitionList { get; set; } public Dictionary> ClassInfomationOrder { get { switch (DataMgr.BattleType.FreeBattle) // Pre-Phase-5b: headless has no BattleType { case DataMgr.BattleType.RoomTwoPick: case DataMgr.BattleType.TwoPickBackdraft: return _roomClassInfomationOrder; case DataMgr.BattleType.ColosseumTwoPick: return _colosseumClassInfomationOrder; default: return _classInfomationOrder; } } } private Dictionary _crossOverClassInfomationOrder { get; set; } public Dictionary> AvatarClassInformationOrder { get; set; } public List WhenPlayEffectKeywordMaster { get; set; } public List PuzzleQuestDataList { get; private set; } public List TutorialAreaSelectList { get; set; } public AICardDataAssetSet AIBasicDataList { get; set; } public AICardDataAssetSet AICommonDataList { get; set; } public AICardDataAssetSet AIAllyCommonDataList { get; set; } public Dictionary AIDeckDic { get; set; } public List AIStyleCommonDataList { get; set; } public Dictionary> AIStyleDic { get; set; } public Dictionary> AIEmoteDic { get; set; } public Dictionary> _emotionDic { get; set; } public PracticeAISettingDataSet PracticeAISettingList { get; set; } public StoryAISettingDataSet QuestAISettingList { get; set; } public List AICommonFileNameList { get; set; } public List AIAllyCommonFileNameList { get; set; } public AIDeckFileNameList AIDeckFileNameList { get; set; } public AIEmoteFileNameList AIEmoteFileNameList { get; set; } public AIStyleFileNameList AIStyleFileNameList { get; set; } public IDictionary BattleKeyWordDic { get; private set; } public IDictionary CardFilterKeywordReplaceDic { get; private set; } private IDictionary EmoteWordDic { get; set; } private IDictionary CardNameDic { get; set; } private IDictionary TribeNameDic { get; set; } private IDictionary SkillDescDic { get; set; } private IDictionary FlavourTextDic { get; set; } private IDictionary ItemTextDic { get; set; } public IDictionary SleeveTextDic { get; private set; } private IDictionary SleeveCategoryTextDic { get; set; } private IDictionary LeaderSkinProductTextDic { get; set; } private IDictionary LeaderSkinSeriesTextDic { get; set; } public IDictionary ClassCharaTextDic { get; private set; } public IDictionary EmblemTextDic { get; private set; } public IDictionary DegreeTextDic { get; private set; } private IDictionary DegreeAchievementTextDic { get; set; } private Dictionary MyPageBGTextDic { get; set; } public CardSetNameMgr CardSetNameMgr { get; private set; } private IDictionary CardVoiceTextDic { get; set; } public List CardDetailVoiceIgnoreList { get; private set; } private IDictionary PracticeTextDic { get; set; } private IDictionary StorySectionTitleTextDic { get; set; } public IDictionary> RelationCardSortDic { get; private set; } public Dictionary> GleamingGemListMaster { get; set; } public Dictionary MyPageCustomBGMaster { get; private set; } public List MyPageCustomBGMasterList { get; private set; } public Dictionary> RadiantCrystalListMaster { get; set; } public Dictionary> GleamingGemListV2Master { get; set; } public Dictionary> RadiantCrystalListV2Master { get; set; } public List GetGleamingGemList(int classId) { if (GleamingGemListMaster.ContainsKey(classId)) { return GleamingGemListMaster[classId]; } return null; } public List GetRadiantCrystalList(int classId) { if (RadiantCrystalListMaster.ContainsKey(classId)) { return RadiantCrystalListMaster[classId]; } return null; } public List GetGleamingGemListV2Master(int classId) { if (GleamingGemListV2Master.ContainsKey(classId)) { return GleamingGemListV2Master[classId]; } return null; } public List GetRadiantCrystalListV2Master(int classId) { if (RadiantCrystalListV2Master.ContainsKey(classId)) { return RadiantCrystalListV2Master[classId]; } return null; } public void LoadRoomChaosBattleInfo(int num) { if (num > 0 && _chaosBattleInfoList != null) { _roomChaosBattleInfo = _chaosBattleInfoList[num - 1]; } } public void LoadColosseumChaosBattleInfo(int num) { if (num > 0 && _chaosBattleInfoList != null) { _colosseumChaosBattleInfo = _chaosBattleInfoList[num - 1]; } } public void SetRoomClassInfomationOrder(int num) { if (num > 0 && _classInfomationOrderList != null) { _roomClassInfomationOrder = _classInfomationOrderList[num - 1]; } } public void SetColosseumClassInfomationOrder(int num) { if (num > 0 && _classInfomationOrderList != null) { _colosseumClassInfomationOrder = _classInfomationOrderList[num - 1]; } } public List GetCrossOverClassInfoListOrNull(int mainClass, int subClass) { return _crossOverClassInfomationOrder.GetValueOrDefault(mainClass + "|" + subClass, null)?.Split('|').Select(int.Parse).ToList(); } public string GetText(Type key, IDictionary dic) { if (!dic.TryGetValue(key, out var value)) { return key.ToString(); } return value; } public string GetEmoteWordText(string key) { return GetText(key, EmoteWordDic); } public string GetCardNameText(string key) { return GetText(key, CardNameDic); } public string GetTribeNameText(string key) { return GetText(key, TribeNameDic); } public string GetSkillDescText(string key) { return GetText(key, SkillDescDic); } public string GetFlavourText(string key) { return GetText(key, FlavourTextDic); } public string GetItemText(string key) { return GetText(key, ItemTextDic); } public string GetSleeveText(string key) { return GetText(key, SleeveTextDic); } public string GetSleeveCategoryText(string key) { return GetText(key, SleeveCategoryTextDic); } public string GetLeaderSkinProductText(string key) { return GetText(key, LeaderSkinProductTextDic); } public string GetLeaderSkinSeriesText(string key) { return GetText(key, LeaderSkinSeriesTextDic); } public string GetClassCharaText(string key) { return GetText(key, ClassCharaTextDic); } public string GetEmblemText(string key) { return GetText(key, EmblemTextDic); } public string GetDegreeText(string key) { return GetText(key, DegreeTextDic); } public string GetDegreeAchievementText(string key) { return GetText(key, DegreeAchievementTextDic); } public string GetCardVoiceText(string key) { return GetText(key, CardVoiceTextDic); } public string GetPracticeText(string key) { return GetText(key, PracticeTextDic); } public string GetStorySectionTitleText(string key) { return GetText(key, StorySectionTitleTextDic); } public string GetMyPageBGText(string key) { return GetText(key, MyPageBGTextDic); } public List GetAllTribeNameList() { List list = new List(TribeNameDic.Count); foreach (KeyValuePair item in TribeNameDic) { list.Add(item.Value); } return list; } public void StartLoadAIBasicData() { AIBasicDataList = new AICardDataAssetSet(); string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath("ai/ai_basic", ResourcesManager.AssetLoadPathType.Master, isfetch: true); List csv = Utility.ConvertCSV_Array((Toolbox.ResourcesManager.LoadObject(assetTypePath) as TextAsset).ToString()); AIBasicDataList.ConvertCsvTextToAsset(csv); } public void StartLoadAICommonData(List fileList) { AICommonDataList = new AICardDataAssetSet(); for (int i = 0; i < fileList.Count; i++) { string path = "ai/" + fileList[i]; string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.Master, isfetch: true); List csv = Utility.ConvertCSV_Array((Toolbox.ResourcesManager.LoadObject(assetTypePath) as TextAsset).ToString()); AICommonDataList.ConvertCsvTextToAsset(csv); } } public void StartLoadAIAllyCommonData(List fileList) { AIAllyCommonDataList = new AICardDataAssetSet(); for (int i = 0; i < fileList.Count; i++) { string path = "ai/" + fileList[i]; string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.Master, isfetch: true); List csv = Utility.ConvertCSV_Array((Toolbox.ResourcesManager.LoadObject(assetTypePath) as TextAsset).ToString()); AIAllyCommonDataList.ConvertCsvTextToAsset(csv); } } public void StartLoadAIDeckData(int deckID) { if (AIDeckDic == null) { AIDeckDic = new Dictionary(); } string text = "ai/" + AIDeckFileNameList.GetFileName(deckID); if (!AIDeckDic.ContainsKey(text)) { LoadAIDeckData(text); } } private void LoadAIDeckData(string fileName) { string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(fileName, ResourcesManager.AssetLoadPathType.Master, isfetch: true); AICardDataAssetSet aICardDataAssetSet = new AICardDataAssetSet(); List csv = Utility.ConvertCSV_Array((Toolbox.ResourcesManager.LoadObject(assetTypePath) as TextAsset).ToString()); aICardDataAssetSet.ConvertCsvTextToAsset(csv); AIDeckDic.Add(fileName, aICardDataAssetSet); } public void StartLoadAIStyleData(int styleID) { if (AIStyleDic == null) { AIStyleDic = new Dictionary>(); } string fileName = AIStyleFileNameList.GetFileName(styleID); if (fileName != null && !(fileName == "")) { string text = "ai/" + fileName; if (!AIStyleDic.ContainsKey(text)) { LoadAIStyleData(text); } } } private void LoadAIStyleData(string fileName) { string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(fileName, ResourcesManager.AssetLoadPathType.Master, isfetch: true); List list = new List(); foreach (string[] item in Utility.ConvertCSV_Array((Toolbox.ResourcesManager.LoadObject(assetTypePath) as TextAsset).ToString())) { list.Add(new AIPolicyDataAsset(item)); } AIStyleDic.Add(fileName, list); } public void StartLoadAIEmoteData(int emoteID) { if (AIEmoteDic == null) { AIEmoteDic = new Dictionary>(); } string fileName = AIEmoteFileNameList.GetFileName(emoteID); if (fileName != null && !(fileName == "")) { string text = "ai/" + fileName; if (!AIEmoteDic.ContainsKey(text)) { LoadAIEmoteData(text); } } } private void LoadAIEmoteData(string fileName) { string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(fileName, ResourcesManager.AssetLoadPathType.Master, isfetch: true); List list = new List(); foreach (string[] item in Utility.ConvertCSV_Array((Toolbox.ResourcesManager.LoadObject(assetTypePath) as TextAsset).ToString())) { list.Add(new AIEmoteDataAsset(item)); } AIEmoteDic.Add(fileName, list); } private void RegisterAIDeckCsvFilePath(List aiPaths, int deckID) { string fileName = AIDeckFileNameList.GetFileName(deckID); if (AIDeckDic == null || !AIDeckDic.ContainsKey(fileName)) { aiPaths.Add(Toolbox.ResourcesManager.GetAssetTypePath(fileName, ResourcesManager.AssetLoadPathType.Master)); } } private void RegisterAICommonCsvFilePaths(List aiPaths) { for (int i = 0; i < AICommonFileNameList.Count; i++) { aiPaths.Add(Toolbox.ResourcesManager.GetAssetTypePath(AICommonFileNameList[i], ResourcesManager.AssetLoadPathType.Master)); } } private void RegisterAIAllyCommonCsvFilePaths(List aiPaths) { for (int i = 0; i < AIAllyCommonFileNameList.Count; i++) { aiPaths.Add(Toolbox.ResourcesManager.GetAssetTypePath(AIAllyCommonFileNameList[i], ResourcesManager.AssetLoadPathType.Master)); } } private void RegisterAIEmoteCsvFilePath(List aiPaths, int emoteID) { string fileName = AIEmoteFileNameList.GetFileName(emoteID); if (fileName != null && !(fileName == "") && (AIEmoteDic == null || !AIEmoteDic.ContainsKey(fileName))) { aiPaths.Add(Toolbox.ResourcesManager.GetAssetTypePath(fileName, ResourcesManager.AssetLoadPathType.Master)); } } private void RegisterAIStyleCsvFilePath(List aiPaths, int styleID) { string fileName = AIStyleFileNameList.GetFileName(styleID); if (fileName != null && !(fileName == "") && (AIStyleDic == null || !AIStyleDic.ContainsKey(fileName))) { aiPaths.Add(Toolbox.ResourcesManager.GetAssetTypePath(fileName, ResourcesManager.AssetLoadPathType.Master)); } } public void LoadAICsv(AICsvLoadingInfo info, Action callBack) { List aiPaths = new List(); RegisterAICommonCsvPath(aiPaths); RegisterAIIndividualCsvPath(aiPaths, info); Toolbox.ResourcesManager.StartCoroutine_LoadAssetGroupSync(aiPaths, delegate { StartLoadAIBasicAndCommonData(); StartLoadAIIndividualData(info); /* Pre-Phase-5b: RegisterAllAIData dropped */ Toolbox.ResourcesManager.RemoveAssetGroup(aiPaths); callBack.Call(); }); } private void RegisterAICommonCsvPath(List aiPaths) { aiPaths.Add(Toolbox.ResourcesManager.GetAssetTypePath("ai_basic", ResourcesManager.AssetLoadPathType.Master)); if (AICommonDataList == null) { RegisterAICommonCsvFilePaths(aiPaths); } if (AIAllyCommonDataList == null) { RegisterAIAllyCommonCsvFilePaths(aiPaths); } } private void RegisterAIIndividualCsvPath(List aiPaths, AICsvLoadingInfo info) { if (info.DeckId >= 0) { RegisterAIDeckCsvFilePath(aiPaths, info.DeckId); } RegisterAIStyleCsvFilePath(aiPaths, info.StyleId); RegisterAIEmoteCsvFilePath(aiPaths, info.EmoteId); } private void StartLoadAIBasicAndCommonData() { if (AIBasicDataList == null) { StartLoadAIBasicData(); } if (AICommonDataList == null) { StartLoadAICommonData(AICommonFileNameList); } if (AIAllyCommonDataList == null) { StartLoadAIAllyCommonData(AIAllyCommonFileNameList); } } private void StartLoadAIIndividualData(AICsvLoadingInfo info) { if (info.DeckId >= 0) { StartLoadAIDeckData(info.DeckId); } StartLoadAIEmoteData(info.EmoteId); StartLoadAIStyleData(info.StyleId); } }