summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/aircraft.h3
-rw-r--r--src/effectvehicle_base.h3
-rw-r--r--src/roadveh.h3
-rw-r--r--src/ship.h3
-rw-r--r--src/train.h3
-rw-r--r--src/vehicle.cpp4
-rw-r--r--src/vehicle_base.h10
7 files changed, 8 insertions, 21 deletions
diff --git a/src/aircraft.h b/src/aircraft.h
index 72343e6c5..1977b8249 100644
--- a/src/aircraft.h
+++ b/src/aircraft.h
@@ -100,9 +100,6 @@ struct Aircraft : public SpecializedVehicle<Aircraft, VEH_AIRCRAFT> {
StationID targetairport;
byte state;
- /** Initializes the Vehicle to an aircraft */
- Aircraft() { this->type = VEH_AIRCRAFT; }
-
/** We want to 'destruct' the right class. */
virtual ~Aircraft() { this->PreDestructor(); }
diff --git a/src/effectvehicle_base.h b/src/effectvehicle_base.h
index 5340bdd5d..15c100b06 100644
--- a/src/effectvehicle_base.h
+++ b/src/effectvehicle_base.h
@@ -19,9 +19,6 @@ struct EffectVehicle : public SpecializedVehicle<EffectVehicle, VEH_EFFECT> {
uint16 animation_state;
byte animation_substate;
- /** Initializes the Vehicle to a special vehicle */
- EffectVehicle() { this->type = VEH_EFFECT; }
-
/** We want to 'destruct' the right class. */
virtual ~EffectVehicle() {}
diff --git a/src/roadveh.h b/src/roadveh.h
index f63cf02ee..7a248b8e7 100644
--- a/src/roadveh.h
+++ b/src/roadveh.h
@@ -133,9 +133,6 @@ struct RoadVehicle : public SpecializedVehicle<RoadVehicle, VEH_ROAD> {
RoadType roadtype;
RoadTypes compatible_roadtypes;
- /** Initializes the Vehicle to a road vehicle */
- RoadVehicle() { this->type = VEH_ROAD; }
-
/** We want to 'destruct' the right class. */
virtual ~RoadVehicle() { this->PreDestructor(); }
diff --git a/src/ship.h b/src/ship.h
index 84bd7af57..7e1b2ec6d 100644
--- a/src/ship.h
+++ b/src/ship.h
@@ -20,9 +20,6 @@ void GetShipSpriteSize(EngineID engine, uint &width, uint &height);
struct Ship: public SpecializedVehicle<Ship, VEH_SHIP> {
TrackBitsByte state;
- /** Initializes the Vehicle to a ship */
- Ship() { this->type = VEH_SHIP; }
-
/** We want to 'destruct' the right class. */
virtual ~Ship() { this->PreDestructor(); }
diff --git a/src/train.h b/src/train.h
index b38139e01..c1f9f120d 100644
--- a/src/train.h
+++ b/src/train.h
@@ -310,9 +310,6 @@ struct Train : public SpecializedVehicle<Train, VEH_TRAIN> {
RailTypeByte railtype;
RailTypes compatible_railtypes;
- /** Initializes the Vehicle to a train */
- Train() { this->type = VEH_TRAIN; }
-
/** We want to 'destruct' the right class. */
virtual ~Train() { this->PreDestructor(); }
diff --git a/src/vehicle.cpp b/src/vehicle.cpp
index 2d673e86c..6e3d420bb 100644
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -188,9 +188,9 @@ bool HasVehicleOnTunnelBridge(TileIndex tile, TileIndex endtile, const Vehicle *
}
-Vehicle::Vehicle()
+Vehicle::Vehicle(VehicleType type)
{
- this->type = VEH_INVALID;
+ this->type = type;
this->coord.left = INVALID_COORD;
this->group_id = DEFAULT_GROUP;
this->fill_percent_te_id = INVALID_TE_ID;
diff --git a/src/vehicle_base.h b/src/vehicle_base.h
index e3659a009..581a55135 100644
--- a/src/vehicle_base.h
+++ b/src/vehicle_base.h
@@ -182,7 +182,7 @@ public:
VehicleCache vcache; ///< Cache of often used calculated values
/** Create a new vehicle */
- Vehicle();
+ Vehicle(VehicleType type = VEH_INVALID);
/** Destroy all stuff that (still) needs the virtual functions to work properly */
void PreDestructor();
@@ -503,6 +503,11 @@ struct SpecializedVehicle : public Vehicle {
static const VehicleType EXPECTED_TYPE = Type; ///< Specialized type
/**
+ * Set vehicle type correctly
+ */
+ FORCEINLINE SpecializedVehicle<T, Type>() : Vehicle(Type) { }
+
+ /**
* Get the first vehicle in the chain
* @return first vehicle in the chain
*/
@@ -559,9 +564,6 @@ struct DisasterVehicle : public SpecializedVehicle<DisasterVehicle, VEH_DISASTER
uint16 image_override;
VehicleID big_ufo_destroyer_target;
- /** Initializes the Vehicle to a disaster vehicle */
- DisasterVehicle() { this->type = VEH_DISASTER; }
-
/** We want to 'destruct' the right class. */
virtual ~DisasterVehicle() {}