ItemDataBaseWaffen(Struct) ist ja letztlich schon begrifflich ein Widerspruch. Du kommst offensichtlich mit dem Aufbau nicht klar. Ein Struct ist eine benutzerdefinierte MultiVariable und keine DataBase.
Dein Post widerspricht auch deinem Ausgangspost. Dort beschreibst du drei Arrays. Ein Array kann Bestandteil eines Structs sein. Wenn du dann aber Gegenstände in einem Array ablegst, dann hast du eine Datenbank im technischen Sinne. Wie diese aufgebaut ist, regelt dein verwendetes Struct.
Dein Inventar wiederrum hat, wie ich dir gezeigt habe, einen Index für jedes Item was in deinem Inventar liegt. Wählst du ein Item aus dem Inventar aus, so steht über den Index eindeutig identifizierbar fest, welches Item zu ausgewählt hast, weil auf einem Index nur ein Item liegen kann.
Was du mit dem Item machen kannst, muss sich also aus deinem Inventar ergeben. Es muss ja irgendwo hinterlegt sein, um was für ein Item es sich handelt. Aus welcher Eigenschaft leitest du ab, was du mit dem Item alles machen kannst? Ich verwende in einem Struct ein TagArray. Hier werden Tags vergeben, die bestimmen, was für Interaktionen das Item erlaubt. Tags: Delete, Use, Build, Equip.
Eine Logik fragt dann diese Tags ab und ein Widget gibt mir dann aus, was ich machen will.
Im Lexikon habe ich Videos zum Inventar. Die sind zwar nur grundsätzlicher Natur, sollen aber eine mögliche Lösung näher bringen.
Die Empfehlung bei Spielen, die eine große Anzahl an Gegenständen verwalten sollen, ist immer ein DataTable. Auch diesen Aspekt versuche ich in den Videos näher zu bringen.
Deine Herangehensweise vermengt Programmierlogik mit dem BenutzerOverlay (HUD). Du weißt, dass du 3 Datenbanken für verschiedene Items haben willst (Waffen, Bauzeug, Essen).
Lege dir also 3 Structs an und füge alle Variablen ein, die die Eigenschaften dieser 3 Kategorien abdecken.
Beispiel:Waffen (Struct)
Name, Mesh, Thumbnail, SchadenMin, SchadenMax, Haltbarkeit, stabelbar?, Stabelgröße, DropChance, Unique?, handelbar?
Aus diesem Struct erstellst du einen DataTable. Jetzt kannst du alle deine Waffen in diesen Datatable integrieren.
Anschließend erstellst du dir dein Inventar. Dein Inventar ist ein Array mit beispielsweise 10 Slots. Dieses Array besteht wieder aus einem Struct also einem InventoryStruct. Die Bestandteile dieses Structs: Name, Thumbnail, Anzahl, DataTable
Wenn du jetzt aus einer Quelle (Boden, Kiste, Crafting) einen Gegenstand bekommst, ziehst du die Werte des Gegenstandes Aus dem DataTable und legst dein unter Berücksichtigung im Inventar ab. Wenn du jetzt ein Widget erstellst, dann nimmst du das Index des InventarArray und überdrägst es an das Widget. Dann kann das Widget den DataTable abfragen, was mit dem Gegenstand möglich ist und gibt dir die entsprechenden Optionen grafisch aus. Drückst du jetzt auf Löschen oder Ablegen, hast du im Widget die Position des Inventararrays und gibst diese Position an das Inventar zurück und löschst den Eintrag im Array.