1.2. Das "ifyear" Statement als Variation des "if" Statement
ifyear(<Jahr> | <Jahrbereich> | <Jahrliste>)
Eine vielfach benötigte Anwendung eines varaction2 Blocks bzw eines entsprechenden "if" Konstrukts ist die Evaluierung eines Datums, insbesondere des Jahres, zB zum Bestimmen bestimmter Farbgebungen, oder bei Veränderungen der technischen Parameter des Fahrzeuges durch einen callback. Hierfür ist das "ifyear" Statement von Nutzen:
Aus
Code:
-1 * 0 00 02 02 81 C4 00 FF 01
00 00 00 36 // -1974 rot
01 00 // 1975- blau/beige
wird damit
Code:
def(2) yearbuilt(
ref(0) ifyear(1920 .. 1974) // -1974 rot
ref(1) else // 1975- blau/beige
)
d.h. das Konstrukt erlaubt die Eingabe realer Jahreszahlen ohne irgendwelche Umrechnungen.
2. Syntax für action0
Eine Implementierung der nfo "action0" ist einfach, da hier im Prinzip lediglich dezimal vorliegende Werte in Hex-Zahlen umgewandelt werden müssen.
train(<veh-ID>,<name>,{<property>})
Die aktuelle Implementierung bietet aber auch hier durch "implizite" Auswertungen und Berechnungen diverse Vereinfachungen. ZB werden bestimmte "properties" zusammengefasst und gemeinsam evaluiert. Dies geschieht zB bei der Datumsangabe, der Gewichtsangabe oder der Bestimmung der property für die Zugkraft. Diese Werte (und andere) können also komfortabel angegeben werden wie hier zu sehen ist:
Code:
train(10, {"BR 220 (ex V 200)"},
intro(1954) // Einführungsjahr
reliability(11) // Abnahme der Fz-Verlässlichkeit
vehlife(30) // Lebensdauer des Fz (in Jahren)
modlife(30) // Verfügbarkeit des Modells (in Jahren)
enginetype(DIESEL) // Traktionsart und Kostentabelle
speed(140 km/h) // Höchstgeschwindigkeit
power(2700 PS) // Dauerleistung
runningcost(120) // Wartungskosten
dualhead(NO) // einfache Lok
capacity(0) // keine Frachtkapazität
weight(80 t) // Dienstgewicht
price(75) // Kaufpreis
aiusage(10) // AI Rang
effort(235 kN) // Zugkraft
shorter(0) // normale Fahrzeuglänge
retire(2) // frühzeitige Entfernung aus Kaufliste
)
Die "train" Funktion übernimmt hier quasi nebenbei auch die Funktion der "action4", also der Namensgebung. Alle Werte werden dezimal angegeben, es sind keinerlei Umrechnungen erforderlich, auch keine eigene Errechnung der "property" für die Zugkraft aus dem Gewicht der Lok. Auch die Angabe der Nutzung von "callbacks" oder die Festlegung der Frachtmasken erfolgen in komfortabler Weise:
callbacks(CB_POWR, CB_ARTI, CB_RCOL) bzw.
cargomask(PASS, MAIL, TOUR) // Passagiere, Post, Touristen
und sind gleich den ausserhalb der nfo action0 anzugebenden Werten.
Zudem können bestimmte Werte mit Einheiten angegeben werden, sodass eine eventuelle notwendige Umrechnung entfällt. Dies sind
- für Geschwindigkeit: km/h, mph
- für Leistung: kW, PS, hp (SAE hp bzw bhp)
- für Zugkraft: kN, kp, lbf
- für Gewicht: t (metrische Tonne), tnsh (short ton, US), tnl (long ton, UK).
------------ Ende Teil 3 ----------------
Gruß
Michael