(svn r16472) -Codechange: set vehicle type in SpecializedVehicle constructor instead of constructor of each vehicle type

pull/155/head
smatz 15 years ago
parent d1e3b89730
commit 11d88765cc

@ -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(); }

@ -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() {}

@ -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(); }

@ -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(); }

@ -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(); }

@ -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;

@ -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();
@ -502,6 +502,11 @@ template <class T, VehicleType Type>
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() {}

Loading…
Cancel
Save