3. Syntax für action1 und action2
Auch diese Implementierung ist simpel. In Spriteblöcken für Fahrzeuge treten normalerweise zwar lediglich 4- und 8-Richtung-Sprites auf, dennoch schien es hier sinnvoll dieses statement flexibler auszuführen, besonders im Hinblick auf eine spätere Erweiterung auf andere Objekte.
spriteblock({<set>}) - definiert einen sprite-Block
set({<sprite>}) - definiert einen sprite Set
sprite(<realsprite>) - definiert ein einzelnes "real sprite"
in Verbindung mit einer Implementierung für die zugehörige "action2", namens
spriteset(move(<movingstates>), load(<loadingstates>))
sieht die praktische Anwendung dann zB so aus:
Code:
//---------------------------------------
// V200
//---------------------------------------
spriteblock(
// rot
set(
sprite(db_v200.pcx 66 8 01 20 8 -3 -12)
sprite(db_v200.pcx 82 8 09 17 23 -14 -9)
sprite(db_v200.pcx 114 8 01 12 30 -14 -8)
sprite(db_v200.pcx 146 8 09 17 23 -5 -8)
sprite(db_v200.pcx 178 8 01 20 8 -3 -12)
sprite(db_v200.pcx 194 8 09 17 23 -16 -8)
sprite(db_v200.pcx 226 8 01 12 30 -15 -8)
sprite(db_v200.pcx 258 8 09 17 23 -7 -9)
)
// blau/beige
set(
sprite(db_v200.pcx 66 30 01 20 8 -3 -12)
sprite(db_v200.pcx 82 30 09 17 23 -14 -9)
sprite(db_v200.pcx 114 30 01 12 30 -14 -8)
sprite(db_v200.pcx 146 30 09 17 23 -5 -8)
sprite(db_v200.pcx 178 30 01 20 8 -3 -12)
sprite(db_v200.pcx 194 30 09 17 23 -16 -8)
sprite(db_v200.pcx 226 30 01 12 30 -15 -8)
sprite(db_v200.pcx 258 30 09 17 23 -7 -9)
)
)
Hierdurch werden also 2 Sets zu jeweils 8 Richtungssprites definiert.
Code:
def(0) spriteset(move(0), load(0)) // rot
def(1) spriteset(move(1), load(1)) // blau/beige
Die Funktionen "move" und "load" geben die per "spriteblock" definierten und zu verwendenden Sprite-Sets an. Im obigen Beispiel wird lediglich ein Sprite-Set pro Farbgebung verwendet, aber bei einem Güterwagen könnte dies zB so aussehen:
Code:
def(5) spriteset(move(0, 13), load(0, 9, 10, 11, 12, 13))
für 2 Fahrzustände (offen, geschlossen) und 6 Beladungszustände.
4. Syntax für action3
Auch diese Implementierung ist relativ simpel aber effektiv:
makevehicle(<veh-ID>,{c-ID/cargo type pair},<default c-ID>[{,<override>}])
Die Paare von c-IDs und zugehöriger Fracht ("cargo type") werden durch die Funktion "link" realisiert:
link(<c-ID>,{<cargotype>}), sodass eine praktische Anwendung zB so aussehen würde:
Eine Lok:
Code:
makevehicle(0x01,
link(ref(3), MENU) // Kaufmenü
default(ref(1)) // Lok
)
Ein Güterwagen:
Code:
makevehicle(0x43,
link(ref(7), MENU) // Kaufmenü
link(ref(2), LVST) // Vieh
link(ref(6), FOOD, FISH) // Lebensmittel und Fisch
default(ref(1)) // alles andere
)
Ein eventuell notwendiger "livery override" wird durch die Funktion "override" erzeugt:
override(<veh-ID>,<c-ID>), s. Beispiel im nächsten Abschnitt.
-------- Ende Teil 4 -------------------------
Gruß
Michael