changeset 10947:0b3cbaa54996 draft

(svn r15286) -Fix: Refitting did not invalidate vehicle-colour-maps of road-vehicles, ships and aircraft, as well vehicle-length of road-vehicles.
author frosch <frosch@openttd.org>
date Tue, 27 Jan 2009 19:44:36 +0000
parents d67c476c7b6a
children 23575f3e9f64
files src/aircraft_cmd.cpp src/roadveh_cmd.cpp src/ship_cmd.cpp
diffstat 3 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/aircraft_cmd.cpp
+++ b/src/aircraft_cmd.cpp
@@ -593,6 +593,7 @@
 		u->cargo.Truncate(v->cargo_type == new_cid ? mail : 0);
 		v->cargo_type = new_cid;
 		v->cargo_subtype = new_subtype;
+		v->colormap = PAL_NONE; // invalidate vehicle colour map
 		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 		InvalidateWindowClassesData(WC_AIRCRAFT_LIST, 0);
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -47,6 +47,7 @@
 #include "core/alloc_func.hpp"
 
 #include "table/strings.h"
+#include "table/sprites.h"
 
 static const uint16 _roadveh_images[63] = {
 	0xCD4, 0xCDC, 0xCE4, 0xCEC, 0xCF4, 0xCFC, 0xD0C, 0xD14,
@@ -160,6 +161,9 @@
 
 		/* Update the length of the vehicle. */
 		u->u.road.cached_veh_length = GetRoadVehLength(u);
+
+		/* Invalidate the vehicle colour map */
+		u->colormap = PAL_NONE;
 	}
 }
 
@@ -2099,6 +2103,8 @@
 		if (only_this) break;
 	}
 
+	if (flags & DC_EXEC) RoadVehUpdateCache(GetVehicle(p1)->First());
+
 	_returned_refit_capacity = total_capacity;
 
 	return cost;
--- a/src/ship_cmd.cpp
+++ b/src/ship_cmd.cpp
@@ -44,6 +44,7 @@
 #include "ai/ai.hpp"
 
 #include "table/strings.h"
+#include "table/sprites.h"
 
 static const uint16 _ship_sprites[] = {0x0E5D, 0x0E55, 0x0E65, 0x0E6D};
 
@@ -953,6 +954,7 @@
 		v->cargo.Truncate((v->cargo_type == new_cid) ? capacity : 0);
 		v->cargo_type = new_cid;
 		v->cargo_subtype = new_subtype;
+		v->colormap = PAL_NONE; // invalidate vehicle colour map
 		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 		InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
 		InvalidateWindowClassesData(WC_SHIPS_LIST, 0);