==== Thema Startampel ==== Das Startampelverhalten wird rein über das Startampel-File "gesteuert".\\ Bei einer Analogbahn heißt die Datei **Startampel.xml**.\\ Bei einer Digitalbahn heißt die Datei **Startampel.xml.CCu**.\\ CXP schaut immer zuerst in den RBS-Ordner und verwendet dann das dort abgelegte Startampel-File. Ist dort kein File vorhanden, wird die entsprechende Datei aus dem cpDefault-Ordner verwendet.\\ **Aus dem Grund sollte eine individuelle Startampel immer im RBS-Ordner liegen, da bei jedem Update der Ordner **Cp Defaults** überschrieben wird.**\\ Das Verhalten und Aussehen einer Startampel wird in diesen zwei Files definiert. Grundsätzlich kann man hier also nicht nur das Aussehen der Ampel sondern auch den Startablauf und noch ein paar andere knuffige Sachen programmieren. === Struktur des Startampel-Files === Das File lässt sich entweder über den RBS-Editor im XML-Modus "öffnen" und editieren oder aber auch über einen externen Editor. Die Struktur des Files ist in folgende Abschnitte unterteilt: * init\\ * training\\ * quali\\ * rennen\\ Innerhalb der Abschnitte training, quali oder rennen gibt es dann noch folgende Unterteilung:\\ * start\\ * abbruch\\ * pause\\ * weiter\\ * yellowphase\\ * ende\\ Soviel zur groben Struktur.\\ Somit lässt sich individuell für Training, quali und\oder rennen ein eigener Ablauf der Ampel realisieren.\\ === init === hier definiert und lädt man sich einmalig die "Ampelbilder", welche dann im Laufe des Startampel-Files verwendet werden sollen über folgende Befehlszeile:\\ ////\\ Eine Angabe der Größe der einzelnen Bilder (in Pixel) erleichtert die folgende Programmierung, ist aber nicht zwingend notwendig. Man darf auf keinen Fall die Bezeichnungen red, yellow, green und off ändern. Den darauffolgenden Name schon. Warum? Kommen wir später noch drauf....\\ Die eigentliche Position auf dem RBS wird immer über folgenden Befehlszeilen definiert:\\ //\\ \\ \\ \\ \\ \\ \\ \\ \\ //\\ Dabei muss man verstehen, dass ein "Frame" um die Ampelbilder gezogen und dann die einzelnen Positionen der Ampelbilder innerhalb vom Frame definiert werden. Das hat den Vorteil, dass man zur Feinjustage dann nur die Frame-Position ändern muss und nicht jedes Ampelbild einzeln.\\ In unserem Beispiel wird in X-Richtung automatisch (auto) zentriert und in Y-Richtung der Frame um 40 Pixel nach unten gesetzt. Der Frame hat eine Breite w = 1040 Pixel und eine Höhe h = 960 Pixel. Als Hintergrundbild wird in dieses Frame das Bild Hintergrund-Ampel-Transparent-Groß.png geladen. Auf diesem Hintergrundbild werden dann anschließend die Positionen der Ampel gesetzt. Ein Hintergrundbild ist nicht zwingend notwendig.\\ === framepos === Folgendes Bild soll einen Rennbildschirm zeigen, auf dem eine Startampel plaziert werden soll. Der Bezugs-Nullpunkt für das spätere Startampel-Frame (0\0) ist immer oben links:\\ {{:cockpit-xp:faq:ampel-frame-1.png?nolink&400|}}\\ Folgendes Bild zeigt eine Startampel, ausgerichtet in x und y über auto, also horizontal und vertikal mittig ausgerichtet:\\ {{:cockpit-xp:faq:ampel-frame-2.png?nolink&400|}}\\ Dieses Bild hier zeigt eine Startampel in x über auto mittig ausgerichtet und in y mit 40 Pixel nach unten platziert:\\ {{:cockpit-xp:faq:ampel-frame-3.png?nolink&400|}}\\ === ampelpos === mit den Befehlszeilen ampelpos werden jetzt innerhalb vom Frame die "Bilder" positioniert, Bezugspunkt (0\0) ist hier auch immer oben links.\\ //\\ \\ \\ \\ \\// {{:cockpit-xp:faq:ampel-frame-4.png?nolink&400|}}\\ Somit ist dann die Startampel an sich erst einmal von der Position her beschrieben.\\ === Ablaufsteuerung === Je nach "Event" (Training, quali oder rennen) läuft dann die Startampel wie programmiert ab. Nehmen wir mal das Beispiel Start vom training:\\ == start == //\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\// Was passiert im Detail?\\ alle Ampel welche mit red=... in der **init** geladen wurden, werden jetzt angezeigt: \\ {{:cockpit-xp:faq:ampelbild1.png?nolink&200|}}\\ als nächstes wird die Tankmenge NICHT gesetzt: \\ und dann wird mal ca. 2 sek. gewartet: \\ Die nächste Befehlszeile gibt das Training frei, sprich ab jetzt werden Runden gezählt bzw. die Rennzeit gestartet: \\ dann schaltet die Ampel auf die Bilder um, welche unter green=... vorher in der **init** geladen wurden: \\ {{:cockpit-xp:faq:ampelbild2.png?nolink&200|}}\\ Dann wieder ca. 1 sek. Wartezeit: \\ Alle Ampeln ausblenden: \\ und fertig...\\ Dieses Vorgehen gilt gleichermaßen für training, quali und rennen\\ == abbruch bzw. pause == //\\ \\ \\ \\ \\ // //\\ \\ \\ \\ \\ // Wird ein Abbruch bzw. Pause erkannt so wird die rote (gelbe) Ampel eingeblendet und mit einem Takt von ca. 1 sek. angezeigt. Das läuft bzw. blinkt dann solange bis ein neuer "Befehl" kommt. == weiter == //\\ \\ \\ \\ \\ \\ \\ \\ // Hier wird jetzt bei Erkennung von **weiter** (also Chaos bzw. Pause Ende) die grüne Ampel angezeigt, ca. 1 sek. gewartet und dann die Ampel ausgeblendet.\\ == yellowphase == //\\ \\ \\ \\ \\ // Hier wird bei Erkennung von Chaos, also Gelbphase (**yellowphase**) alle Ampeln auf yellow geschaltet und getaktet im 1.sek.-Takt und zwar solange, bis eine andere Aktion stattfindet.\\ == ende == //\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ // Hier wird nach Erkennung **ende** (also Training ist zu Ende, da Rundenzahl bzw. Rennzeit erreicht wurde) die rote Ampel eingeblendet, dann 2,5 sek. gewartet und dann kommt eine Sprachausgabe "Fahren Sie jetzt in die Boxengasse", wieder 5 sek. gewartet, Sprachausgabe "Strecke wird gesperrt", 5 sek. warten und dann wird die Ampel ausgeblendet.\\ == Rennstart mit Startampel == //\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\//