Kompatible AddOns

Worum geht es?

Das Ziel ist es, verschiedene AddOns von verschiedenen Programmierern gleichzeitig einsetzen zu können, ohne dass diese sich gegenseitig negativ beeinflussen.

Dies ist nicht selbstverständlich, da es bei Aktivierung mehrerer AddOns sehr leicht zu Überschneidungen und dadurch zu unerwünschten Fehlfunktionen kommen kann.

Es wird daher ein Standard definiert, der weitgehende Kompatibilität zwischen AddOns gewährleisten soll.

Wie erkennt man kompatible AddOns?

Alle AddOns, die diese Schnittstelle verwenden, beginnen mit einem „K-“, wie kompatibel, gefolgt von einem zwei- oder dreistelligen Namenskürzel des Programmierers und einem (möglichst selbsterklärenden) Namen. Dahinter sollte noch die Versionsnummer folgen, um für Tests, Updates usw. besser unterscheiden zu können, z.B.

K-GS-ChaosMitTaster-V2-0
K-RK-RegenSimulation-V1
K-RK-SchadenSimulation-V1
K-XYZ-123456-V1-0

Außerdem können selbstverständlich auch jene AddOns das Prefix „K-“ führen, bei denen jede wechselseitige Beeinflussung ausgeschlossen werden kann, wie z.B.

K-SLX-SiegerhymneBeiRennende-V1-0
K-ABC-JubelschreiWennSiegerImZiel-V2-2

Was bedeutet "AddOn-Schnittstelle"?

Für den Datenaustausch zwischen AddOns werden die globalen Variablen verwendet. Diese gelten „AddOn-übergreifend“, d.h. verschiedene AddOns können ein und denselben Speicherbereich verwenden, der damit als Schnittstelle dient und so eine Kommunikation zwischen den AddOns ermöglicht.

So könnte zum Beispiel eine Datenübergabe von einem AddOn, das für die Chaos-Auslösung zuständig ist, zu einem (oder auch mehreren) AddOns realisiert werden, das (bzw. die) für die Chaos-Verarbeitung eingesetzt werden:

Die Schnittstelle selbst ist nichts anderes als eine Liste, in der festgelegt wird, an welcher Stelle (=Nummer) welche Inhalte (z.B. Slot, Id usw.) gespeichert werden müssen. Damit kann z.B. ein AddOn „Chaos-Erkennung-mit-Taster“ die Slot-Nummer des Auslösers in die globale Variable schreiben und andere AddOns „Chaos-Verarbeitung“ können diesen Wert dort auslesen, z.B. um den Unfall-Piloten zu bestrafen.

Die Werte der AddOn-Schnittstelle

Als definierte Schnittstelle zwischen den AddOns dient ausschließlich der Bereich von der globalen Variablen mit der Nummer 11 bis Nummer 49. Die Nummern 1-10 sind für Cockpit-XP reserviert, die Nummern ab 50 sind für eigene Zwecke frei verfügbar:

Nummer Inhalt ID Typ Werte
01 - 10 reserviert für Cockpit-XP
11 erste Chaos-Auslösung durch Slot-Nummer Slot-Nr. Integer1-6
12 zweite*) Chaos-Auslösung durch Slot-Nummer Slot-Nr. Integer1-6
16 sechste*) Chaos-Auslösung durch Slot-Nummer Slot-Nr. Integer1-6
21 Offset Geschwindigkeits-Wert für ID 1 Integer0-15
22 Offset Geschwindigkeits-Wert für ID 2 Integer0-15
26 Offset Geschwindigkeits-Wert für ID 6 Integer0-15
31 Offset Brems-Wert für ID 1 Integer0-15
32 Offset Brems-Wert für ID 2 Integer0-15
36 Offset Brems-Wert für ID 6 Integer0-15
40 Wetterstatus: 1=Regen, 0=Sonne - Integer0-1
51 Schadensmeldung: 1=Schaden, 0=kein Schaden ID1 Integer0-1
60 RegenAddon ist aktiv: 1=ja, 0=nein Integer0-1
61 SchadenAddon ist aktiv: 1=ja, 0=nein Integer0-1
62 - 99 zur freien Verwendung

😉 Die Felder 12 bis 16 sind für „Mehrfach-Chaos“ gedacht. Es kommt vor, dass (fast) gleichzeitig zwei oder sogar mehr Autos abfliegen. Damit in der Verarbeitung alle ermittelt (und ggf. bestraft usw.) werden können, erfolgt die Eintragung in die globalen Variablen 12 bis 16 in der Reihenfolge der Chaos-Betätigung.

Achtung! Nicht alle AddOns behandeln den Mehrfach-Abflug, auch technisch (z.B. Chaos durch Doppel-Klick der Weichentaste) ist ein Mehrfach-Chaos oft gar nicht möglich.

Wie kann man auf die Werte zugreifen?

Die globalen Variablen sind über eine Nummer ansprechbar und können theoretisch Fließkomma-Zahlen, Ganzzahlen oder Zeichenketten enthalten. Zum aktuellen Zeitpunkt werden allerdings in der AddOn-Schnittstelle nur Daten vom Typ „Integer“ verwendet. Das Setzen der Werte geschieht daher immer über den Befehl cpSetIntegerVarG, das Lesen mit cpGetIntegerVarG.

Allgemeine Informationen zu diesen Befehlen gibt es in den Kapiteln

Regeln, Tipps und Code-Snippets für die AddOn-Schnittstelle

Außerdem findet man Regeln, Tipps und Code-Snippets, die man als Programmierer für die eigenen AddOns verwenden kann, in folgenden Kapiteln:

 
cockpit-xp/addon/schnittstelle.txt · Zuletzt geändert: 2020/11/28 12:14 (Externe Bearbeitung)