109 lines
3.2 KiB
C#
109 lines
3.2 KiB
C#
using BlueWater.Interfaces;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
|
|
namespace BlueWater.Players.Tycoons
|
|
{
|
|
public class TycoonPickupHandler : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private SpriteRenderer _itemRenderer;
|
|
|
|
[field: SerializeField]
|
|
public bool IsUnfinishedCocktailPickedUp { get; private set; }
|
|
|
|
[field: SerializeField]
|
|
public bool IsPickedUpItem { get; private set; }
|
|
|
|
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<SpriteRenderer>();
|
|
}
|
|
|
|
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 void ChangeItem(IPickup item)
|
|
{
|
|
IsUnfinishedCocktailPickedUp = false;
|
|
_currentPickupItem = item;
|
|
_itemRenderer.enabled = false;
|
|
IsPickedUpItem = true;
|
|
}
|
|
|
|
public IPickup GetCurrentPickupItem() => _currentPickupItem;
|
|
|
|
public bool IsServablePickupItem() => IsPickedUpItem && _currentPickupItem.Idx != "Cocktail000";
|
|
|
|
/// <summary>
|
|
/// 제조중인 칵테일이 있거나, 아이템이 있는 경우
|
|
/// </summary>
|
|
public bool IsPickedUpAnything() => IsPickedUpItem || IsUnfinishedCocktailPickedUp;
|
|
}
|
|
} |