Jump to content

Wie man die Kupplungen am äußeren Ende eines Zuges deaktiviert.


Goetz

Recommended Posts

Das Titelthema, welches @Phrontistes und @EASY an anderer Stelle angesprochen haben, schien mir eine Tutorial Anlage wert.
Der Thread von Phrontistes hat aber grundsätzlich ein anderes Thema. Deshalb habe ich hierfür einen neuen gestartet.

Unter der Content-ID F1B12254-098F-433A-9B24-BA2FB89A0E59 findet ihr jetzt eine Anlage, die zwei mögliche Wege aufzeigt:

"per Wiederholung" durchläuft alle Fahrzeuge im Zug und setzt jede Kupplung auf aktiv oder inaktiv, je nachdem ob ein Fahrzeug angekuppelt ist oder nicht.

local t = layout:getVehicleGroup(vehicle)

for k, v in ipairs(t) do
    v.couplers[0].enabled = v.couplers[0].connectedCoupler ~= nil
    v.couplers[1].enabled = v.couplers[1].connectedCoupler ~= nil
end

 

"gezielt" spricht nur die beiden äußeren Kupplungen an. Dazu nutzt es die Ausrichtung der beiden Fahrzeuge relativ zur Fahrtrichtung um zu unterscheiden ob jeweils die vordere oder hintere Kupplung außen liegt. Die mathematische Umwandlung der Ausrichtung in den Index für die richtige Kupplung erspart die if-Unterscheidungen.

local t, t2 = layout:getVehicleGroup(vehicle)

local ersterWagen  = t[1]
local letzterWagen = t[#t]

local ersteKupplung  = (1 - t2[1]) // 2
local letzteKupplung = (1 + t2[#t]) // 2

ersterWagen.couplers[ersteKupplung].enabled = false
letzterWagen.couplers[letzteKupplung].enabled = false

"local" hält die Variablen bis zum Ende der Berarbeitung im CPU-nahen Speicher und gibt den Bereich nach Ausführung der Funktion automatisch frei.
Macht für den Ablauf keinen bemerkbaren Unterschied. Hat aber bei großen Programmen den zusätzlichen Nutzen, dass es gegen ungewollte Überschneidungen bei Variablennamen absichert.

Beide Konzepte gehen auf Vorschläge von Phrontistes und EASY zurück.
Und beide leisten dasselbe. (Deshalb ist nur eins der beiden Ereignisse aktiv.)

Außerdem hat die Anlage einen Knopf, der auf dem gelben Gleisabschnitt alle Kupplungen aktiviert.
Vielleicht möchtet ihr ja gerne eigene Konzepte ausprobieren und vergleichen.

Viele Grüße
Götz

Edited by Goetz
Variablen "local" gesetzt
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
×
×
  • Create New...