using System.Collections.Generic; namespace Wizard; public class AIDataLibrary { private readonly AIDeckData _basicDic; private readonly AIDeckData _commonDic; private readonly AIDeckData _allyCommonDic; private readonly Dictionary _deckDic; private readonly AIStyleData _commonStyle; private readonly Dictionary _deckStyleDic; private AISetUpData setupInfoBuf; private readonly Dictionary emoteDic; public AISetUpData SetupInfoBuf => setupInfoBuf; public AIDataLibrary() { _basicDic = new AIDeckData(); _commonDic = new AIDeckData(); _allyCommonDic = new AIDeckData(); _commonStyle = new AIStyleData(); _deckStyleDic = new Dictionary(); _deckDic = new Dictionary(); emoteDic = new Dictionary(); } public void SaveBattleSetUpInfo(int classID, AI_LOGIC_LV logicLv, string deckName, string styleName, string emoteName, bool useEmote, bool useInnerEmote, int enemyAiID, List specialAbilityList) { setupInfoBuf = new AISetUpData(classID, logicLv, deckName, styleName, emoteName, useEmote, useInnerEmote, enemyAiID, specialAbilityList); } public void RegisterBasicData(AICardDataAsset asset) { _basicDic.RegisterCardData(asset); } public bool RegisterCommonData(AICardDataAsset asset) { AICardData mergeData = _basicDic.SearchCardData(asset.CardID); return _commonDic.RegisterCardData(asset, mergeData); } public bool RegisterAllyCommonData(AICardDataAsset asset) { AICardData mergeData = _basicDic.SearchCardData(asset.CardID); return _allyCommonDic.RegisterCardData(asset, mergeData); } public void RegisterDeckToDeckDic(string deckName, List cardDataAssetList) { AIDeckData aIDeckData = new AIDeckData(); for (int i = 0; i < cardDataAssetList.Count; i++) { AICardDataAsset aICardDataAsset = cardDataAssetList[i]; int cardID = aICardDataAsset.CardID; bool useCommon = aICardDataAsset.UseCommon; AICardData mergeData = ((!useCommon) ? _basicDic.SearchCardData(cardID) : _allyCommonDic.SearchCardData(cardID)); aIDeckData.RegisterCardData(aICardDataAsset, mergeData, useCommon); } RegisterDeck(deckName, aIDeckData); } public bool RegisterDeck(string deckName, AIDeckData deck) { if (_deckDic.ContainsKey(deckName)) { return false; } _deckDic.Add(deckName, deck); return true; } public bool RegisterEmoteSet(string emoteSetName, AIEmoteSet emoteSet) { if (emoteDic.ContainsKey(emoteSetName)) { return false; } emoteDic.Add(emoteSetName, emoteSet); return true; } public AIDeckData SearchDeckData(string name) { if (!_deckDic.ContainsKey(name)) { return null; } return _deckDic[name]; } public AIStyleData SearchDeckStyle(string name) { if (!_deckStyleDic.ContainsKey(name)) { return null; } return _deckStyleDic[name]; } public AIEmoteSet SearchEmoteSet(string name) { if (!emoteDic.ContainsKey(name)) { return null; } return emoteDic[name]; } public AIDeckData GetCommonDic() { return _commonDic; } public AIDeckData GetAllyCommonDic() { return _allyCommonDic; } public void RegisterCommonStyle(List assetList) { _commonStyle.CreateFromAsset(assetList); } public bool RegisterDeckStyle(string styleName, List assetList) { if (_deckStyleDic.ContainsKey(styleName)) { return false; } AIStyleData aIStyleData = new AIStyleData(); aIStyleData.CreateFromAsset(assetList); _deckStyleDic.Add(styleName, aIStyleData); return true; } }