Für den Fall, dass Grundfunktionen derzeit fehlen, wäre jetzt der richtige Zeitpunkt diese einzubringen, damit diese nicht im Gesamtkonzept untergehen.
Da hätte ich auch noch ein paar. Zum einen: Man kann zwar mit mehreren Triggern eine Anforderung auslösen, aber nicht mit einem Trigger mehrere Anforderungen. Das fehlt mir sehr, an der Stelle gefiel mir das Konzept von Omsi besser.
Weiterhin wäre es auch an mancher Stelle schön, wenn man aktive Anforderungen von der Schaltung wieder löschen lassen könnte. Wenn sich das Grundkonzept allerdings noch weiter ändert, dann wird das vielleicht überflüssig. Mal schauen. Aktuell benötigte ich so eine Funktion aber häufiger mal.
Ich würde mir auch wünschen, dass man Ampelschaltungen nicht nur im Editor mit dem Phasenfenster dort erstellen kann, sondern dass man komplexere Schaltungen auch selbst ganz frei als Skript schreiben und dann übers CT importieren könnte. Bitte bitte bitte. So schön und übersichtlich das Phasenfenster auch ist, wenn die Kreuzung ein wenig größer oder die Schaltung etwas komplexer wird, dann kommt man ziemlich zügig an die Grenzen des Editors oder aber der Aufwand wird unverhältnismäßig groß.
Ich möchte mal eine fast noch recht simple Beispielkreuzung beschreiben, die alle diese Funktionen verwenden würde und müsste. Zwei sich kreuzenden Straßen, die Straßenbahn kommt in Mittenlage auf die Kreuzung zu und biegt dort ebenfalls mittig in die kreuzende Straße ab. Ohne Straßenbahn in Annäherung ist auch die Ampelschaltung kein Problem, hier haben einfach die beiden Straßen abwechselnd 40 Sekunden Grün. Kommt nun eine Straßenbahn an, dann soll sie möglichst vorrangig abgefertigt werden, sprich, sofern noch eine Autorichtung Grün hat, soll diese Phase bitte ein wenig eingekürzt und danach sofort eine Grünphase für die Bahn eingeschoben werden.
Das Einkürzen einer Phase ist ohne weiteres leider nicht möglich, jedenfalls meines Wissens nach nicht. Da ich ja nicht weiß, wann die Straßenbahn kommt, war meine Strategie in Omsi (dort mit Bussen, beruhigt Euch wieder), nach einer Mindestphasendauer von sagen wir zehn Sekunden einfach alle zwei Sekunden einen Sprung bis ans Ende der Grünphase einzubauen, der bei Annäherung ausgelöst wird. Und zwischen beiden Autophasen würde ich dort jeweils eine Straßenbahnphase legen, die ebenfalls wieder komplett übersprungen werden kann, diesmal aber dann, wenn keine Annäherung einer Bahn stattfindet. Käme nun eine Bahn, würde die laufende Grünphase mit maximal zwei Sekunden Verzögerung abgebrochen werden und dann die Straßenbahnphase NICHT übersprungen, also eingeschoben werden. Dazu sind aber für jede Richtung mitunter zehn oder mehr anforderungsgesteuerte Sprünge notwendig. In Lotus würde das bedeuten, dass ich zwanzig Trigger setzen müsste. Das würde beim ersten Befahren fantastisch funktionieren, allerdings würde dabei die Bahn alle Trigger auslösen, nicht nur die benötigten, sodass in den nächsten fünfzehn Ampelumläufen die Autophaseauch noch eingekürzt werden würde, obwohl gar keine Bahn mehr kommt. Hier wäre also das Löschen einer Triggerauslösung schon mal notwendig, alternativ das Auslösen mehrerer Sprünge über einen Trigger, wobei man da dann natürlich wieder aufpassen muss, dass die Auslösung nicht zu früh gelöscht würde, sonst wird zwar die Vorphase noch gekürzt, aber die Bahnphase nicht mehr gestartet, das wäre auch etwas blöd.
Nächster spannender Punkt: Ich möchte, dass die Ampel auch immer wartet, bis die Straßenbahn sicher abgebogen ist. Das klingt erst mal einfach, ich setze an die Kreuzungsausfahrt einen Trigger mit den Eigenschaften "Warte, wenn keine Auslösung vorliegt". Das funktioniert auch wunderbar, aber nur in eine Richtung. Baut man das gleiche System in Gegenrichtung ein, dann hat man ein Problem. Die erste Bahn kommt, löst den Trigger zum einschalten der Bahnphase aus. Die Gegenangriff kommt und löst den auf der anderen Seite aus, was aber in der Situation gerade egal ist, weil beide Trigger auf den gleichen Sprung wirken und die Anforderung da noch nicht wieder zurückgesetzt wurde. Jetzt wird die Bahnphase eingeschaltet, die erste Straßenbahn überquert die Kreuzung, löst den Wartetrigger aus, die Ampelanlage sieht die Überquerung also als abgeschlossen an und schaltet die Bahnphase wieder aus. Im günstigen Falle (für uns Ampeltechniker, nicht fürs Fahrpersonal oder die Fahrplaner ) muss der Gegenzug vor der LSA anhalten und sich wieder eine Anforderung erschlüsseln. Dann kriegt er die nächste Phase eingeschoben und meldet sich auch regulär wieder ab. Haben wir aber Pech, dann kommt der Gegenzug auch noch auf die Kreuzung und überfährt ebenfalls seinen Wartetrigger, dessen Aktion ja allerdings schon vom Hinzug ausgelöst wurde. Jetzt verlassen nämlich beide Züge die Kreuzung, während ein Wartetrigger noch scharf ist. Der nächste Zug, der auf die Kreuzung zufährt, hat dann was zu staunen, der kann dann nämlich von Ferne beobachten, wie seine Ampel auf Fahrt springt und dann auch sofort wieder auf Halt fällt, weil seine Phase bereits planmäßig vom Vorzug aufgelöst wurde.
Meldet sich der erste Zug an der Kreuzung an und bekommt seine Phase (der Anmeldetrigger wird also entschärft) und dann rauscht der Gegenzug auf die Kreuzung, meldet sich also ebenfalls an und günstigerweise auch wieder ab, dann kommt es zu der für Autofahrer ungünstigen Situation, dass der en nächste Phase wieder abgeschnitten und eine Bahnphase eingelegt wird, weil die Ampelanlage ja glaubt, dass immer noch ein Zug in Annäherung ist. Gnädigerweise ist die Bahnphase aber wieder ziemlich kurz, denn der Wartetrigger ist ja auch noch scharf.
Jetzt könnte man natürlich für jede Richtung eine eigene Phase anlegen mit eigenen Triggern. Das würde aber dazu führen, dass die Bahnen nur noch nacheinander fahren könnten, weil man ja nicht mehrere Trigger auf einmal auslesen und parallel abarbeiten kann. Also wartet womöglich eine Straßenbahn, während der Gegenzug die Kreuzung überquert. Das ärgert wieder Fahrplaner, Fahrpersonal, Fahrgäste und sogar Autofahrer, weil dadurch die Bahnphasen unnötig länger werden. Einziger Nutznießer wären hier die E-Werke, die eine zusätzliche Anfahrt verkaufen können.
Das Alles könnte man bestimmt prima umgehen, wenn man selbst entscheiden kann, wann man welche Variable zurücksetzt oder ausliest. Und man könnte auch unterscheiden zwischen den Zuständen "Es ist nur ein Trigger ausgelöst" und "Es sind beide Trigger ausgelöst". Was man bestimmt auch für andere Zwecke als nur den obigen nutzen kann, mir fallen schon wieder tausende Ideen ein, die ich Euch aber hier mal erspare.
Setzt man die Anforderungsvariablen immer sofort zurück und zählt die Auslösungen dabei mit, dann kann man sogar eine Art Achszähler imitieren, wodurch man endlich mal das doofe Problem aus Omsi umgehen könnte, dass zu lange Züge Bahnübergänge erst verlassen, wenn die Schranken schon lange wieder oben sind, wohingegen man nach kurzen Triebwagen ewig und drei Tage umsonst warten muss. Aber ich vermute mal, für Bahnübergänge habt ihr eh noch ein anderes System angedacht als diese Trigger, sonst kriegt man ja bei sich begegnenden Zügen das gleiche Problem wie oben an meiner Kreuzung.