@@ -3789,74 +3789,70 @@ public void updateSpeedInfo()
37893789 }
37903790 }
37913791
3792- else // Enhanced Compatibility on & SpeedLimit
3792+ else if (!thisObject.speed_isWarning) // Enhanced Compatibility on & SpeedLimit
37933793 {
3794- if (!thisObject.speed_isWarning )
3794+ if (actualSpeedMpS > 998f )
37953795 {
3796+ actualSpeedMpS = (float)Simulator.TRK.Tr_RouteFile.SpeedLimit;
3797+ }
37963798
3797- if (actualSpeedMpS > 998f)
3798- {
3799- actualSpeedMpS = (float)Simulator.TRK.Tr_RouteFile.SpeedLimit;
3800- }
3801-
3802- if (actualSpeedMpS > 0)
3799+ if (actualSpeedMpS > 0)
3800+ {
3801+ var tempValidSpeedSignalMpS = validSpeedSignalMpS == -1 ? 999 : validSpeedSignalMpS;
3802+ if (thisObject.speed_noSpeedReductionOrIsTempSpeedReduction == 0)
38033803 {
3804- var tempValidSpeedSignalMpS = validSpeedSignalMpS == -1 ? 999 : validSpeedSignalMpS ;
3805- if (thisObject.speed_noSpeedReductionOrIsTempSpeedReduction == 0 )
3804+ validSpeedLimitMpS = actualSpeedMpS ;
3805+ if (actualSpeedMpS > Math.Min(tempValidSpeedSignalMpS, validTempSpeedLimitMpS) )
38063806 {
3807- validSpeedLimitMpS = actualSpeedMpS;
3808- if (actualSpeedMpS > Math.Min(tempValidSpeedSignalMpS, validTempSpeedLimitMpS))
3807+ if (validSpeedMpS < Math.Min(tempValidSpeedSignalMpS, validTempSpeedLimitMpS))
38093808 {
3810- if (validSpeedMpS < Math.Min(tempValidSpeedSignalMpS, validTempSpeedLimitMpS))
3811- {
3812- actualSpeedMpS = Math.Min(tempValidSpeedSignalMpS, validTempSpeedLimitMpS);
3813- }
3814- else
3815- {
3816- actualSpeedMpS = -1;
3817- }
3809+ actualSpeedMpS = Math.Min(tempValidSpeedSignalMpS, validTempSpeedLimitMpS);
38183810 }
3819- }
3820- else
3821- {
3822- validTempSpeedLimitMpS = actualSpeedMpS;
3823- if (actualSpeedMpS > Math.Min(tempValidSpeedSignalMpS, validSpeedLimitMpS))
3811+ else
38243812 {
3825- if (validSpeedMpS < Math.Min(tempValidSpeedSignalMpS, validSpeedLimitMpS))
3826- {
3827- actualSpeedMpS = Math.Min(tempValidSpeedSignalMpS, validSpeedLimitMpS);
3828- }
3829- else
3830- {
3831- actualSpeedMpS = -1;
3832- }
3813+ actualSpeedMpS = -1;
38333814 }
38343815 }
38353816 }
3836- else if (actualSpeedMpS < 0 && thisObject.speed_reset == 0)
3817+ else
38373818 {
3838- float newSpeedMpS1 = Math.Min(validSpeedSignalMpS, Math.Min(validSpeedLimitMpS, validTempSpeedLimitMpS));
3839-
3840- if (newSpeedMpS1 != validSpeedMpS)
3819+ validTempSpeedLimitMpS = actualSpeedMpS;
3820+ if (actualSpeedMpS > Math.Min(tempValidSpeedSignalMpS, validSpeedLimitMpS))
38413821 {
3842- actualSpeedMpS = newSpeedMpS1;
3843- }
3844- else
3845- {
3846- actualSpeedMpS = -1;
3822+ if (validSpeedMpS < Math.Min(tempValidSpeedSignalMpS, validSpeedLimitMpS))
3823+ {
3824+ actualSpeedMpS = Math.Min(tempValidSpeedSignalMpS, validSpeedLimitMpS);
3825+ }
3826+ else
3827+ {
3828+ actualSpeedMpS = -1;
3829+ }
38473830 }
38483831 }
3849- else if (thisObject.speed_reset == 1)
3832+ }
3833+ else if (actualSpeedMpS < 0 && thisObject.speed_reset == 0)
3834+ {
3835+ float newSpeedMpS1 = Math.Min(validSpeedSignalMpS, Math.Min(validSpeedLimitMpS, validTempSpeedLimitMpS));
3836+
3837+ if (newSpeedMpS1 != validSpeedMpS)
38503838 {
3851- actualSpeedMpS = validSpeedLimitMpS ;
3839+ actualSpeedMpS = newSpeedMpS1 ;
38523840 }
3853-
3854- thisObject.actual_speed = actualSpeedMpS;
3855- if (actualSpeedMpS > 0)
3841+ else
38563842 {
3857- validSpeedMpS = actualSpeedMpS ;
3843+ actualSpeedMpS = -1 ;
38583844 }
38593845 }
3846+ else if (thisObject.speed_reset == 1)
3847+ {
3848+ actualSpeedMpS = validSpeedLimitMpS;
3849+ }
3850+
3851+ thisObject.actual_speed = actualSpeedMpS;
3852+ if (actualSpeedMpS > 0)
3853+ {
3854+ validSpeedMpS = actualSpeedMpS;
3855+ }
38603856 }
38613857 }
38623858 }
0 commit comments