summaryrefslogtreecommitdiff
path: root/src/train.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/train.h')
-rw-r--r--src/train.h10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/train.h b/src/train.h
index fb99e730e..a96ccb3f2 100644
--- a/src/train.h
+++ b/src/train.h
@@ -301,7 +301,7 @@ struct TrainCache {
*
* As side-effect the vehicle type is set correctly.
*/
-struct Train : public Vehicle {
+struct Train : public SpecializedVehicle<Train, VEH_TRAIN> {
TrainCache tcache;
/* Link between the two ends of a multiheaded engine */
@@ -338,14 +338,10 @@ struct Train : public Vehicle {
Trackdir GetVehicleTrackdir() const;
TileIndex GetOrderStationLocation(StationID station);
bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse);
- Train *First() { return (Train *)this->Vehicle::First(); }
- Train *First() const { return (Train *)this->Vehicle::First(); }
- Train *Next() { return (Train *)this->Vehicle::Next(); }
- Train *Next() const { return (Train *)this->Vehicle::Next(); }
- Train *Previous() { return (Train *)this->Vehicle::Previous(); }
- Train *Previous() const { return (Train *)this->Vehicle::Previous(); }
};
+#define FOR_ALL_TRAINS(var) FOR_ALL_VEHICLES_OF_TYPE(Train, var)
+
/**
* Get the next part of a multi-part engine.
* Will only work on a multi-part engine (EngineHasArticPart(v) == true),