summaryrefslogtreecommitdiff
path: root/ship_cmd.c
diff options
context:
space:
mode:
authorcelestar <celestar@openttd.org>2005-01-15 09:28:08 +0000
committercelestar <celestar@openttd.org>2005-01-15 09:28:08 +0000
commit02ed8410a24c1bb1619f0e13a97bd78265355cbd (patch)
treec6a836c94525b32278cec41cf3492cfdb6d8c481 /ship_cmd.c
parent3279a7c9a26242f5f0a8e4b41ae6e2d9e24ee169 (diff)
downloadopenttd-02ed8410a24c1bb1619f0e13a97bd78265355cbd.tar.xz
(svn r1521) -Fix: Ship Vehicle Lists are now redrawn correctly
-Codechange: added some const to last commit -Codechange: Ship and Aircraft lists are now update on order change, not on new day
Diffstat (limited to 'ship_cmd.c')
-rw-r--r--ship_cmd.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/ship_cmd.c b/ship_cmd.c
index dc6587a30..3ed827fa1 100644
--- a/ship_cmd.c
+++ b/ship_cmd.c
@@ -21,6 +21,19 @@ static byte GetTileShipTrackStatus(uint tile) {
return r | r >> 8;
}
+void InvalidateShipWindows(const Vehicle *v)
+{
+ const Order *o;
+
+ InvalidateWindow(WC_SHIPS_LIST, v->owner);
+
+ for ( o = v->schedule_ptr; o->type != OT_NOTHING; o++) {
+ if (o->type == OT_GOTO_STATION ) {
+ InvalidateWindow(WC_SHIPS_LIST, o->station << 16 | v->owner);
+ }
+ }
+}
+
void DrawShipEngine(int x, int y, int engine, uint32 image_ormod)
{
int spritenum = ShipVehInfo(engine)->image_index;
@@ -146,7 +159,6 @@ void OnNewDay_Ship(Vehicle *v)
SubtractMoneyFromPlayerFract(v->owner, cost);
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
- InvalidateWindow(WC_SHIPS_LIST, v->owner);
}
static void HandleBrokenShip(Vehicle *v)
@@ -174,7 +186,7 @@ static void HandleBrokenShip(Vehicle *v)
if (!(v->tick_counter & 1)) {
if (!--v->breakdown_delay) {
v->breakdown_ctr = 0;
- InvalidateWindow(WC_VEHICLE_VIEW, v->index);
+ InvalidateShipWindows(v);
}
}
}
@@ -253,6 +265,8 @@ static void ProcessShipOrder(Vehicle *v)
v->dest_tile = 0;
}
InvalidateVehicleOrderWidget(v);
+
+ InvalidateShipWindows(v);
}
static void HandleShipLoading(Vehicle *v)
@@ -918,6 +932,8 @@ int32 CmdStartStopShip(int x, int y, uint32 flags, uint32 p1, uint32 p2)
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
}
+ InvalidateShipWindows(v);
+
return 0;
}