Dienstag, 16. Oktober 2012

Mit lua alle Zonen des Wherigos erfassen

Voraussetzung: "Einstieg in Lua“

Abbildung 1: Definition und Aufruf des lua Codes
Wenn man viel mit lua arbeitet kommt man auch desöfteren an den Punkt, an den man alle Zonen oder alle Character usw. durchiterieren möchte. (Demnächst folgt bereits das erste Anwendungsgebiet beim 7-Zonen-Problem). Um alle Zonen auf einmal zu erfassen, muss man sich ein wenig mit der von Wherigo aufgebauten Datenstruktur auskennen und die Kompatibilität mit allen WIG-Playern im Auge behalten.

Abb. 1 zeigt uns wie es gehen kann: Der Trick dabei ist, dass man über das Cartrigde (angesprochen über den Identifier auf das Feld AllZObjects zugreifen kann. Dort sind alle Objekte (Zonen, Character, Item, Media, Inputs ...) gespeichert, über die man mit einer for Schleife iterieren kann. Nachdem der erste Ansatz über den Klassennamen nicht auf allen Geräten funktioniert, habe ich den Ansatz aus der grünen Hölle umgesetzt und entscheide mittels der tostring Methode ob das Objekt eine Zone ist oder etwas anderes. Der Sicherheit halber wird beim String-Vergleich nicht nach Groß- und Kleinschreibung unterschieden.

Vergesst nicht die -per default nicht persistierete- Variable 'zones' den ZVariables (siehe Zeile 3) hinzu zu fügen, damit das Zonenarray auch nach einem Save/Restore noch zur Verfügung steht.

Der Aufruf der Methode getAllZones muss mit dem Identifier des Cartridges (nicht dem Namen) geschehen.

Noch eine Anmerkung zum Schluss: Das Cartrigde-Objekt besitzt zwar eine komfortable Methode GetAllOfType('ZZone'), diese funktioniert aber nicht auf allen Playern, weswegen der händische Weg, wie oben beschrieben empfehlenswerter ist.

Keine Kommentare:

Kommentar veröffentlichen