summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ground_vehicle.hpp30
-rw-r--r--src/train.h6
2 files changed, 33 insertions, 3 deletions
diff --git a/src/ground_vehicle.hpp b/src/ground_vehicle.hpp
new file mode 100644
index 000000000..e852fcee2
--- /dev/null
+++ b/src/ground_vehicle.hpp
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/*
+ * This file is part of OpenTTD.
+ * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+ * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** @file ground_vehicle.hpp Base class and functions for all vehicles that move through ground. */
+
+#ifndef GROUND_VEHICLE_HPP
+#define GROUND_VEHICLE_HPP
+
+#include "vehicle_base.h"
+
+/**
+ * Base class for all vehicles that move through ground.
+ */
+template <class T, VehicleType Type>
+struct GroundVehicle : public SpecializedVehicle<T, Type> {
+
+ /**
+ * The constructor at SpecializedVehicle must be called.
+ */
+ GroundVehicle() : SpecializedVehicle<T, Type>() {}
+
+};
+
+#endif /* GROUND_VEHICLE_HPP */
diff --git a/src/train.h b/src/train.h
index 70eed6854..89d9ce63c 100644
--- a/src/train.h
+++ b/src/train.h
@@ -12,12 +12,12 @@
#ifndef TRAIN_H
#define TRAIN_H
-#include "vehicle_base.h"
#include "newgrf_engine.h"
#include "cargotype.h"
#include "rail.h"
#include "engine_base.h"
#include "rail_map.h"
+#include "ground_vehicle.hpp"
struct Train;
@@ -111,7 +111,7 @@ enum AccelStatus {
/**
* 'Train' is either a loco or a wagon.
*/
-struct Train : public SpecializedVehicle<Train, VEH_TRAIN> {
+struct Train : public GroundVehicle<Train, VEH_TRAIN> {
TrainCache tcache;
/* Link between the two ends of a multiheaded engine */
@@ -129,7 +129,7 @@ struct Train : public SpecializedVehicle<Train, VEH_TRAIN> {
uint16 wait_counter;
/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
- Train() : SpecializedVehicle<Train, VEH_TRAIN>() {}
+ Train() : GroundVehicle<Train, VEH_TRAIN>() {}
/** We want to 'destruct' the right class. */
virtual ~Train() { this->PreDestructor(); }