Jump to content

Einen noch für die Ereignissteuerung


MarkoP

Empfohlene Beiträge

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...