84 lines
2.3 KiB
C#
84 lines
2.3 KiB
C#
using System;
|
|
using BlueWater.Interfaces;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
|
|
namespace BlueWater.Players.Tycoons
|
|
{
|
|
public class TycoonCarryHandler : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private SpriteRenderer _itemRenderer;
|
|
|
|
[SerializeField]
|
|
private bool _isCarriedItem;
|
|
|
|
private IPickup _currentPickupItem;
|
|
|
|
private void Awake()
|
|
{
|
|
InitializeComponents();
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
TycoonEvents.OnCocktailCompleted += CarryItem;
|
|
TycoonEvents.OnCocktailDiscarded += DiscardItem;
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
TycoonEvents.OnCocktailCompleted -= CarryItem;
|
|
TycoonEvents.OnCocktailDiscarded -= DiscardItem;
|
|
}
|
|
|
|
[Button("컴포넌트 초기화")]
|
|
private void InitializeComponents()
|
|
{
|
|
_itemRenderer = transform.Find("VisualLook/Item").GetComponent<SpriteRenderer>();
|
|
}
|
|
|
|
public void CarryItem(IPickup item)
|
|
{
|
|
if (_isCarriedItem)
|
|
{
|
|
Debug.Log("이미 아이템을 들고 있습니다.");
|
|
return;
|
|
}
|
|
|
|
_currentPickupItem = item;
|
|
_itemRenderer.enabled = false;
|
|
//_itemRenderer.sprite = item.Sprite;
|
|
_isCarriedItem = true;
|
|
}
|
|
|
|
public void GiveItem()
|
|
{
|
|
if (!_isCarriedItem || _currentPickupItem == null)
|
|
{
|
|
Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다.");
|
|
return;
|
|
}
|
|
|
|
_currentPickupItem = null;
|
|
_itemRenderer.sprite = null;
|
|
_isCarriedItem = false;
|
|
}
|
|
|
|
public void DiscardItem()
|
|
{
|
|
if (!_isCarriedItem || _currentPickupItem == null)
|
|
{
|
|
Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다.");
|
|
return;
|
|
}
|
|
|
|
_currentPickupItem = null;
|
|
_itemRenderer.sprite = null;
|
|
_isCarriedItem = false;
|
|
}
|
|
|
|
public IPickup GetCurrentPickupItem() => _currentPickupItem;
|
|
public bool IsCarriedItem() => _isCarriedItem;
|
|
}
|
|
} |