Możesz dokładniej opisać, na jakich zasadach miałby działać Twój VD? Ja tu sobie wyobrażam system o następującej strukturze (odpowiadającej generalnie rzeczywistym systemom automatycznego sterowania, np. działających w centrach sterowania IECC):
infrastruktura przytorowa (zwrotnice, sygnalizatory, odcinki izolowane)
|
zależności wraz z przebiegowym nastawianiem, najlepiej o logice geograficznej
|
automatyka nastawiania przebiegów (ARS), działająca na podstawie śledzenia ruchu (przesuwania numerów wraz z przebiegami - PIP), rozkładu jazdy i poleceń dyspozytorskich z wyższych warstw ("dyżurny ruchu")
|
warstwa optymalizacji ("dyspozytor"), która na bieżąco sprawdza możliwość realizacji rozkładu jazdy poprzez prognozowanie rozwoju sytuacji ruchowej na uproszczonym modelu (np. CPN) i w razie potrzeby modyfikuje rozkład, np. przez zmianę kolejności jazdy lub torów ("polecenia dyspozytorskie")
Ogólnie widzę to jako oddzielną aplikację, może w serwerze, a może jako klient tego serwera (do serwera podłączamy klientów maszynistów i klientów sterujących ruchem). W ten sposób po stronie Maszyny do zrobienia jest dostosowanie scenerii i zapewnienie interfejsu (a ten już w zasadzie jest - WM_COPYDATA), ładowanie tego do exe symulatora jest niepotrzebne i niewskazane (jeżeli już, to jako zewnętrzny, dynamicznie linkowany moduł). Sceneria jest jedynie warstwą wykonawczą (eventy podające sygnały, przestawiające zwrotnice, zamykające przejazdy itp.), potrzebne dane o sieci i rozkładzie jazdy wprowadzane i przetwarzane są niezależnie. Jeżeli sceneria ma także działać bez tego systemu, trzeba przewidzieć opcjonalnie włączany plik, a najlepiej dwa pliki: z eventami sterującymi ruchem (zależności przebiegowe) i eventami kierującymi ruchem (konkretny scenariusz/rozkład jazdy). Eventy te muszą być jednak odseparowane od eventów wykonawczych, tak żeby można było je wyłączyć gdy nie są potrzebne (sterowanie ruchem przez opisany system).
Do prostej automatyki sterowania ruchem w symulatorze wystarczą w zasadzie pierwsze trzy warstwy (sceneria, zależności, ARS), pod warunkiem że zapewnimy unikanie zakleszczeń (deadlock) na odcinkach jednotorowych. Coś takiego już testowałem z niezłymi efektami. Może będę jeszcze rozwijał ten temat, jako że wszystkie warstwy nad infrastrukturą przytorową pokrywają się z tym, co robię i testuję we własnym symulatorze srk, i mogą znaleźć zastosowanie i tu, i tu.