using System; using System.Collections.Generic; using System.Linq; using BlueWater.Audios; using UnityEngine; using Sirenix.OdinInspector; namespace BlueWater.Tycoons { public class TycoonManager : Singleton { [field: Title("캐릭터 스테이터스")] [field: SerializeField, CLabel("최대 체력")] public int MaxHeart { get; set; } = 3; [field: SerializeField, CLabel("현재 체력")] private int CurrentHeart; [field: SerializeField, CLabel("무적")] public bool Invincibility = false; public int _CurrentHeart { get => CurrentHeart; set { if (!Invincibility) { CurrentHeart = value;}}} [field: SerializeField, CLabel("이동 속도")] public float Chracter_Speed { get; set; } = 1.0f; [field: Title("음식 스테이터스")] [field: SerializeField, CLabel("Liquid A")] public int LiquidA { get; set; } = 1000; [field: SerializeField, CLabel("Liquid B")] public int LiquidB { get; set; } = 1000; [field: SerializeField, CLabel("Liquid C")] public int LiquidC { get; set; } = 1000; [field: SerializeField, CLabel("Liquid D")] public int LiquidD { get; set; } = 1000; [field: SerializeField, CLabel("Liquid E")] public int LiquidE { get; set; } = 1000; [field: SerializeField, CLabel("Garnish A")] public int GarnishA { get; set; } = 1000; [field: SerializeField, CLabel("Garnish B")] public int GarnishB { get; set; } = 1000; [field: Title("컴포넌트")] [field: SerializeField] public CustomerTableController CustomerTableController { get; private set; } [field: SerializeField] public TycoonStageController TycoonStageController { get; private set; } [SerializeField] private string _dailyBgm; [field: SerializeField, Required] public LevelDataSo LevelDataSo { get; private set; } [field: SerializeField, Required] public CardDataSo CardDataSo { get; private set; } public Action OnTycoonOpenedEvent; public Action OnTycoonClosedEvent; protected override void OnAwake() { InitializeComponents(); } private void Start() { if (!string.IsNullOrEmpty(_dailyBgm)) { AudioManager.Instance.PlayBgm(_dailyBgm); } } [Button("컴포넌트 초기화")] private void InitializeComponents() { CustomerTableController = GetComponent(); TycoonStageController = GetComponent(); } private Dictionary InitializeDictionary(List dataList, Func keySelector) { return dataList.ToDictionary(keySelector); } public T GetDataByIdx(Dictionary dataDictionary, string idx) where T : class { if (dataDictionary.TryGetValue(idx, out var data)) return data; Debug.LogError($"{idx}와 일치하는 아이템이 없습니다."); return null; } public int GetTotalItemCount(Dictionary dataDictionary) { return dataDictionary.Count; } } }