(svn r2411) - Codechange: Have trains cache stuff like consist power/weight/max speed instead of recalculating it each time.

- Fix: Station ratings now depends on the max speed of a consist, without being affected by other speed limits from realistic acceleration.
This commit is contained in:
hackykid
2005-06-05 15:37:00 +00:00
parent b30a413cfe
commit e878e4d815
5 changed files with 92 additions and 55 deletions

View File

@@ -50,8 +50,12 @@ typedef struct VehicleRail {
uint16 crash_anim_pos;
uint16 days_since_order_progr;
uint16 cached_weight; // cached power and weight for the vehicle.
uint32 cached_power; // no need to save those, they are recomputed on load.
// cached values, recalculated on load and each time a vehicle is added to/removed from the consist.
uint16 cached_max_speed; // max speed of the consist. (minimum of the max speed of all vehicles in the consist)
uint32 cached_power; // total power of the consist.
// cached values, recalculated when the cargo on a train changes (in addition to the conditions above)
uint16 cached_weight; // total weight of the consist.
uint16 cached_veh_weight; // weight of the vehicle.
// NOSAVE: for wagon override - id of the first engine in train
// 0xffff == not in train
@@ -307,6 +311,7 @@ UnitID GetFreeUnitNumber(byte type);
int LoadUnloadVehicle(Vehicle *v);
void TrainConsistChanged(Vehicle *v);
void UpdateTrainAcceleration(Vehicle *v);
int32 GetTrainRunningCost(const Vehicle *v);