Hallo zusammen,
ich habe im Rahmen meiner Lua-Bibliothek überlegt: Wie könnte man allgemeine Informationen in den Tag-Texten ablegen, ohne dass sich mehrere Nutzer und Bibliotheken ins Gehege kommen.
In meinem Beispiel möchte ich die Informationen Ziel (Destination) und Linie (Line) im Zug hinterlegen.
In Lua sieht das dann so aus:
local train = Train.forName("#Straßenbahn 1") -- Ich hole mir den Zug
train:setDestination("Hauptbahnhof") -- Ich überschreibe das Fahrziel für den Zug
train:setLine("10") -- Ich überschreibe die Linie für den Zug
-- An anderer Stelle (z.B. in einer Funktion für Kontaktpunkte)
local train = Train.forName(Zugname) -- Ich hole mir den Zug
local destination = train:getDestination() -- Ich lese das Fahrziel aus
local line = train:getLine() -- Ich lese die Linie aus
Im Hintergrund passiert einiges an dieser Stelle:
- Jedes einzelne Rollmaterial bekommt einen mit EEPRollingStockSetTagText einen zugewiesen, der die einzelnen Daten nach dem Prinzip "Schlüssel=Wert" erhält.
Der Schlüssel für Destination ist "d", der für Line ist "l", so steht dann im Tag-Text "d=Hauptbahnhof,l=10".
Es wird eine Fehlermeldung geworfen, wenn der durch die Listenverkettung entstehende Tag-Text mehr als 1024 Zeichen ergibt. - Das Prinzip kann beliebig erweitert werden. Der Vorteil ist, dass man mehrere Werte gleichzeitig speichern kann und nicht nur einen einzelnen Text-Werte.
- Trennzeichen sind derzeit "=" und "," - beide dürfen weder im Schlüssel, noch im Wert vorkommen.
- Der Aufruf von Train.forName("#Straßenbahn 1") macht auch noch einiges:
- Er lädt alle Werte vorhandenen Werte, damit kann ich z.B. auch folgendes machen:
- Ziel abfragen: Train.forName("#Straßenbahn 1"):getDestination()
- Linie abfragen: Train.forName("#Straßenbahn 1"):getLine()
- Er lädt alle Werte vorhandenen Werte, damit kann ich z.B. auch folgendes machen:
Dieser Code wird Teil der nächsten Version meiner Lua-Bibliothek und ist vermutlich eine Voraussetzung für die Anzeige ankommender Fahrzeuge in den Haltestellen
Wenn jeder seine Tags im Rollmaterial so ablegen würde, dann gäbe es keine Konflikte mit mehreren Werten im Rollmaterial, vorausgesetzt, man kann sich auf gemeinsame Werte für die Schlüssel einigen (und die resultierenden Tag-Texte sind kleiner als 1024).
Was meint Ihr?
Viele Grüße,
Andreas_Kreuz.