2024-07-08 06:02:12 +00:00
|
|
|
using System;
|
2024-09-09 09:50:37 +00:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
2024-07-16 16:05:53 +00:00
|
|
|
using BlueWater.Audios;
|
2024-06-18 18:16:19 +00:00
|
|
|
using UnityEngine;
|
|
|
|
using Sirenix.OdinInspector;
|
|
|
|
|
2024-07-02 18:27:56 +00:00
|
|
|
namespace BlueWater.Tycoons
|
2024-06-18 18:16:19 +00:00
|
|
|
{
|
2024-07-02 18:27:56 +00:00
|
|
|
public class TycoonManager : Singleton<TycoonManager>
|
2024-06-18 18:16:19 +00:00
|
|
|
{
|
2024-07-16 16:05:53 +00:00
|
|
|
[field: Title("컴포넌트")]
|
2024-06-18 18:16:19 +00:00
|
|
|
[field: SerializeField]
|
2024-07-08 20:06:22 +00:00
|
|
|
public CustomerTableController CustomerTableController { get; private set; }
|
|
|
|
|
|
|
|
[field: SerializeField]
|
|
|
|
public TycoonStageController TycoonStageController { get; private set; }
|
2024-06-18 18:16:19 +00:00
|
|
|
|
2024-07-08 06:02:12 +00:00
|
|
|
[SerializeField]
|
2024-07-16 16:05:53 +00:00
|
|
|
private string _dailyBgm;
|
2024-07-22 00:44:38 +00:00
|
|
|
|
2024-09-09 09:50:37 +00:00
|
|
|
[SerializeField, Required]
|
|
|
|
private LevelDataSo _levelDataSo;
|
|
|
|
private Dictionary<string, LevelData> _levelDatas;
|
|
|
|
|
2024-07-08 20:06:22 +00:00
|
|
|
public Action OnTycoonOpenedEvent;
|
|
|
|
public Action OnTycoonClosedEvent;
|
|
|
|
|
2024-06-18 18:16:19 +00:00
|
|
|
protected override void OnAwake()
|
|
|
|
{
|
|
|
|
InitializeComponents();
|
2024-09-09 09:50:37 +00:00
|
|
|
_levelDatas = InitializeDictionary(_levelDataSo.Datas, data => data.Idx);
|
2024-06-18 18:16:19 +00:00
|
|
|
}
|
2024-07-16 16:05:53 +00:00
|
|
|
|
|
|
|
private void Start()
|
|
|
|
{
|
|
|
|
if (!string.IsNullOrEmpty(_dailyBgm))
|
|
|
|
{
|
|
|
|
AudioManager.Instance.PlayBgm(_dailyBgm);
|
|
|
|
}
|
|
|
|
}
|
2024-06-18 18:16:19 +00:00
|
|
|
|
|
|
|
[Button("컴포넌트 초기화")]
|
|
|
|
private void InitializeComponents()
|
|
|
|
{
|
2024-07-08 20:06:22 +00:00
|
|
|
CustomerTableController = GetComponent<CustomerTableController>();
|
|
|
|
TycoonStageController = GetComponent<TycoonStageController>();
|
2024-06-18 18:16:19 +00:00
|
|
|
}
|
2024-09-09 09:50:37 +00:00
|
|
|
|
|
|
|
private Dictionary<string, T> InitializeDictionary<T>(List<T> dataList, Func<T, string> keySelector)
|
|
|
|
{
|
|
|
|
return dataList.ToDictionary(keySelector);
|
|
|
|
}
|
|
|
|
|
|
|
|
public T GetDataByIdx<T>(Dictionary<string, T> dataDictionary, string idx) where T : class
|
|
|
|
{
|
|
|
|
if (dataDictionary.TryGetValue(idx, out var data))
|
|
|
|
return data;
|
|
|
|
|
|
|
|
Debug.LogError($"{idx}와 일치하는 아이템이 없습니다.");
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public LevelData GetLevelDataByIdx(string idx) => GetDataByIdx(_levelDatas, idx);
|
|
|
|
|
2024-06-18 18:16:19 +00:00
|
|
|
}
|
|
|
|
}
|