85 lines
3.7 KiB
C#
85 lines
3.7 KiB
C#
using System.Collections.Generic;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace BlueWaterProject
|
|
{
|
|
public class DataManager : Singleton<DataManager>
|
|
{
|
|
[field: Title("Scriptable Object")]
|
|
[field: SerializeField] public AiViewDataSo AiViewDataSo { get; private set; }
|
|
private Dictionary<string, AiView> aiViewDictionary;
|
|
|
|
[field: SerializeField] public AiStatDataSo AiStatDataSo { get; private set; }
|
|
private Dictionary<string, AiStat> aiStatDictionary;
|
|
|
|
[field: SerializeField] public UnitDataSo UnitDataSo { get; private set; }
|
|
private Dictionary<string, Unit> unitDictionary;
|
|
|
|
[field: SerializeField] public UnitDataSo EnemyUnitDataSo { get; private set; }
|
|
private Dictionary<string, Unit> enemyUnitDictionary;
|
|
|
|
[field: SerializeField] public CardDataSo CardDataSo { get; private set; }
|
|
private Dictionary<string, Card> cardDictionary;
|
|
|
|
[field: Title("DataBase")]
|
|
[field: SerializeField] public List<string> CardList { get; private set; } = new(GlobalValue.CARD_DATA_CAPACITY);
|
|
|
|
[Title("DataBase", "GameObject")]
|
|
public GameObject mouseSpot;
|
|
public GameObject boat;
|
|
public GameObject assaultCard;
|
|
public GameObject radarTargetUi;
|
|
|
|
[Title("DataBase", "Particle")]
|
|
public GameObject nukeFire;
|
|
public GameObject grenadeFire;
|
|
|
|
|
|
[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.ENEMY_STAT_DATA_CAPACITY);
|
|
unitDictionary = CreateDictionaryFromList(UnitDataSo.unitDataList, GlobalValue.UNIT_DATA_CAPACITY);
|
|
cardDictionary = CreateDictionaryFromList(CardDataSo.cardDataList, GlobalValue.CARD_DATA_CAPACITY);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Dictionary 초기화 함수
|
|
/// </summary>
|
|
private Dictionary<string, T> CreateDictionaryFromList<T>(List<T> list, int capacity) where T : IIdx
|
|
{
|
|
var newDictionary = new Dictionary<string, T>(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
|
|
}
|
|
} |