DungeonCrawler/inventory.gd
Andre 9ab6deddff Inventar, Equipment, Klassensystem und Waffenschaden hinzugefügt
- CharacterClass mit Klassen (Krieger, Schurke, Magier) und unbewaffnetem Schaden
- Equipment-System mit 7 Slots, Seltenheiten und Stats
- Inventar-System mit 20 Slots und Gold
- LootTable/LootEntry für Gegner-Drops
- Character Panel (C) mit Stats und Equipment-Anzeige
- Inventory Panel (I) mit Item-Grid und Tooltips
- Klassenauswahl-Menü bei Spielstart
- Waffenschaden in Equipment-Spalte, unbewaffnet klassenabhängig

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 20:10:05 +01:00

77 lines
1.7 KiB
GDScript

# 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()