Ale chyba nie masz na myśli mojej strony? Tam jest tylko "ekstrakt" z całej tematyki. Jeżeli już chcesz się na czymś opierać, to polecam zaopatrzyć się w jakieś porządne książki, np. "Elektryczne urządzenia zrk" WKŁ 1982. Ale to i tak nie zastąpi wiedzy praktycznej - gdybym tworzył symulację wyłącznie na podstawie literatury, to pewnie działała by trochę inaczej.
Pisałem ogólnie
jak wpisałem w google hasła związane z srk to dostałem sporo wyników
Odnośnie mindmapy. Jako "core" obecnie można potraktować wspomnianą bibliotekę, która kontroluje upływ czasu, symuluje ruch i działanie urządzeń zewnętrznych srk oraz dostarcza interfejs do sterowania nimi w dowolny sposób. To jest podstawa całej symulacji. Biblioteka ta otoczona jest podstawowymi funkcjami programu, tzn. obsługa Podglądu sytuacji w terenie, wysyłanie poleceń do składów, główne procedury łączności, podstawowe narzędzia i elementy interfejsu użytkownika itp.
"Wymiennymi modułami" są blokady liniowe, SSP, logika współpracujących posterunków, pulpity nastawcze, a docelowo także rzeczy które są obecnie zagnieżdżone w kodzie głównego pliku: zależności stacyjne, SWDR, RASP, powtarzacze SSP.
Zgadza się, tylko jak mniemam, "core", czyli główny kod został nadmiernie obciążony zbyt wieloma rzeczami i funkcjami, co powoduje również zwiększone zużycie zasobów komputera (ok 17 MB) oraz zwiększenie objętości kodu
Przy czym ich wymienność polega na tym, że można je dodać prosto do projektu i nie do końca prosto powiązać z resztą na poziomie kodu źródłowego (ale nie dlatego, że nie są w C++, tylko dlatego, że tych powiązań jest dużo i są zależne od specyfiki - np. dla nietypowej blokady trzeba wymyślić zmieniony sposób jej obsługi przez AI).
Co sądzicie aby w wersji deweloperskiej spróbować rozwiązania aby stworzyć tzw. "pliki funkcyjne", czyli w odpowiednich katalogach stworzyć pliki w których umieściło by się pogrupowane wg. kategorii funkcjonalności funkcje?
Następnym krokiem było by utworzenie w głównej bibliotece funkcji która wczytywała by te pliki bezpośrednio z plików w tych katalogach. To rozwiązało by sprawę dynamicznego ładowania modułów i innych danych zewnętrznych
Na razie myślę prędzej o automatyzacji tworzenia niektórych typowych powiązań poprzez generowanie potrzebnego kodu na podstawie wprowadzonych danych o posterunku i jego otoczeniu. Nie wchodzi w grę natomiast zmienianie całej architektury programu czy przepisywanie na inne języki - za dużo pracy, za małe korzyści.
Ja mogę pomóc na ochotnika
Przy okazji, co myślisz Pawle o wbudowaniu do ISDR takich edytorów jak np.: edytor RJ, epk, eps, itd. ?