2024-09-10 10:25:05 +00:00
|
|
|
using BlueWater.Interfaces;
|
2024-07-08 20:06:22 +00:00
|
|
|
using Sirenix.OdinInspector;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace BlueWater.Players.Tycoons
|
|
|
|
{
|
2024-09-10 10:52:32 +00:00
|
|
|
public class TycoonPickupHandler : MonoBehaviour
|
2024-07-08 20:06:22 +00:00
|
|
|
{
|
|
|
|
[SerializeField]
|
|
|
|
private SpriteRenderer _itemRenderer;
|
|
|
|
|
|
|
|
[SerializeField]
|
2024-09-10 10:52:32 +00:00
|
|
|
private bool _isPickedUpItem;
|
2024-09-10 10:25:05 +00:00
|
|
|
|
|
|
|
private IPickup _currentPickupItem;
|
2024-07-08 20:06:22 +00:00
|
|
|
|
|
|
|
private void Awake()
|
|
|
|
{
|
|
|
|
InitializeComponents();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void Start()
|
|
|
|
{
|
2024-09-12 07:53:16 +00:00
|
|
|
EventManager.OnCocktailCompleted += PickupItem;
|
|
|
|
EventManager.OnCocktailDiscarded += DiscardItem;
|
2024-09-10 10:25:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnDestroy()
|
|
|
|
{
|
2024-09-12 07:53:16 +00:00
|
|
|
EventManager.OnCocktailCompleted -= PickupItem;
|
|
|
|
EventManager.OnCocktailDiscarded -= DiscardItem;
|
2024-07-08 20:06:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
[Button("컴포넌트 초기화")]
|
|
|
|
private void InitializeComponents()
|
|
|
|
{
|
|
|
|
_itemRenderer = transform.Find("VisualLook/Item").GetComponent<SpriteRenderer>();
|
|
|
|
}
|
|
|
|
|
2024-09-10 10:52:32 +00:00
|
|
|
public void PickupItem(IPickup item)
|
2024-07-08 20:06:22 +00:00
|
|
|
{
|
2024-09-10 10:52:32 +00:00
|
|
|
if (_isPickedUpItem)
|
2024-07-08 20:06:22 +00:00
|
|
|
{
|
|
|
|
Debug.Log("이미 아이템을 들고 있습니다.");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2024-09-10 10:25:05 +00:00
|
|
|
_currentPickupItem = item;
|
|
|
|
_itemRenderer.enabled = false;
|
|
|
|
//_itemRenderer.sprite = item.Sprite;
|
2024-09-10 10:52:32 +00:00
|
|
|
_isPickedUpItem = true;
|
2024-07-08 20:06:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public void GiveItem()
|
|
|
|
{
|
2024-09-10 10:52:32 +00:00
|
|
|
if (!_isPickedUpItem || _currentPickupItem == null)
|
2024-07-08 20:06:22 +00:00
|
|
|
{
|
|
|
|
Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다.");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2024-09-10 10:25:05 +00:00
|
|
|
_currentPickupItem = null;
|
2024-07-08 20:06:22 +00:00
|
|
|
_itemRenderer.sprite = null;
|
2024-09-10 10:52:32 +00:00
|
|
|
_isPickedUpItem = false;
|
2024-07-08 20:06:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public void DiscardItem()
|
|
|
|
{
|
2024-09-10 10:52:32 +00:00
|
|
|
if (!_isPickedUpItem || _currentPickupItem == null)
|
2024-07-08 20:06:22 +00:00
|
|
|
{
|
|
|
|
Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다.");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2024-09-10 10:25:05 +00:00
|
|
|
_currentPickupItem = null;
|
2024-07-08 20:06:22 +00:00
|
|
|
_itemRenderer.sprite = null;
|
2024-09-10 10:52:32 +00:00
|
|
|
_isPickedUpItem = false;
|
2024-07-08 20:06:22 +00:00
|
|
|
}
|
|
|
|
|
2024-09-10 10:25:05 +00:00
|
|
|
public IPickup GetCurrentPickupItem() => _currentPickupItem;
|
2024-09-10 10:52:32 +00:00
|
|
|
public bool IsPickedUpItem() => _isPickedUpItem;
|
2024-07-08 20:06:22 +00:00
|
|
|
}
|
|
|
|
}
|