Jump to content

Einen noch für die Ereignissteuerung


MarkoP
 Share

Recommended Posts

Hallo Neo,

ich hätte noch einen Wunsch für die Ereignisteuerung. Wäre es möglich bei den Bedingungen unter Auswahl der Lok nicht nur die Trigger und die auf der Anlage vorhandenen Rollmittel auszuwählen sondern auch den Inhalt einer freien Variablen. Dann könnte man Ereignisse auch erstellen ohne zu wissen welche Lok später das Ereignis auslöst.
Ich stelle mir vor, statt des Dropdown-Feldes ein freies Textfeld zu setzen und daneben einen Butten der die bisherige Liste aufruft. Bei einer Auswahl aus der Liste müsste dann der ausgewählte Wert einfach in das Textfeld übertragen werden oder man gibt direkt eine Variable bzw. einen Loknamen in das Textfeld ein.

Dadurch könnte man an beliebiger Stelle zum Beispiel durch "Zug betritt Gleis" und den zugehörigen Trigger den Loknamen in eine freie Variable schreiben lassen und dann auch bei anderen Ereignissen auf diesen Loknamen (z.B. bei Ablauf eines Countdowns unter der Zusatzbedingung "Lok/Wagen steht auf einem Gleis" wieder auf diese bestimmte Lok zurück greifen auch wenn mehre Loks dieses Ereignisse auslösen können.

Wie weit eine Auswahl aus einer Variable bei den Gleisen sinnvoll ist wäre zu prüfen.

Gruß
MarkoP

Link to comment
Share on other sites

Wahrscheinlich schwierig, weil ja der Zugriff auf den Namen der Lok (Lok1._Name) nicht reicht, sondern man eigentlich einen Zeiger (*Lok1) auf das Lokobjekt bräuchte, um auf die Variablen der Lok zugreifen und operieren zu können.

 

In dem Zusammenhang fände ich es allerdings fein, wenn Countdowns bei ihrer Auslösung den Haupttrigger des auslösenden Ereignisses "erben" könnten. Derzeit hat ja das Countdownereignis keinen sinnvollen _Trigger1.

Wenn also statt des -hypothetischen, aber etwas in der Art muss es ja geben- Constructors "Countdown(String name, float delay)" einer eingeführt würde, der "Countdown(String name, float delay, *Object trigger)" hieße, dann könnte man eine Lok einen Countdown auslösen lassen und bei Ablauf desselben ohne Probleme auf die Variablen eben dieser Lok operieren. Man könnte auch Ereignisketten schreiben, wobei der ürsprüngliche Trigger immer weitergereicht würde.

Link to comment
Share on other sites

Hallo Marko,

ließe sich dein Vorhaben nicht auch durch Nutzung von Objektvariablen erreichen? Beim ersten Ereignis wird die Lok (Trigger) speziell markiert. Das zweite Ereignis tritt dann nur ein, wenn der Trigger die Markierung besitzt. Damit wärst du ja unabhängig einer konkreten Lok.

@Elgiloy
Damit dein Vorschlag funktioniert, müssten Countdowns Variablen besitzen können und das Studio müsste Objektketten verarbeiten können, sodass man per "Countdown.Lok._CurrentSpeed" z.B. auf die Variable "_CurrentSpeed" der "Lok" zugreift, die im "Countdown" hinterlegt ist. Sehe ich das richtig?

Viele Grüße,

Neo

Link to comment
Share on other sites

Hallo Neo, wie schon an anderer Stelle geschrieben habe ich es jetzt auch so gelöst. Allerdings funktioniert es nur wenn für das zweite Ereignis die Lok eindeutig angegeben ist. Das wiederum macht es nötig für jede mögliche Lok das Ereignis zu duplizieren. In meinem Fall handelt es sich um einen Frachtbahnhof mit zwei Abstellgleisen welche derzeit von 10 verschiedenen Zügen angefahren werden. Gruß MarkoP
Link to comment
Share on other sites

Hallo Neo,

Verkettete Zeiger hatte ich nicht im Sinn.

ich hatte eigentlich nur daran gedacht, dass das Ereignis "Countdown läuft ab" den _Trigger1 des Ereignisses erbt, welches den Countdown startet. Dazu bräuchte der Countdown keine eigene Objektvariablen außer einem _Trigger1, wie ihn andere Ereignisse auch haben. Nur wäre dieser Trigger jeweils immer derselbe wie schon im aufrufenden Ereignis.

So könnte man nach und nach z.B. eine Reihe von Variablen einer beliebigen Lok in hintereinandergeketteten Countdowns abfragen, ohne dies für jede spezifische Lok einzeln programmieren zu müssen..


 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...