diff --git a/src/station.cpp b/src/station.cpp index 6b583a07cf..641e77c918 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -31,8 +31,14 @@ StationPool _station_pool("Station"); INSTANTIATE_POOL_METHODS(Station) +BaseStation::~BaseStation() +{ + free(this->name); + free(this->speclist); +} + Station::Station(TileIndex tile) : - xy(tile), + BaseStation(tile), train_tile(INVALID_TILE), airport_tile(INVALID_TILE), dock_tile(INVALID_TILE), @@ -57,9 +63,6 @@ Station::Station(TileIndex tile) : */ Station::~Station() { - free(this->name); - free(this->speclist); - if (CleaningPool()) return; while (!this->loading_vehicles.empty()) { diff --git a/src/station_base.h b/src/station_base.h index 821ed1dd63..b9efcc1aed 100644 --- a/src/station_base.h +++ b/src/station_base.h @@ -79,6 +79,10 @@ struct StationRect : public Rect { /** Base class for all station-ish types */ struct BaseStation { + TileIndex xy; ///< Base tile of the station + ViewportSign sign; ///< NOSAVE: Dimensions of sign + byte delete_ctr; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted. + char *name; ///< Custom name StringID string_id; ///< Default name (town area) of station @@ -95,6 +99,9 @@ struct BaseStation { byte waiting_triggers; ///< Waiting triggers (NewGRF) for this station uint8 cached_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen. + BaseStation(TileIndex tile = INVALID_TILE) : xy(tile) { } + virtual ~BaseStation(); + /** * Check whether a specific tile belongs to this station. * @param tile the tile to check @@ -138,7 +145,6 @@ public: return GetAirport(airport_type); } - TileIndex xy; RoadStop *bus_stops; RoadStop *truck_stops; TileIndex train_tile; @@ -147,13 +153,10 @@ public: IndustryType indtype; ///< Industry type to get the name from - ViewportSign sign; - StationHadVehicleOfTypeByte had_vehicle_of_type; byte time_since_load; byte time_since_unload; - byte delete_ctr; byte airport_type; /* trainstation width/height */