@@ -658,10 +658,7 @@ public void Reserve(Train.TrainRouted thisTrain, Train.TCSubpathRoute thisRoute)
658
658
659
659
// remove from claim or deadlock claim
660
660
661
- if ( CircuitState . TrainClaimed . ContainsTrain ( thisTrain ) )
662
- {
663
- CircuitState . TrainClaimed = removeFromQueue ( CircuitState . TrainClaimed , thisTrain ) ;
664
- }
661
+ CircuitState . TrainClaimed . RemoveTrain ( thisTrain ) ;
665
662
666
663
// get element in routepath to find required alignment
667
664
@@ -902,15 +899,8 @@ public void SetOccupied(Train.TrainRouted thisTrain, int reqDistanceTravelledM)
902
899
CircuitState . TrainReserved = null ;
903
900
CircuitState . SignalReserved = - 1 ;
904
901
905
- if ( CircuitState . TrainClaimed . ContainsTrain ( thisTrain ) )
906
- {
907
- CircuitState . TrainClaimed = removeFromQueue ( CircuitState . TrainClaimed , thisTrain ) ;
908
- }
909
-
910
- if ( CircuitState . TrainPreReserved . ContainsTrain ( thisTrain ) )
911
- {
912
- CircuitState . TrainPreReserved = removeFromQueue ( CircuitState . TrainPreReserved , thisTrain ) ;
913
- }
902
+ CircuitState . TrainClaimed . RemoveTrain ( thisTrain ) ;
903
+ CircuitState . TrainPreReserved . RemoveTrain ( thisTrain ) ;
914
904
915
905
float distanceToClear = reqDistanceTravelledM + Length + thisTrain . Train . standardOverlapM ;
916
906
@@ -1191,15 +1181,8 @@ public void RemoveTrain(Train.TrainRouted thisTrain, bool resetEndSignal)
1191
1181
ClearOccupied ( thisTrain , resetEndSignal ) ; // call clear occupy to reset signals and switches //
1192
1182
}
1193
1183
1194
- if ( CircuitState . TrainClaimed . ContainsTrain ( thisTrain ) )
1195
- {
1196
- CircuitState . TrainClaimed = removeFromQueue ( CircuitState . TrainClaimed , thisTrain ) ;
1197
- }
1198
-
1199
- if ( CircuitState . TrainPreReserved . ContainsTrain ( thisTrain ) )
1200
- {
1201
- CircuitState . TrainPreReserved = removeFromQueue ( CircuitState . TrainPreReserved , thisTrain ) ;
1202
- }
1184
+ CircuitState . TrainClaimed . RemoveTrain ( thisTrain ) ;
1185
+ CircuitState . TrainPreReserved . RemoveTrain ( thisTrain ) ;
1203
1186
}
1204
1187
1205
1188
@@ -1223,26 +1206,16 @@ public void UnreserveTrain(Train.TrainRouted thisTrain, bool resetEndSignal)
1223
1206
ClearOccupied ( thisTrain , resetEndSignal ) ; // call clear occupy to reset signals and switches //
1224
1207
}
1225
1208
1226
- if ( CircuitState . TrainClaimed . ContainsTrain ( thisTrain ) )
1227
- {
1228
- CircuitState . TrainClaimed = removeFromQueue ( CircuitState . TrainClaimed , thisTrain ) ;
1229
- }
1230
-
1231
- if ( CircuitState . TrainPreReserved . ContainsTrain ( thisTrain ) )
1232
- {
1233
- CircuitState . TrainPreReserved = removeFromQueue ( CircuitState . TrainPreReserved , thisTrain ) ;
1234
- }
1209
+ CircuitState . TrainClaimed . RemoveTrain ( thisTrain ) ;
1210
+ CircuitState . TrainPreReserved . RemoveTrain ( thisTrain ) ;
1235
1211
}
1236
1212
1237
1213
/// <summary>
1238
1214
/// Remove train clain from section
1239
1215
/// </summary>
1240
1216
public void UnclaimTrain ( Train . TrainRouted thisTrain )
1241
1217
{
1242
- if ( CircuitState . TrainClaimed . ContainsTrain ( thisTrain ) )
1243
- {
1244
- CircuitState . TrainClaimed = removeFromQueue ( CircuitState . TrainClaimed , thisTrain ) ;
1245
- }
1218
+ CircuitState . TrainClaimed . RemoveTrain ( thisTrain ) ;
1246
1219
}
1247
1220
1248
1221
/// <summary>
@@ -1307,38 +1280,6 @@ public void ClearReversalClaims(Train.TrainRouted thisTrain)
1307
1280
}
1308
1281
}
1309
1282
1310
- /// <summary>
1311
- /// Remove specified train from queue
1312
- /// </summary>
1313
- static TrainQueue removeFromQueue ( TrainQueue thisQueue , Train . TrainRouted thisTrain )
1314
- {
1315
- List < Train . TrainRouted > tempList = new List < Train . TrainRouted > ( ) ;
1316
- TrainQueue newQueue = new TrainQueue ( ) ;
1317
-
1318
- // extract trains from queue and store in list - this will revert the order!
1319
- // do not store train which is to be removed
1320
-
1321
- int queueCount = thisQueue . Count ;
1322
- while ( queueCount > 0 )
1323
- {
1324
- Train . TrainRouted queueTrain = thisQueue . Dequeue ( ) ;
1325
- if ( thisTrain == null || queueTrain . Train != thisTrain . Train )
1326
- {
1327
- tempList . Add ( queueTrain ) ;
1328
- }
1329
- queueCount = thisQueue . Count ;
1330
- }
1331
-
1332
- // restore the order by requeing
1333
-
1334
- foreach ( Train . TrainRouted queueTrain in tempList )
1335
- {
1336
- newQueue . Enqueue ( queueTrain ) ;
1337
- }
1338
-
1339
- return ( newQueue ) ;
1340
- }
1341
-
1342
1283
/// <summary>
1343
1284
/// align pins switch or crossover
1344
1285
/// </summary>
@@ -1948,7 +1889,7 @@ public bool CanPlaceTrain(Train thisTrain, float offset, float trainLength)
1948
1889
1949
1890
// get other trains in section
1950
1891
1951
- Dictionary < Train , float > trainInfo = new Dictionary < Train , float > ( ) ;
1892
+ Dictionary < Train , float > trainInfo ;
1952
1893
float offsetFromStart = offset ;
1953
1894
1954
1895
// test train ahead of rear end (for non-placed trains, always use direction 0)
0 commit comments