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 EnemyViewDataSo EnemyViewDataSo { get; private set; } private Dictionary enemyViewDictionary; [field: SerializeField] public PirateViewDataSo PirateViewDataSo { get; private set; } private Dictionary pirateViewDictionary; [field: SerializeField] public EnemyStatDataSo EnemyStatDataSo { get; private set; } private Dictionary enemyStatDictionary; [field: SerializeField] public PirateStatDataSo PirateStatDataSo { get; private set; } private Dictionary pirateStatDictionary; [field: SerializeField] public EnemyUnitStatDataSo EnemyUnitStatDataSo { get; private set; } private Dictionary enemyUnitDictionary; [field: SerializeField] public PirateUnitStatDataSo PirateUnitDataSo { get; private set; } private Dictionary pirateUnitDictionary; [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; public GameObject radarTargetUi; public GameObject vomit; [Title("DataBase", "Particle")] public GameObject nukeFire; public GameObject grenadeFire; [Title("DataBase", "Sprites")] public Sprite[] cardType; public Texture2D cursorTexture; public Sprite enemyMarker; protected override void OnAwake() { InitDictionary(); } public void InitDictionary() { enemyViewDictionary = CreateDictionaryFromList(EnemyViewDataSo.enemyViewDataList, GlobalValue.ENEMY_VIEW_DATA_CAPACITY); pirateViewDictionary = CreateDictionaryFromList(PirateViewDataSo.pirateViewDataList,GlobalValue.PIRATE_VIEW_DATA_CAPACITY); enemyStatDictionary = CreateDictionaryFromList(EnemyStatDataSo.enemyStatDataList, GlobalValue.ENEMY_STAT_DATA_CAPACITY); pirateStatDictionary = CreateDictionaryFromList(PirateStatDataSo.pirateStatDataList, GlobalValue.ENEMY_STAT_DATA_CAPACITY); enemyUnitDictionary = CreateDictionaryFromList(EnemyUnitStatDataSo.enemyUnitStatDataList, GlobalValue.ENEMY_UNIT_STAT_DATA_CAPACITY); pirateUnitDictionary = CreateDictionaryFromList(PirateUnitDataSo.pirateUnitStatDataList, GlobalValue.PIRATE_UNIT_STAT_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 EnemyView GetEnemyViewDictionaryFromKey(string idx) => enemyViewDictionary[idx] != null ? enemyViewDictionary[idx] : null; public PirateView GetPirateViewDictionaryFromKey(string idx) => pirateViewDictionary[idx] != null ? pirateViewDictionary[idx] : null; public EnemyStat GetEnemyStatDictionaryFromKey(string idx) => enemyStatDictionary[idx] != null ? enemyStatDictionary[idx] : null; public PirateStat GetPirateStatDictionaryFromKey(string idx) => pirateStatDictionary[idx] != null ? pirateStatDictionary[idx] : null; public EnemyUnitStat GetEnemyUnitStatDictionaryFromKey(string idx) => enemyUnitDictionary[idx] != null ? enemyUnitDictionary[idx] : null; public PirateUnitStat GetPirateUnitStatDictionaryFromKey(string idx) => pirateUnitDictionary[idx] != null ? pirateUnitDictionary[idx] : null; public Card GetCardDictionaryFromKey(string idx) => cardDictionary[idx] != null ? cardDictionary[idx] : null; #if UNITY_EDITOR public EnemyView GetEnemyViewSoFromKey(string idx) => EnemyViewDataSo.enemyViewDataList.Find(item => item.Idx == idx); public PirateView GetPirateViewSoFromKey(string idx) => PirateViewDataSo.pirateViewDataList.Find(item => item.Idx == idx); public EnemyStat GetEnemyStatSoFromKey(string idx) => EnemyStatDataSo.enemyStatDataList.Find(item => item.Idx == idx); public PirateStat GetPirateStatSoFromKey(string idx) => PirateStatDataSo.pirateStatDataList.Find(item => item.Idx == idx); public EnemyUnitStat GetEnemyUnitStatSoFromKey(string idx) => EnemyUnitStatDataSo.enemyUnitStatDataList.Find(item => item.Idx == idx); public PirateUnitStat GetPirateUnitStatSoFromKey(string idx) => PirateUnitDataSo.pirateUnitStatDataList.Find(item => item.Idx == idx); #endif } }