summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2009-01-27 19:44:36 +0000
committerfrosch <frosch@openttd.org>2009-01-27 19:44:36 +0000
commit7dbd0582b6c1aa22a0345d63a2b71b98013c84d2 (patch)
tree9bca7c140f273d8118cf91dd362615b924c68ba5
parente836f18ff18d51a7d04e51c418712755430a82ff (diff)
downloadopenttd-7dbd0582b6c1aa22a0345d63a2b71b98013c84d2.tar.xz
(svn r15286) -Fix: Refitting did not invalidate vehicle-colour-maps of road-vehicles, ships and aircraft, as well vehicle-length of road-vehicles.
-rw-r--r--src/aircraft_cmd.cpp1
-rw-r--r--src/roadveh_cmd.cpp6
-rw-r--r--src/ship_cmd.cpp2
3 files changed, 9 insertions, 0 deletions
diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp
index cec144be4..4a14c2887 100644
--- a/src/aircraft_cmd.cpp
+++ b/src/aircraft_cmd.cpp
@@ -593,6 +593,7 @@ CommandCost CmdRefitAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2,
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);
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index 7e587b5be..209801d18 100644
--- 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 @@ void RoadVehUpdateCache(Vehicle *v)
/* 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 @@ CommandCost CmdRefitRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2,
if (only_this) break;
}
+ if (flags & DC_EXEC) RoadVehUpdateCache(GetVehicle(p1)->First());
+
_returned_refit_capacity = total_capacity;
return cost;
diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp
index 37d2ef78e..e675ebd77 100644
--- 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 @@ CommandCost CmdRefitShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, con
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);