using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class DataManager : Singleton { [field: Title("Scriptable Object")] [field: SerializeField] public AiViewDataSo AiViewDataSo { get; private set; } private Dictionary aiViewDictionary; [field: SerializeField] public AiStatDataSo AiStatDataSo { get; private set; } private Dictionary aiStatDictionary; [field: SerializeField] public UnitDataSo UnitDataSo { get; private set; } private Dictionary unitDictionary; [field: SerializeField] public UnitDataSo EnemyUnitDataSo { get; private set; } private Dictionary enemyUnitDictionary; [field: SerializeField] public CardDataSo CardDataSo { get; private set; } private Dictionary cardDictionary; [field: Title("DataBase")] [field: SerializeField] public List CardList { get; private set; } = new(GlobalValue.CARD_DATA_CAPACITY); [Title("DataBase", "GameObject")] public GameObject mouseSpot; public GameObject boat; public GameObject assaultCard; [Title("DataBase", "Sprites")] public Sprite[] cardType; public Texture2D cursorTexture; protected override void OnAwake() { InitDictionary(); } private void InitDictionary() { aiViewDictionary = CreateDictionaryFromList(AiViewDataSo.aiViewDataList, GlobalValue.AI_VIEW_DATA_CAPACITY); aiStatDictionary = CreateDictionaryFromList(AiStatDataSo.aiStatDataList, GlobalValue.AI_STAT_DATA_CAPACITY); unitDictionary = CreateDictionaryFromList(UnitDataSo.unitDataList, GlobalValue.UNIT_DATA_CAPACITY); cardDictionary = CreateDictionaryFromList(CardDataSo.cardDataList, GlobalValue.CARD_DATA_CAPACITY); } /// /// Dictionary 초기화 함수 /// private Dictionary CreateDictionaryFromList(List list, int capacity) where T : IIdx { var newDictionary = new Dictionary(capacity); foreach (var item in list) { newDictionary.Add(item.Idx, item); } return newDictionary; } public AiView GetAiViewDictionaryKey(string idx) => aiViewDictionary[idx] != null ? aiViewDictionary[idx] : null; public AiStat GetAiStatDictionaryKey(string idx) => aiStatDictionary[idx] != null ? aiStatDictionary[idx] : null; public Unit GetUnitDictionaryKey(string idx) => unitDictionary[idx] != null ? unitDictionary[idx] : null; public Unit GetEnemyUnitDictionaryKey(string idx) => enemyUnitDictionary[idx] != null ? enemyUnitDictionary[idx] : null; public Card GetCardDictionaryFromKey(string idx) => cardDictionary[idx] != null ? cardDictionary[idx] : null; #if UNITY_EDITOR public AiView GetAiViewSoKey(string idx) => AiViewDataSo.aiViewDataList.Find(item => item.Idx == idx); public AiStat GetAiStatSoKey(string idx) => AiStatDataSo.aiStatDataList.Find(item => item.Idx == idx); public Unit GetUnitSoKey(string idx) => UnitDataSo.unitDataList.Find(item => item.Idx == idx); public Unit GetEnemyUnitSoKey(string idx) => EnemyUnitDataSo.unitDataList.Find(item => item.Idx == idx); #endif } }