Über ThemaScript läßt sich für einen Zug das Verhalten bei einem Thementag steuern. Jeder Zug hat dazu ein Script aus der Scriptesammlung (ThemaScript-Lib) zugewiesen und dieses wird somit auch für jeden Zug getrennt ausgeführt. Jedes Thema hat außerdem Klassen (zur Zeit 2), die bestimmen, wann ein Script aufgerufen werden soll, so gibt es eine Klasse "Start" und eine Klasse "Bahnhof". "Start" wird zu Beginn eines Thementags 1x aufgerufen, "Bahnhof" wird für jeden neuen Bahnhof, zu dem ein Zug kommt vorher aufgerufen.
ThemaScript teilt sich in 2 Befehlskategorien:
• Grundbefehle - diese sind englisch
• StellwerkSim Befehle - diese sind deutsch und setzen Werte
ThemaScript benutzt die umgekehrt polnische Notation als Syntax - weil es sehr schnell zu parsen geht, was im Simulator wichtig ist. (Außerdem wir eine Art Turing-Maschine benutzt, um den Ablauf der Befehle und deren Ergebnisse zu steuern - aber der Teil ist für uns nicht wichtig.)
Die UPN wird auch als Postfix-Schreibweise bezeichnet, eine nette kurze Doku dazu gibt es hier: http://www.matheboard.de/lexikon/Umgekehrte_Polnische_Notation,definition.htm
Für jedes Thema muß man eine eigene Befehlskette angeben, dies geht so:
Themenname:Klasse(UPN-Befehle);
Ein Beispiel
winter:start(10,verspätung);
herbst:start(4,tempo);
Im Beispiel werden gleich für 2 Themen die Werte angegeben, nämlich für ein Thema "winter" und für ein Thema "herbst". Im Winter wird die Startverspätung des Zugs direkt mal auf 10 Minuten gesetzt, im Herbst fährt der Zug mit Tempo 4 (was in den meisten Fällen langsamer ist als sonst).
ThemaScript arbeitet kaskadierend, d.h. sind mehrere Themen aktiv, wird ThemaScript nacheinander für alle Themen aufgerufen. Vor dem aller ersten Aufruf werden die Zugwerte auf ihre Grundeinstellungen gesetzt.
Als besonderes Thema gibt es das Thema "*". Dieses steht für "alle Themen", d.h. der Code dahinter wird immer durchlaufen.
*-Thema
*(1,sub);
Das ruft immer den ThemaScript-Code vom Zug 1 auf und ist für andere Züge praktisch, um nicht immer von allen Zügen den Code pflegen zu müssen.
Der UPN-Code ist eine Liste von Zahlen, Worten oder UPN-Code, durch Komma getrennt. Manche Befehle benötigen UPN-Code als Parameter (z.B. der IF-Befehl). Damit dieser Code nicht direkt ausgeführt wird, muß man ihn klammern. Das sieht dann so aus:
Klammern
winter:Start(1,(1,5,rnd),(5,10,rnd),if);
Bearbeitet werden die ThemaScripte in einem eigenen Editor. Den findet ihr in dem man die ThemaScript-Library.
Um nun Scripte zu bearbeiten, sucht man sich das betreffende Script aus und klickt dann auf "zum Script" oder legt am Ende der Seite ein neues ThemaScript an.
Nun öffnet sich der ThemaScript-Editor wo man dann die Scripte bearbeiten, sepichern und testen kann.
Auf den folgenden Seiten sehen wir uns die Grundbefehle, die StellwerkSim Befehle (bzw. Werte, die man verändern kann) und dann noch einige Beispiele an.