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(); } public void CarryItem(int 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; } }