@@ -108,8 +108,12 @@ void UpdateCrossings(Train train, float elapsedTime)
108
108
// Separate tests are performed for present speed and for possible maximum speed to avoid anomolies if train accelerates.
109
109
// Special test is also done to check on section availability to avoid closure beyond signal at danger.
110
110
111
- foreach ( var crossing in TrackCrossingItems . Values . Where ( ci => ci . CrossingGroup != null ) )
111
+ foreach ( var key in TrackCrossingItems . Keys )
112
112
{
113
+ var crossing = TrackCrossingItems [ key ] ;
114
+ if ( crossing ? . CrossingGroup == null )
115
+ continue ;
116
+
113
117
var predictedDist = crossing . CrossingGroup . WarningTime * absSpeedMpS ;
114
118
var maxPredictedDist = crossing . CrossingGroup . WarningTime * ( maxSpeedMpS - absSpeedMpS ) / 2 ; // added distance if train accelerates to maxspeed
115
119
var minimumDist = crossing . CrossingGroup . MinimumDistance ;
@@ -299,11 +303,15 @@ void UpdateCrossings(Train train, float elapsedTime)
299
303
public LevelCrossingItem SearchNearLevelCrossing ( Train train , float reqDist , bool trainForwards , out float frontDist )
300
304
{
301
305
LevelCrossingItem roadItem = LevelCrossingItem . None ;
302
- frontDist = - 1 ;
306
+ frontDist = - 1 ;
303
307
Traveller traveller = trainForwards ? train . FrontTDBTraveller :
304
308
new Traveller ( train . RearTDBTraveller , Traveller . TravellerDirection . Backward ) ;
305
- foreach ( var crossing in TrackCrossingItems . Values . Where ( ci => ci . CrossingGroup != null ) )
309
+ foreach ( var key in TrackCrossingItems . Keys )
306
310
{
311
+ var crossing = TrackCrossingItems [ key ] ;
312
+ if ( crossing ? . CrossingGroup == null )
313
+ continue ;
314
+
307
315
if ( crossing . Trains . Contains ( train ) )
308
316
{
309
317
frontDist = crossing . DistanceTo ( traveller , reqDist ) ;
@@ -445,14 +453,10 @@ public bool HasTrain
445
453
{
446
454
get
447
455
{
448
- bool trains = Items . Any ( i => i . Trains . Count > 0 ) ;
449
- bool staticconsists = Items . Any ( i => i . StaticConsists . Count > 0 ) ;
450
- if ( trains && staticconsists )
451
- return true ;
452
- else if ( trains || staticconsists )
453
- return true ;
454
- else
455
- return false ;
456
+ foreach ( var item in Items )
457
+ if ( item . Trains . Count > 0 || item . StaticConsists . Count > 0 )
458
+ return true ;
459
+ return false ;
456
460
}
457
461
}
458
462
}
0 commit comments