1
0
Fork 0

(svn r21912) -Codechange: let road vehicles use gcache.last_speed/SetLastSpeed as well

release/1.1
rubidium 2011-01-26 17:31:44 +00:00
parent b11f1bd4ed
commit 4fff63d790
3 changed files with 4 additions and 9 deletions

View File

@ -104,7 +104,7 @@ struct RoadVehicle : public GroundVehicle<RoadVehicle, VEH_ROAD> {
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_ROADVEH_INC : EXPENSES_ROADVEH_RUN; } ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_ROADVEH_INC : EXPENSES_ROADVEH_RUN; }
bool IsPrimaryVehicle() const { return this->IsFrontEngine(); } bool IsPrimaryVehicle() const { return this->IsFrontEngine(); }
SpriteID GetImage(Direction direction) const; SpriteID GetImage(Direction direction) const;
int GetDisplaySpeed() const { return this->cur_speed / 2; } int GetDisplaySpeed() const { return this->gcache.last_speed / 2; }
int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed / 2; } int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed / 2; }
Money GetRunningCost() const; Money GetRunningCost() const;
int GetDisplayImageWidth(Point *offset = NULL) const; int GetDisplayImageWidth(Point *offset = NULL) const;

View File

@ -651,7 +651,6 @@ static void RoadVehArrivesAt(const RoadVehicle *v, Station *st)
*/ */
static int RoadVehAccelerate(RoadVehicle *v) static int RoadVehAccelerate(RoadVehicle *v)
{ {
uint oldspeed = v->cur_speed;
uint accel = v->overtaking != 0 ? 256 : 0; uint accel = v->overtaking != 0 ? 256 : 0;
accel += (_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) ? 256 : v->GetAcceleration(); accel += (_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) ? 256 : v->GetAcceleration();
uint spd = v->subspeed + accel; uint spd = v->subspeed + accel;
@ -673,13 +672,6 @@ static int RoadVehAccelerate(RoadVehicle *v)
first->cur_speed = min(first->cur_speed, GetBridgeSpec(GetBridgeType(v->tile))->speed * 2); first->cur_speed = min(first->cur_speed, GetBridgeSpec(GetBridgeType(v->tile))->speed * 2);
} }
/* Update statusbar only if speed has changed to save CPU time */
if (oldspeed != v->cur_speed) {
if (_settings_client.gui.vehicle_speed) {
SetWindowWidgetDirty(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
}
}
int scaled_spd = v->GetAdvanceSpeed(spd); int scaled_spd = v->GetAdvanceSpeed(spd);
scaled_spd += v->progress; scaled_spd += v->progress;
@ -1497,6 +1489,8 @@ static bool RoadVehController(RoadVehicle *v)
if (j >= adv_spd && RoadVehCheckTrainCrash(v)) break; if (j >= adv_spd && RoadVehCheckTrainCrash(v)) break;
} }
v->SetLastSpeed();
for (RoadVehicle *u = v; u != NULL; u = u->Next()) { for (RoadVehicle *u = v; u != NULL; u = u->Next()) {
if ((u->vehstatus & VS_HIDDEN) != 0) continue; if ((u->vehstatus & VS_HIDDEN) != 0) continue;

View File

@ -345,6 +345,7 @@ void AfterLoadVehicles(bool part_of_load)
case VEH_ROAD: { case VEH_ROAD: {
RoadVehicle *rv = RoadVehicle::From(v); RoadVehicle *rv = RoadVehicle::From(v);
if (rv->IsFrontEngine()) { if (rv->IsFrontEngine()) {
rv->gcache.last_speed = rv->cur_speed; // update displayed road vehicle speed
RoadVehUpdateCache(rv); RoadVehUpdateCache(rv);
if (_settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) { if (_settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) {
rv->CargoChanged(); rv->CargoChanged();