OldBlueWater/BlueWater/Assets/02.Scripts/DataManager.cs
2023-09-12 16:41:11 +09:00

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
}
}