99 lines
5.3 KiB
C#
99 lines
5.3 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 EnemyViewDataSo EnemyViewDataSo { get; private set; }
|
|
private Dictionary<string, EnemyView> enemyViewDictionary;
|
|
|
|
[field: SerializeField] public PirateViewDataSo PirateViewDataSo { get; private set; }
|
|
private Dictionary<string, PirateView> pirateViewDictionary;
|
|
|
|
[field: SerializeField] public EnemyStatDataSo EnemyStatDataSo { get; private set; }
|
|
private Dictionary<string, EnemyStat> enemyStatDictionary;
|
|
|
|
[field: SerializeField] public PirateStatDataSo PirateStatDataSo { get; private set; }
|
|
private Dictionary<string, PirateStat> pirateStatDictionary;
|
|
|
|
[field: SerializeField] public EnemyUnitStatDataSo EnemyUnitStatDataSo { get; private set; }
|
|
private Dictionary<string, EnemyUnitStat> enemyUnitDictionary;
|
|
|
|
[field: SerializeField] public PirateUnitStatDataSo PirateUnitDataSo { get; private set; }
|
|
private Dictionary<string, PirateUnitStat> pirateUnitDictionary;
|
|
|
|
[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;
|
|
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);
|
|
}
|
|
|
|
/// <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 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
|
|
}
|
|
} |