2026-03-31 아이템 사용 진행중
This commit is contained in:
@@ -9,7 +9,8 @@ public enum ItemType
|
||||
public enum ItemEffectType
|
||||
{
|
||||
NONE = 0,
|
||||
INTERVAL_DAMAGE = 1
|
||||
RECOVERY_HP = 1,
|
||||
INTERVAL_DAMAGE = 2
|
||||
}
|
||||
|
||||
[CreateAssetMenu(fileName = "New Item", menuName = "Item")]
|
||||
@@ -39,6 +40,9 @@ public class Item : ScriptableObject
|
||||
public Vector3 ColliderCenter = Vector3.zero;
|
||||
public Vector3 ColliderSize = Vector3.one;
|
||||
|
||||
//ItemEffectType.RECOVERY_HP
|
||||
public float RecoveryHP;
|
||||
public float RecoveryHPTime;
|
||||
//ItemEffectType.INTERVAL_DAMAGE 일 경우
|
||||
public float IntervalDamage;
|
||||
public float IntervalDamageTime;
|
||||
|
||||
@@ -33,7 +33,7 @@ public class InputManager : MonoBehaviour
|
||||
public event Action OnKeyDown_EnterEvent;
|
||||
public event Action OnKeyDown_IKeyEvent;
|
||||
|
||||
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (Instance == null)
|
||||
|
||||
@@ -13,9 +13,19 @@ public void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
||||
|
||||
public void ItemUse(ItemInstance item)
|
||||
{
|
||||
if(item.Data.ItemEffectType == ItemEffectType.INTERVAL_DAMAGE)
|
||||
switch(item.Data.ItemEffectType)
|
||||
{
|
||||
IntervalDamageHealthEffect(GameManager.Instance.Level.CurrentCharacter.GetComponent<Health>(), item.Data.IntervalDamage, item.Data.IntervalDamageTime, item.Data.ItemEffectVisual);
|
||||
case ItemEffectType.RECOVERY_HP:
|
||||
{
|
||||
Debug.Log("HP회복 작동!!");
|
||||
//RecoveryHPHealthEffect(GameManager.Instance.Level.CurrentCharacter.GetComponent<Health>(), item.Data.IntervalDamage, item.Data.IntervalDamageTime, item.Data.ItemEffectVisual);
|
||||
}
|
||||
break;
|
||||
case ItemEffectType.INTERVAL_DAMAGE:
|
||||
{
|
||||
IntervalDamageHealthEffect(GameManager.Instance.Level.CurrentCharacter.GetComponent<Health>(), item.Data.IntervalDamage, item.Data.IntervalDamageTime, item.Data.ItemEffectVisual);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class InventorySlot : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler, IPointerMoveHandler
|
||||
public class InventorySlot : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler, IPointerMoveHandler, IPointerClickHandler
|
||||
{
|
||||
public int SlotIndex; // 슬롯의 고유 번호
|
||||
private RectTransform _rectTransform; //슬롯박스 사각형
|
||||
@@ -40,6 +40,71 @@ private void Start()
|
||||
|
||||
}
|
||||
|
||||
public void ClearSlot()
|
||||
{
|
||||
_iconImage.sprite = null;
|
||||
_iconImage.enabled = false;
|
||||
|
||||
_stackText.text = "";
|
||||
_stackText.enabled = false;
|
||||
|
||||
_rarityImage.sprite = _rarity_None_Sprite;
|
||||
//SlotBg.sprite = RarityImage.sprite;
|
||||
}
|
||||
|
||||
public void UpdateSlotUI()
|
||||
{
|
||||
if (currentItem == null)
|
||||
{
|
||||
ClearSlot();
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentItem.Data.Icon != null)
|
||||
{
|
||||
_iconImage.sprite = currentItem.Data.Icon;
|
||||
_iconImage.enabled = true;
|
||||
}
|
||||
|
||||
if (currentItem.Data.IsStackable)
|
||||
_stackText.text = currentItem.CurrentStack.ToString();
|
||||
else
|
||||
_stackText.text = "";
|
||||
|
||||
_stackText.enabled = true;
|
||||
|
||||
switch (currentItem.Data.Rarity)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_1_Sprite;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_2_Sprite;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_3_Sprite;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_4_Sprite;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_None_Sprite;
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
//SlotBg.sprite = _rarityImage.sprite;
|
||||
}
|
||||
|
||||
// 아이템 데이터 설정 및 UI 갱신
|
||||
public void SetItem(ItemInstance newItem)
|
||||
{
|
||||
@@ -119,74 +184,19 @@ public void OnPointerExit(PointerEventData eventData)
|
||||
GameManager.Instance.InGameUI.TooltipUI.HideTooltip();
|
||||
}
|
||||
|
||||
public void ClearSlot()
|
||||
public void OnPointerClick(PointerEventData eventData)
|
||||
{
|
||||
_iconImage.sprite = null;
|
||||
_iconImage.enabled = false;
|
||||
|
||||
_stackText.text = "";
|
||||
_stackText.enabled = false;
|
||||
|
||||
_rarityImage.sprite = _rarity_None_Sprite;
|
||||
//SlotBg.sprite = RarityImage.sprite;
|
||||
}
|
||||
|
||||
public void UpdateSlotUI()
|
||||
{
|
||||
if (currentItem == null)
|
||||
// 우클릭
|
||||
if (eventData.button == PointerEventData.InputButton.Right)
|
||||
{
|
||||
ClearSlot();
|
||||
return;
|
||||
ItemUse();
|
||||
}
|
||||
|
||||
if (currentItem.Data.Icon != null)
|
||||
{
|
||||
_iconImage.sprite = currentItem.Data.Icon;
|
||||
_iconImage.enabled = true;
|
||||
}
|
||||
|
||||
if (currentItem.Data.IsStackable)
|
||||
_stackText.text = currentItem.CurrentStack.ToString();
|
||||
else
|
||||
_stackText.text = "";
|
||||
|
||||
_stackText.enabled = true;
|
||||
|
||||
switch (currentItem.Data.Rarity)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_1_Sprite;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_2_Sprite;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_3_Sprite;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_4_Sprite;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
_rarityImage.sprite = _rarity_None_Sprite;
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
//SlotBg.sprite = _rarityImage.sprite;
|
||||
}
|
||||
|
||||
public void ItemUse()
|
||||
{
|
||||
GameManager.Instance.ItemEffect.ItemUse(currentItem);
|
||||
currentItem.CurrentStack -= 1;
|
||||
UpdateSlotUI();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user