94 lines
2.7 KiB
C#
94 lines
2.7 KiB
C#
using BlueWater.Items;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
|
|
namespace BlueWater.Players.Tycoons
|
|
{
|
|
public class TycoonCarryHandler : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private SpriteRenderer _itemRenderer;
|
|
|
|
[SerializeField]
|
|
private bool _isCarriedItem;
|
|
|
|
private ItemData _currentItemData;
|
|
private ItemManager _itemManager;
|
|
|
|
private void Awake()
|
|
{
|
|
InitializeComponents();
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
_itemManager = ItemManager.Instance;
|
|
}
|
|
|
|
[Button("컴포넌트 초기화")]
|
|
private void InitializeComponents()
|
|
{
|
|
_itemRenderer = transform.Find("VisualLook/Item").GetComponent<SpriteRenderer>();
|
|
}
|
|
|
|
public void CarryItem(string itemIdx, bool isUsingSprite = true, ItemQuality itemQuality = ItemQuality.Normal)
|
|
{
|
|
if (_isCarriedItem)
|
|
{
|
|
Debug.Log("이미 아이템을 들고 있습니다.");
|
|
return;
|
|
}
|
|
|
|
_currentItemData = new ItemData(_itemManager.GetItemDataByIdx(itemIdx))
|
|
{
|
|
Quality = itemQuality
|
|
};
|
|
|
|
if (_currentItemData == null)
|
|
{
|
|
Debug.LogError($"{itemIdx} 해당 아이템을 등록할 수 없습니다.");
|
|
return;
|
|
}
|
|
|
|
if (isUsingSprite)
|
|
{
|
|
var itemSprite = _currentItemData.Sprite;
|
|
if (!itemSprite)
|
|
{
|
|
Debug.LogWarning($"{itemSprite} 해당 아이템의 이미지가 없습니다.");
|
|
}
|
|
_itemRenderer.sprite = itemSprite;
|
|
}
|
|
_isCarriedItem = true;
|
|
}
|
|
|
|
public void GiveItem()
|
|
{
|
|
if (!_isCarriedItem || _currentItemData == null)
|
|
{
|
|
Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다.");
|
|
return;
|
|
}
|
|
|
|
_currentItemData = null;
|
|
_itemRenderer.sprite = null;
|
|
_isCarriedItem = false;
|
|
}
|
|
|
|
public void DiscardItem()
|
|
{
|
|
if (!_isCarriedItem || _currentItemData == null)
|
|
{
|
|
Debug.Log("들고있는 아이템이 없거나, 현재 아이템 데이터가 비어있습니다.");
|
|
return;
|
|
}
|
|
|
|
_currentItemData = null;
|
|
_itemRenderer.sprite = null;
|
|
_isCarriedItem = false;
|
|
}
|
|
|
|
public ItemData GetCurrentItemData() => _currentItemData;
|
|
public bool IsCarriedItem() => _isCarriedItem;
|
|
}
|
|
} |