mirror of https://github.com/OpenTTD/OpenTTD
Codechange: explicitly initialise (Base)Station related member variables
parent
5ccbaa6990
commit
35e58f68e4
|
@ -21,15 +21,15 @@ extern StationPool _station_pool;
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct SpecMapping {
|
struct SpecMapping {
|
||||||
const T *spec; ///< Custom spec.
|
const T *spec = nullptr; ///< Custom spec.
|
||||||
uint32_t grfid; ///< GRF ID of this custom spec.
|
uint32_t grfid = 0; ///< GRF ID of this custom spec.
|
||||||
uint16_t localidx; ///< Local ID within GRF of this custom spec.
|
uint16_t localidx = 0; ///< Local ID within GRF of this custom spec.
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RoadStopTileData {
|
struct RoadStopTileData {
|
||||||
TileIndex tile;
|
TileIndex tile = INVALID_TILE;
|
||||||
uint8_t random_bits;
|
uint8_t random_bits = 0;
|
||||||
uint8_t animation_frame;
|
uint8_t animation_frame = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** StationRect - used to track station spread out rectangle - cheaper than scanning whole map */
|
/** StationRect - used to track station spread out rectangle - cheaper than scanning whole map */
|
||||||
|
@ -56,44 +56,40 @@ struct StationRect : public Rect {
|
||||||
|
|
||||||
/** Base class for all station-ish types */
|
/** Base class for all station-ish types */
|
||||||
struct BaseStation : StationPool::PoolItem<&_station_pool> {
|
struct BaseStation : StationPool::PoolItem<&_station_pool> {
|
||||||
TileIndex xy; ///< Base tile of the station
|
TileIndex xy = INVALID_TILE; ///< Base tile of the station
|
||||||
TrackedViewportSign sign; ///< NOSAVE: Dimensions of sign
|
TrackedViewportSign sign{}; ///< NOSAVE: Dimensions of sign
|
||||||
uint8_t delete_ctr; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted.
|
uint8_t delete_ctr = 0; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted.
|
||||||
|
|
||||||
std::string name; ///< Custom name
|
std::string name{}; ///< Custom name
|
||||||
StringID string_id; ///< Default name (town area) of station
|
StringID string_id = INVALID_STRING_ID; ///< Default name (town area) of station
|
||||||
mutable std::string cached_name; ///< NOSAVE: Cache of the resolved name of the station, if not using a custom name
|
mutable std::string cached_name; ///< NOSAVE: Cache of the resolved name of the station, if not using a custom name
|
||||||
|
|
||||||
Town *town; ///< The town this station is associated with
|
Town *town = nullptr; ///< The town this station is associated with
|
||||||
Owner owner; ///< The owner of this station
|
Owner owner = INVALID_OWNER; ///< The owner of this station
|
||||||
StationFacilities facilities; ///< The facilities that this station has
|
StationFacilities facilities{}; ///< The facilities that this station has
|
||||||
|
|
||||||
std::vector<SpecMapping<StationSpec>> speclist; ///< List of rail station specs of this station.
|
std::vector<SpecMapping<StationSpec>> speclist{}; ///< List of rail station specs of this station.
|
||||||
std::vector<SpecMapping<RoadStopSpec>> roadstop_speclist; ///< List of road stop specs of this station
|
std::vector<SpecMapping<RoadStopSpec>> roadstop_speclist{}; ///< List of road stop specs of this station
|
||||||
|
|
||||||
TimerGameCalendar::Date build_date; ///< Date of construction
|
TimerGameCalendar::Date build_date{}; ///< Date of construction
|
||||||
|
|
||||||
uint16_t random_bits; ///< Random bits assigned to this station
|
uint16_t random_bits = 0; ///< Random bits assigned to this station
|
||||||
uint8_t waiting_triggers; ///< Waiting triggers (NewGRF) for this station
|
uint8_t waiting_triggers = 0; ///< Waiting triggers (NewGRF) for this station
|
||||||
uint8_t cached_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen.
|
uint8_t cached_anim_triggers = 0; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen.
|
||||||
uint8_t cached_roadstop_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask for road stops, used to determine if trigger processing should happen.
|
uint8_t cached_roadstop_anim_triggers = 0; ///< NOSAVE: Combined animation trigger bitmask for road stops, used to determine if trigger processing should happen.
|
||||||
CargoTypes cached_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask
|
CargoTypes cached_cargo_triggers{}; ///< NOSAVE: Combined cargo trigger bitmask
|
||||||
CargoTypes cached_roadstop_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask for road stops
|
CargoTypes cached_roadstop_cargo_triggers{}; ///< NOSAVE: Combined cargo trigger bitmask for road stops
|
||||||
|
|
||||||
TileArea train_station; ///< Tile area the train 'station' part covers
|
TileArea train_station{INVALID_TILE, 0, 0}; ///< Tile area the train 'station' part covers
|
||||||
StationRect rect; ///< NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions
|
StationRect rect{}; ///< NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions
|
||||||
|
|
||||||
std::vector<RoadStopTileData> custom_roadstop_tile_data; ///< List of custom road stop tile data
|
std::vector<RoadStopTileData> custom_roadstop_tile_data{}; ///< List of custom road stop tile data
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the base station.
|
* Initialize the base station.
|
||||||
* @param tile The location of the station sign
|
* @param tile The location of the station sign
|
||||||
*/
|
*/
|
||||||
BaseStation(TileIndex tile) :
|
BaseStation(TileIndex tile) : xy(tile) {}
|
||||||
xy(tile),
|
|
||||||
train_station(INVALID_TILE, 0, 0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~BaseStation();
|
virtual ~BaseStation();
|
||||||
|
|
||||||
|
|
|
@ -32,14 +32,14 @@ struct RoadStop : RoadStopPool::PoolItem<&_roadstop_pool> {
|
||||||
/** Container for each entry point of a drive through road stop */
|
/** Container for each entry point of a drive through road stop */
|
||||||
struct Entry {
|
struct Entry {
|
||||||
private:
|
private:
|
||||||
int length; ///< The length of the stop in tile 'units'
|
int length = 0; ///< The length of the stop in tile 'units'
|
||||||
int occupied; ///< The amount of occupied stop in tile 'units'
|
int occupied = 0; ///< The amount of occupied stop in tile 'units'
|
||||||
|
|
||||||
public:
|
public:
|
||||||
friend struct RoadStop; ///< Oh yeah, the road stop may play with me.
|
friend struct RoadStop; ///< Oh yeah, the road stop may play with me.
|
||||||
|
|
||||||
/** Create an entry */
|
/** Create an entry */
|
||||||
Entry() : length(0), occupied(0) {}
|
Entry() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the length of this drive through stop.
|
* Get the length of this drive through stop.
|
||||||
|
@ -65,9 +65,9 @@ struct RoadStop : RoadStopPool::PoolItem<&_roadstop_pool> {
|
||||||
void Rebuild(const RoadStop *rs, int side = -1);
|
void Rebuild(const RoadStop *rs, int side = -1);
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t status; ///< Current status of the Stop, @see RoadStopSatusFlag. Access using *Bay and *Busy functions.
|
uint8_t status = 0; ///< Current status of the Stop, @see RoadStopSatusFlag. Access using *Bay and *Busy functions.
|
||||||
TileIndex xy; ///< Position on the map
|
TileIndex xy = INVALID_TILE; ///< Position on the map
|
||||||
RoadStop *next; ///< Next stop of the given type at this station
|
RoadStop *next = nullptr; ///< Next stop of the given type at this station
|
||||||
|
|
||||||
/** Initializes a RoadStop */
|
/** Initializes a RoadStop */
|
||||||
inline RoadStop(TileIndex tile = INVALID_TILE) :
|
inline RoadStop(TileIndex tile = INVALID_TILE) :
|
||||||
|
@ -148,8 +148,8 @@ struct RoadStop : RoadStopPool::PoolItem<&_roadstop_pool> {
|
||||||
static bool IsDriveThroughRoadStopContinuation(TileIndex rs, TileIndex next);
|
static bool IsDriveThroughRoadStopContinuation(TileIndex rs, TileIndex next);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Entry *east; ///< The vehicles that entered from the east
|
Entry *east = nullptr; ///< The vehicles that entered from the east
|
||||||
Entry *west; ///< The vehicles that entered from the west
|
Entry *west = nullptr; ///< The vehicles that entered from the west
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates a bay
|
* Allocates a bay
|
||||||
|
|
|
@ -140,8 +140,8 @@ public:
|
||||||
void Invalidate();
|
void Invalidate();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SharesMap shares; ///< Shares of flow to be sent via specified station (or consumed locally).
|
SharesMap shares{}; ///< Shares of flow to be sent via specified station (or consumed locally).
|
||||||
uint unrestricted; ///< Limit for unrestricted shares.
|
uint unrestricted = 0; ///< Limit for unrestricted shares.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Flow descriptions by origin stations. */
|
/** Flow descriptions by origin stations. */
|
||||||
|
@ -347,12 +347,12 @@ private:
|
||||||
struct Airport : public TileArea {
|
struct Airport : public TileArea {
|
||||||
Airport() : TileArea(INVALID_TILE, 0, 0) {}
|
Airport() : TileArea(INVALID_TILE, 0, 0) {}
|
||||||
|
|
||||||
AirportBlocks blocks; ///< stores which blocks on the airport are taken. was 16 bit earlier on, then 32
|
AirportBlocks blocks{}; ///< stores which blocks on the airport are taken. was 16 bit earlier on, then 32
|
||||||
uint8_t type; ///< Type of this airport, @see AirportTypes
|
uint8_t type = 0; ///< Type of this airport, @see AirportTypes
|
||||||
uint8_t layout; ///< Airport layout number.
|
uint8_t layout = 0; ///< Airport layout number.
|
||||||
Direction rotation; ///< How this airport is rotated.
|
Direction rotation = INVALID_DIR; ///< How this airport is rotated.
|
||||||
|
|
||||||
PersistentStorage *psa; ///< Persistent storage for NewGRF airports.
|
PersistentStorage *psa = nullptr; ///< Persistent storage for NewGRF airports.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the AirportSpec that from the airport type of this airport. If there
|
* Get the AirportSpec that from the airport type of this airport. If there
|
||||||
|
@ -480,8 +480,8 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
struct IndustryListEntry {
|
struct IndustryListEntry {
|
||||||
uint distance;
|
uint distance = 0;
|
||||||
Industry *industry;
|
Industry *industry = nullptr;
|
||||||
|
|
||||||
bool operator== (const IndustryListEntry &other) const { return this->distance == other.distance && this->industry == other.industry; };
|
bool operator== (const IndustryListEntry &other) const { return this->distance == other.distance && this->industry == other.industry; };
|
||||||
};
|
};
|
||||||
|
@ -502,31 +502,31 @@ public:
|
||||||
|
|
||||||
RoadStop *GetPrimaryRoadStop(const struct RoadVehicle *v) const;
|
RoadStop *GetPrimaryRoadStop(const struct RoadVehicle *v) const;
|
||||||
|
|
||||||
RoadStop *bus_stops; ///< All the road stops
|
RoadStop *bus_stops = nullptr; ///< All the road stops
|
||||||
TileArea bus_station; ///< Tile area the bus 'station' part covers
|
TileArea bus_station{}; ///< Tile area the bus 'station' part covers
|
||||||
RoadStop *truck_stops; ///< All the truck stops
|
RoadStop *truck_stops = nullptr; ///< All the truck stops
|
||||||
TileArea truck_station; ///< Tile area the truck 'station' part covers
|
TileArea truck_station{}; ///< Tile area the truck 'station' part covers
|
||||||
|
|
||||||
Airport airport; ///< Tile area the airport covers
|
Airport airport{}; ///< Tile area the airport covers
|
||||||
TileArea ship_station; ///< Tile area the ship 'station' part covers
|
TileArea ship_station{}; ///< Tile area the ship 'station' part covers
|
||||||
TileArea docking_station; ///< Tile area the docking tiles cover
|
TileArea docking_station{}; ///< Tile area the docking tiles cover
|
||||||
|
|
||||||
IndustryType indtype; ///< Industry type to get the name from
|
IndustryType indtype = IT_INVALID; ///< Industry type to get the name from
|
||||||
|
|
||||||
BitmapTileArea catchment_tiles; ///< NOSAVE: Set of individual tiles covered by catchment area
|
BitmapTileArea catchment_tiles{}; ///< NOSAVE: Set of individual tiles covered by catchment area
|
||||||
|
|
||||||
StationHadVehicleOfType had_vehicle_of_type;
|
StationHadVehicleOfType had_vehicle_of_type{};
|
||||||
|
|
||||||
uint8_t time_since_load;
|
uint8_t time_since_load = 0;
|
||||||
uint8_t time_since_unload;
|
uint8_t time_since_unload = 0;
|
||||||
|
|
||||||
uint8_t last_vehicle_type;
|
uint8_t last_vehicle_type = 0;
|
||||||
std::list<Vehicle *> loading_vehicles;
|
std::list<Vehicle *> loading_vehicles{};
|
||||||
GoodsEntry goods[NUM_CARGO]; ///< Goods at this station
|
std::array<GoodsEntry, NUM_CARGO> goods; ///< Goods at this station
|
||||||
CargoTypes always_accepted; ///< Bitmask of always accepted cargo types (by houses, HQs, industry tiles when industry doesn't accept cargo)
|
CargoTypes always_accepted{}; ///< Bitmask of always accepted cargo types (by houses, HQs, industry tiles when industry doesn't accept cargo)
|
||||||
|
|
||||||
IndustryList industries_near; ///< Cached list of industries near the station that can accept cargo, @see DeliverGoodsToIndustry()
|
IndustryList industries_near{}; ///< Cached list of industries near the station that can accept cargo, @see DeliverGoodsToIndustry()
|
||||||
Industry *industry; ///< NOSAVE: Associated industry for neutral stations. (Rebuilt on load from Industry->st)
|
Industry *industry = nullptr; ///< NOSAVE: Associated industry for neutral stations. (Rebuilt on load from Industry->st)
|
||||||
|
|
||||||
Station(TileIndex tile = INVALID_TILE);
|
Station(TileIndex tile = INVALID_TILE);
|
||||||
~Station();
|
~Station();
|
||||||
|
@ -581,7 +581,7 @@ public:
|
||||||
/** Iterator to iterate over all tiles belonging to an airport. */
|
/** Iterator to iterate over all tiles belonging to an airport. */
|
||||||
class AirportTileIterator : public OrthogonalTileIterator {
|
class AirportTileIterator : public OrthogonalTileIterator {
|
||||||
private:
|
private:
|
||||||
const Station *st; ///< The station the airport is a part of.
|
const Station *st = nullptr; ///< The station the airport is a part of.
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -47,10 +47,10 @@ struct Viewport {
|
||||||
|
|
||||||
/** Location information about a sign as seen on the viewport */
|
/** Location information about a sign as seen on the viewport */
|
||||||
struct ViewportSign {
|
struct ViewportSign {
|
||||||
int32_t center; ///< The center position of the sign
|
int32_t center = 0; ///< The center position of the sign
|
||||||
int32_t top; ///< The top of the sign
|
int32_t top = 0; ///< The top of the sign
|
||||||
uint16_t width_normal; ///< The width when not zoomed out (normal font)
|
uint16_t width_normal = 0; ///< The width when not zoomed out (normal font)
|
||||||
uint16_t width_small; ///< The width when zoomed out (small font)
|
uint16_t width_small = 0; ///< The width when zoomed out (small font)
|
||||||
|
|
||||||
auto operator<=>(const ViewportSign &) const = default;
|
auto operator<=>(const ViewportSign &) const = default;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ struct ViewportSign {
|
||||||
|
|
||||||
/** Specialised ViewportSign that tracks whether it is valid for entering into a Kdtree */
|
/** Specialised ViewportSign that tracks whether it is valid for entering into a Kdtree */
|
||||||
struct TrackedViewportSign : ViewportSign {
|
struct TrackedViewportSign : ViewportSign {
|
||||||
bool kdtree_valid; ///< Are the sign data valid for use with the _viewport_sign_kdtree?
|
bool kdtree_valid = false; ///< Are the sign data valid for use with the _viewport_sign_kdtree?
|
||||||
|
|
||||||
auto operator<=>(const TrackedViewportSign &) const = default;
|
auto operator<=>(const TrackedViewportSign &) const = default;
|
||||||
|
|
||||||
|
@ -73,11 +73,6 @@ struct TrackedViewportSign : ViewportSign {
|
||||||
this->kdtree_valid = true;
|
this->kdtree_valid = true;
|
||||||
this->ViewportSign::UpdatePosition(center, top, str, str_small);
|
this->ViewportSign::UpdatePosition(center, top, str, str_small);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TrackedViewportSign() : kdtree_valid{ false }
|
|
||||||
{
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -21,9 +21,9 @@ enum WaypointFlags : uint8_t {
|
||||||
|
|
||||||
/** Representation of a waypoint. */
|
/** Representation of a waypoint. */
|
||||||
struct Waypoint final : SpecializedStation<Waypoint, true> {
|
struct Waypoint final : SpecializedStation<Waypoint, true> {
|
||||||
uint16_t town_cn; ///< The N-1th waypoint for this town (consecutive number)
|
uint16_t town_cn = 0; ///< The N-1th waypoint for this town (consecutive number)
|
||||||
uint16_t waypoint_flags{}; ///< Waypoint flags, see WaypointFlags
|
uint16_t waypoint_flags{}; ///< Waypoint flags, see WaypointFlags
|
||||||
TileArea road_waypoint_area; ///< Tile area the road waypoint part covers
|
TileArea road_waypoint_area{}; ///< Tile area the road waypoint part covers
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a waypoint at the given tile.
|
* Create a waypoint at the given tile.
|
||||||
|
|
Loading…
Reference in New Issue