changeset 17173:587b92c2457c draft

(svn r21912) -Codechange: let road vehicles use gcache.last_speed/SetLastSpeed as well
author rubidium <rubidium@openttd.org>
date Wed, 26 Jan 2011 17:31:44 +0000
parents 679a25d71a9d
children 8e48438edd69
files src/roadveh.h src/roadveh_cmd.cpp src/saveload/vehicle_sl.cpp
diffstat 3 files changed, 4 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/roadveh.h
+++ b/src/roadveh.h
@@ -104,7 +104,7 @@
 	ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_ROADVEH_INC : EXPENSES_ROADVEH_RUN; }
 	bool IsPrimaryVehicle() const { return this->IsFrontEngine(); }
 	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; }
 	Money GetRunningCost() const;
 	int GetDisplayImageWidth(Point *offset = NULL) const;
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -651,7 +651,6 @@
  */
 static int RoadVehAccelerate(RoadVehicle *v)
 {
-	uint oldspeed = v->cur_speed;
 	uint accel = v->overtaking != 0 ? 256 : 0;
 	accel += (_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) ? 256 : v->GetAcceleration();
 	uint spd = v->subspeed + accel;
@@ -673,13 +672,6 @@
 		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);
 
 	scaled_spd += v->progress;
@@ -1497,6 +1489,8 @@
 		if (j >= adv_spd && RoadVehCheckTrainCrash(v)) break;
 	}
 
+	v->SetLastSpeed();
+
 	for (RoadVehicle *u = v; u != NULL; u = u->Next()) {
 		if ((u->vehstatus & VS_HIDDEN) != 0) continue;
 
--- a/src/saveload/vehicle_sl.cpp
+++ b/src/saveload/vehicle_sl.cpp
@@ -345,6 +345,7 @@
 			case VEH_ROAD: {
 				RoadVehicle *rv = RoadVehicle::From(v);
 				if (rv->IsFrontEngine()) {
+					rv->gcache.last_speed = rv->cur_speed; // update displayed road vehicle speed
 					RoadVehUpdateCache(rv);
 					if (_settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) {
 						rv->CargoChanged();