Wie einige von euch wissen, ist mein Track Updater immer noch im Beta-Stadium. Eigentlich sollte auch längst ein Street Updater fertig sein, aber das scheitert momentan am Ersetzen der Konstruktionen mit Gleisen oder Straßen.
Folgendes Problem:
Die Updater ersetzen Edges durch sich selbst, um eine Aktualisierung von Einstellungen zu erzwingen, die normalerweise nur auf neu verlegte Edges übernommen werden, z.B. Kurvengeschwindigkeiten. Bei normalen Edges alles kein Problem, klappt wunderbar. Konstruktionen, deren integrierte Edges man ihnen leider nicht "entreißen" und separat aktualisieren kann, müssen leider separat als solche ersetzt werden. Jetzt gibt es Konstruktionen, welche über Comboboxen einstellbare Gleis- oder Straßentypen haben. Momentan sind es drei:
- mein Weichenbaukasten
- Advanced Person Magnet von VacuumTube
- und Track Design Patterns von Enzojz.
Aber es können mehr werden ...
Für ein Construction Update muss ich die Params der alten Konstruktion abfragen und in die Ersatzkonstruktion übertragen; das Thema hatten wir schon an anderer Stelle. Die Params beinhalten u.a. die Slider- und Dialogeinstellungen aus den Konfigurationsdialogen unter postRunFn. Diese sind als Indexnummern gespeichert, aber leider nicht als Values. Bei der Aktualisierung einer Konstruktion werden Gleis- und Straßentypen entsprechend dem aktuellen Repository-Eintrag zugeordnet. Dieser kann sich aber durch Updates seit dem Bau der Konstruktion. geändert haben. Meinetwegen sind statt 10 Gleistypen plötzlich 100 registriert, und alles hat sich verschoben. Das heißt, die Einträge in der Combobox haben sich geändert. Weitere Probleme: Die Reihenfolge im Repository in der Gamescript-API ist nicht dieselbe wie unter postRunFn. Ganz schwierig wird es, wenn noch irgendwelche dynamischen Elemente hinzukommen oder wenn der jeweilige Mod-Autor noch Filter eingebaut hat, die z.B. unsichtbare oder anderweitig ungeeignete Gleistypen herausfiltern.
So habe ich versucht, ziemlich komplizierte Workarounds zu schreiben, die aber individuell auf jede Mod abgestimmt sein müssen, die mit Gleis- oder Straßentypen in Comboboxen arbeitet. Aber an irgendwelchen Hindernissen scheitert es immer wieder. Es wäre so einfach, wenn kein Index, sondern ein Value, sprich Dateiname des Gleis- oder Straßentyps in den Params zurückgegeben würde. Wobei man dann noch wissen müsste, an welcher Stelle die Combobox zu finden ist. Ja, ich kann auch herausfinden, welchen Gleis- oder Straßentyp die alte Edge hat. Aber nicht, unter welchem Index ich diesen Typ für die neue Edge finden würde. Eine Vielzahl von Ersetzungsvorgängen solange durchzuführen, bis per nachträglichem Abgleich der richtige Typ getroffen ist, was ich derzeit als einzige Lösung ansähe, wäre Wahnsinn! Ich habe das Problem auch schon UG geschildert, aber es ist wohl nicht nachvollziehbar.
Wisst ihr, was ich meine? Hat jemand eine Idee? Gibt es vielleicht doch eine Möglichkeit, herauszufinden, welchem Index meine Edge-Datei zugeordnet ist?
Das Problem tritt ausschließlich bei Konstruktionen auf, bei denen Gleis- und Straßentypen über Comboboxen definiert werden, also nicht bei Bahnhöfen, die Gleismodule verwenden. Auch nicht bei Pseudo-Konstruktionen mit freien Edges, die ich ja als solche ersetzen kann.
Warum nur bei Comboboxen? Weil sich bei Comboboxen im Gegensatz zu Buttons die Inhalte ändern können. Bei Buttons hätten wir aber auch ein Problem, falls mal ein Button mittendrin hinzukommt. Wobei man bei manuellen Konstruktions-Upgrade ja noch prüfen kann, ob es passt, und ggf, einfach wieder die richtigen Values heraussucht. Bei automatischen Updates geht das aber nicht bzw. nur im Nachhinein.
Ich habe schon ewig nachgegrübelt, aber ich finde keine Lösung.
Oder doch die Edges den Konstruktionen "entreißen" und als Edges ersetzen? Aber dann crasht es bislang! ![]()