OldBlueWater/BlueWater/Assets/02.Scripts/DataManager.cs
2023-08-29 12:41:24 +09:00

75 lines
2.7 KiB
C#

using System.Collections.Generic;
using _02.Scripts.WaterAndShip;
using BlueWaterProject;
using Sirenix.OdinInspector;
using UnityEngine;
public class DataManager : Singleton<DataManager>
{
[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 CardDataSo CardDataSo { get; private set; }
private Dictionary<string, Card> cardDictionary;
[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;
[Title("DataBase", "Sprites")]
public Sprite[] cardType;
protected override void OnAwake()
{
InitDictionary();
InitCard();
}
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_CAPACITY);
cardDictionary = CreateDictionaryFromList(CardDataSo.cardDataList, GlobalValue.CARD_DATA_CAPACITY);
}
private void InitCard()
{
foreach (var item in CardList)
{
UnitManager.Inst.CreateUnit(item, AttackerType.OFFENSE);
}
}
/// <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 Card GetCardDictionaryKey(string idx) => cardDictionary[idx] != null ? cardDictionary[idx] : null;
}