# Inventory.gd # Verwaltet das Spieler-Inventar mit Items und Gold extends Resource class_name Inventory signal inventory_changed signal gold_changed(new_amount: int) const MAX_SLOTS = 20 # Maximale Inventarplätze var items: Array[Equipment] = [] var gold: int = 0 func _init(): items = [] gold = 0 # Item hinzufügen - gibt true zurück wenn erfolgreich func add_item(item: Equipment) -> bool: if items.size() >= MAX_SLOTS: print("Inventar voll!") return false items.append(item) inventory_changed.emit() print("Item erhalten: ", item.item_name) return true # Item an Index entfernen func remove_item_at(index: int) -> Equipment: if index < 0 or index >= items.size(): return null var item = items[index] items.remove_at(index) inventory_changed.emit() return item # Item direkt entfernen func remove_item(item: Equipment) -> bool: var index = items.find(item) if index == -1: return false items.remove_at(index) inventory_changed.emit() return true # Gold hinzufügen func add_gold(amount: int): gold += amount gold_changed.emit(gold) print("+", amount, " Gold (Gesamt: ", gold, ")") # Gold ausgeben - gibt true zurück wenn genug vorhanden func spend_gold(amount: int) -> bool: if gold < amount: print("Nicht genug Gold!") return false gold -= amount gold_changed.emit(gold) return true # Prüfen ob Inventar voll ist func is_full() -> bool: return items.size() >= MAX_SLOTS # Anzahl freier Slots func free_slots() -> int: return MAX_SLOTS - items.size() # Item an Index holen func get_item(index: int) -> Equipment: if index < 0 or index >= items.size(): return null return items[index] # Anzahl Items func item_count() -> int: return items.size()