W mover ma zdefiniowane warianty 0, 1, 2, 41, 45, 46. 0-41 wygladaja tak:
(kod byl chyba automatycznie tlumaczony i mozna troche uprzatnac, ale poki dziala to sie nie chce)
case 0: {
if( ( Im <= ( MPTRelay[ ScndCtrlPos ].Iup * PosRatio ) ) && ( ScndCtrlPos < ScndCtrlPosNo ) )
++ScndCtrlPos;
if( ( Im >= ( MPTRelay[ ScndCtrlPos ].Idown * PosRatio ) ) && ( ScndCtrlPos > 0 ) )
--ScndCtrlPos;
break;
}
case 1: {
if( ( MPTRelay[ ScndCtrlPos ].Iup < Vel ) && ( ScndCtrlPos < ScndCtrlPosNo ) )
++ScndCtrlPos;
if( ( MPTRelay[ ScndCtrlPos ].Idown > Vel ) && ( ScndCtrlPos > 0 ) )
--ScndCtrlPos;
break;
}
case 2: {
if( ( MPTRelay[ ScndCtrlPos ].Iup < Vel ) && ( ScndCtrlPos < ScndCtrlPosNo ) && ( EnginePower < ( tmp * 0.99 ) ) )
++ScndCtrlPos;
if( ( MPTRelay[ ScndCtrlPos ].Idown < Im ) && ( ScndCtrlPos > 0 ) )
--ScndCtrlPos;
break;
}
case 41:
{
if( ( MainCtrlPos == MainCtrlPosNo )
&& ( tmpV * 3.6 > MPTRelay[ ScndCtrlPos ].Iup )
&& ( ScndCtrlPos < ScndCtrlPosNo ) ) {
++ScndCtrlPos;
enrot = enrot * 0.73;
}
if( ( Im > MPTRelay[ ScndCtrlPos ].Idown )
&& ( ScndCtrlPos > 0 ) ) {
--ScndCtrlPos;
}
break;
}
PosRatio w wariancie 0 to stosunek biezacego stopnia nastawnikow glownego i bocznego do ogolnej ilosci pozycji dla tych nastawnikow. Wariant 1 przelacza na podstawie aktualnej predkosci, a wariant 2 podobnie jak 1, ale z uwzglednieniem mocy silnika w danej chwili, czy jakos tak. MPTRelay.Iup i .Idown to (zazwyczaj) ostatnie dwie wartosci w tabeli MotorParamTable w pliku fiz
edit: uaktualnienie na dzisiaj
- podpiete pod nowy system kontroli: czuwak i przelaczniki tylnych swiatel. Zeby sterowanie swiatlami nie platalo sie za bardzo w porownaniu z wersja borlandowa, do przelaczania tyllnych swiatel uzywany jest Ctrl + klawisz dla reflektorow (lub Ctrl + Shift + klawisz dla swiatel czerwonych) Dla swiatel przednich kombinacje to 'sam' klawisz dla reflektorow, i Shift + klawisz dla swiatel czerwonych. Efektem ubocznym jest tez ponowna mozliwosc zapalania swiatel koncowych 'zdalnie', przynajmniej na razie -- docelowo chce wprowadzic system, gdzie kazda kabina ma zdefiniowana kompletna liste przelacznikow ktore sa w niej zamontowane i ew. opcjonalny submodel 3d zwiazany z tym przelacznikiem, zamiast obecnej sytuacji w ktorej wymienione sa tylko przelaczniki z submodelami, a exe przyjmuje ze obecne sa wszystkie.
- w trybie debug komendy sterowania pojazdem sa (ponownie) przekazywane do pojazdu takze w czasie przebywania na zewnatrz
- drobne rozszerzenie funkjonalnosci czuwaka -- jesli zdefiniowany jest parameter "AwareMinSpeed" z wartoscia 0 to czuwak bedzie sie tez zalaczal na postoju, pod warunkiem ze nastawnik kierunku nie jest w pozycji neutralnej. Pozwala to na wierniejsze odwzorowanie zachowania lokomotyw takich jak SM42
- poprawione wyswietlanie rozkladu, bedzie on podany dla najblizszej lokomotywy, lub dla lokomotywy ciagnacej sklad, jesli najblizszy pojazd nie ma obsady wlasnej (nie wiem jak sie to zachowa przy jezdzie jako pasazer, ktos to bedzie musial sprawdzic)
- exe nie powinno sie wiecej wysypywac przy braku definicji dzwieku dla przelacznikow w kabinie itp