Ich muß umdisponieren ...
Eigentlich wollte ich ein paar Schlüssel-Items basteln und daraufhin das
Lock&Key-System angehen, bevor mir gewahr wurde, daß man die Schlüssel aufsammeln muß, und mein starres Inventarsystem dies momentan nicht zulässt ... bzw. momentan braucht jeder Itemtyp einen festen Slot, an den er gehört (Melee-Slot, Ammo-Slot, etc.). Schlüssel bringen das System durcheinander. Bzw. wenn ich jetzt anfangen würde, zusätzliche Inventar-Funktionalitäten zu
hardcoden (Slot für rote Schlüssel, Slot für gelbe Schlüssel, etc.), stehe ich irgendwann vor einem unübersichtlichen Code-Salat, der irgendwie funktioniert, aber keinerlei Modifikationen mehr zulässt. Und so ein System umzuwerfen und zu patchen ist eine Arbeit, die ich mir nicht antun möchte ... also warum das Problem nicht angehen, wenn die Komplexität noch überschaubar ist?
• Jedes Item wird gleichwertig behandelt.
• Items werden nicht mehr beim Aufsammeln "ausgerüstet", sondern landen im allgemeinen Inventar.
• Wenn man ein Item aufnimmt, wird der nächste freie
slotIndex gesucht, bzw. für stapelbare Items der nächste
slotIndex vom selben Itemtyp, welcher noch Kapazität übrig hat.
• Das Item bekommt den Platz zugewiesen, und der entsprechende Slot wird als "voll" geflaggt, bzw. die
Stacks aufaddiert.
• Stapelbare Items können entweder unendlich viel Kapazität haben (Schlüssel), oder eine gewisse Höchstmenge pro Slot (Munition).
• Wenn der Spieler versucht, z.B. 20
Stacks Pfeile aufzuheben, aber die Höchstmenge nur 15 ist, wird jeder Pfeil in einer Schleife einzeln aufgehoben und nach jedem
Stack+1 neu überprüft, wann der aktuelle Slot "voll" ist - wenn ja, wird der nächste freie Slot gesucht (ggf. Kopie des Items anlegen). Dies wird solange wiederholt, bis entweder alle Pfeile aufgehoben wurden, oder kein freier Slot mehr übrig ist. In jedem Fall gibt die Prozedur entweder ein
#False (wenn nichts aufgehoben wurde), oder ein
#True (wenn mindestens 1 Pfeil aufgehoben wurde) an den Requester zurück.
• Ein Rechtsklick auf ein Inventarfeld leert den Slot, und das Item wird fallengelassen - sofern die aktuelle Spieler-Koordinate frei ist.
• Container-Funktionalität steht weiter unten auf der Wunschliste - so etwas wasserdicht zu programmieren ist aber anders komplex
... momentan ist es absolut ausreichend, wenn auf jedem Tile der
worldMap maximal ein Item liegen darf.