using BlueWater.Interfaces; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater.Players.Tycoons { public class TycoonPickupHandler : MonoBehaviour { [SerializeField] private SpriteRenderer _itemRenderer; [SerializeField] private bool _isUnfinishedCocktailPickedUp; [SerializeField] private bool _isPickedUpItem; private IPickup _currentPickupItem; private void Awake() { InitializeComponents(); } private void Start() { EventManager.OnMakeCocktailStarted += PickupUnfinishedCocktail; EventManager.OnMakeCocktailCompleted += PickupItem; } private void OnDestroy() { EventManager.OnMakeCocktailStarted -= PickupUnfinishedCocktail; EventManager.OnMakeCocktailCompleted -= PickupItem; } [Button("컴포넌트 초기화")] private void InitializeComponents() { _itemRenderer = transform.Find("VisualLook/Item").GetComponent(); } private void PickupUnfinishedCocktail() { _isUnfinishedCocktailPickedUp = true; } public void PickupItem(IPickup item, bool isMadePlayer) { if (!isMadePlayer) return; if (_isPickedUpItem) { Debug.Log("이미 아이템을 들고 있습니다."); return; } _isUnfinishedCocktailPickedUp = false; _currentPickupItem = item; _itemRenderer.enabled = false; //_itemRenderer.sprite = item.Sprite; _isPickedUpItem = true; } public void ServedItem(IPickup item) { if (!_isPickedUpItem || _currentPickupItem == null) { Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다."); return; } _currentPickupItem = null; _itemRenderer.sprite = null; _isPickedUpItem = false; } public void DiscardItem() { if (!_isPickedUpItem && !_isUnfinishedCocktailPickedUp) { Debug.Log("들고있는 아이템이 없습니다."); return; } _isUnfinishedCocktailPickedUp = false; _currentPickupItem = null; _itemRenderer.sprite = null; _isPickedUpItem = false; } public IPickup GetCurrentPickupItem() => _currentPickupItem; public bool IsServablePickupItem() => _isPickedUpItem && _currentPickupItem.Idx != "Cocktail000"; /// /// 완성된 아이템이 있는 경우 /// public bool IsPickedUpItem() => _isPickedUpItem; /// /// 제조중인 칵테일이 있거나, 아이템이 있는 경우 /// public bool IsPickedUpCocktail() => _isPickedUpItem || _isUnfinishedCocktailPickedUp; } }