CapersProject/Assets/02.Scripts/Character/Player/Tycoon/TycoonCarryHandler.cs

84 lines
2.3 KiB
C#
Raw Normal View History

2024-09-10 10:25:05 +00:00
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;
2024-09-10 10:25:05 +00:00
private IPickup _currentPickupItem;
private void Awake()
{
InitializeComponents();
}
private void Start()
{
2024-09-10 10:25:05 +00:00
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>();
}
2024-09-10 10:25:05 +00:00
public void CarryItem(IPickup item)
{
if (_isCarriedItem)
{
Debug.Log("이미 아이템을 들고 있습니다.");
return;
}
2024-09-10 10:25:05 +00:00
_currentPickupItem = item;
_itemRenderer.enabled = false;
//_itemRenderer.sprite = item.Sprite;
_isCarriedItem = true;
}
public void GiveItem()
{
2024-09-10 10:25:05 +00:00
if (!_isCarriedItem || _currentPickupItem == null)
{
Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다.");
return;
}
2024-09-10 10:25:05 +00:00
_currentPickupItem = null;
_itemRenderer.sprite = null;
_isCarriedItem = false;
}
public void DiscardItem()
{
2024-09-10 10:25:05 +00:00
if (!_isCarriedItem || _currentPickupItem == null)
{
Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다.");
return;
}
2024-09-10 10:25:05 +00:00
_currentPickupItem = null;
_itemRenderer.sprite = null;
_isCarriedItem = false;
}
2024-09-10 10:25:05 +00:00
public IPickup GetCurrentPickupItem() => _currentPickupItem;
public bool IsCarriedItem() => _isCarriedItem;
}
}