# Consumable.gd
# Resource für verbrauchbare Items (Tränke, Essen, etc.)
extends Resource
class_name Consumable

enum EffectType {
	HEAL_HP,       # HP heilen
	RESTORE_MANA,  # Mana wiederherstellen
	HEAL_AND_MANA, # Beides
}

@export var item_name: String = "Trank"
@export var effect_type: EffectType = EffectType.HEAL_HP
@export var amount: int = 50           # Wie viel geheilt/wiederhergestellt wird
@export var cooldown: float = 1.0      # Cooldown nach Benutzung
@export var icon: Texture2D
@export var stack_size: int = 1        # Aktuelle Anzahl im Stack
@export var max_stack: int = 20        # Maximale Stack-Größe

# Effekt-Beschreibung für Tooltip
func get_effect_text() -> String:
	match effect_type:
		EffectType.HEAL_HP:
			return "Stellt " + str(amount) + " HP wieder her"
		EffectType.RESTORE_MANA:
			return "Stellt " + str(amount) + " Mana wieder her"
		EffectType.HEAL_AND_MANA:
			return "Stellt " + str(amount) + " HP und Mana wieder her"
	return ""

# Effekt auf Spieler anwenden, gibt true zurück wenn verbraucht
func use(player) -> bool:
	match effect_type:
		EffectType.HEAL_HP:
			if player.current_hp >= player.max_hp:
				print("HP bereits voll!")
				return false
			player.heal(amount)
			print("+" + str(amount) + " HP")
		EffectType.RESTORE_MANA:
			if player.current_mana >= player.max_mana:
				print("Mana bereits voll!")
				return false
			player.restore_mana(amount)
			print("+" + str(amount) + " Mana")
		EffectType.HEAL_AND_MANA:
			if player.current_hp >= player.max_hp and player.current_mana >= player.max_mana:
				print("HP und Mana bereits voll!")
				return false
			player.heal(amount)
			player.restore_mana(amount)
			print("+" + str(amount) + " HP und Mana")

	stack_size -= 1
	return true
