diff options
-rw-r--r-- | aircraft_cmd.c | 10 | ||||
-rw-r--r-- | order_cmd.c | 11 | ||||
-rw-r--r-- | ship_cmd.c | 20 | ||||
-rw-r--r-- | vehicle.h | 3 |
4 files changed, 35 insertions, 9 deletions
diff --git a/aircraft_cmd.c b/aircraft_cmd.c index 5157e5f61..4fa94a345 100644 --- a/aircraft_cmd.c +++ b/aircraft_cmd.c @@ -508,13 +508,13 @@ static void CheckIfAircraftNeedsService(Vehicle *v) } } -void InvalidateAircraftWindows(Vehicle *v) +void InvalidateAircraftWindows(const Vehicle *v) { - Order *o; + const Order *o; InvalidateWindow(WC_AIRCRAFT_LIST, v->owner); - for ( o = v->schedule_ptr; o->type != OT_NOTHING; o++, i++) { + for ( o = v->schedule_ptr; o->type != OT_NOTHING; o++) { if (o->type == OT_GOTO_STATION ) { InvalidateWindow(WC_AIRCRAFT_LIST, o->station << 16 | v->owner); } @@ -548,8 +548,6 @@ void OnNewDay_Aircraft(Vehicle *v) SubtractMoneyFromPlayerFract(v->owner, cost); InvalidateWindow(WC_VEHICLE_DETAILS, v->index); - - InvalidateAircraftWindows(v); } void AircraftYearlyLoop() @@ -1084,6 +1082,8 @@ static void ProcessAircraftOrder(Vehicle *v) } InvalidateVehicleOrderWidget(v); + + InvalidateAircraftWindows(v); } static void HandleAircraftLoading(Vehicle *v, int mode) diff --git a/order_cmd.c b/order_cmd.c index d7a7abb3c..7332b0513 100644 --- a/order_cmd.c +++ b/order_cmd.c @@ -140,9 +140,9 @@ int32 CmdDeleteOrder(int x, int y, uint32 flags, uint32 p1, uint32 p2) /* p1 = vehicle */ int32 CmdSkipOrder(int x, int y, uint32 flags, uint32 p1, uint32 p2) { - if (flags & DC_EXEC) { - Vehicle *v = GetVehicle(p1); + Vehicle *v = GetVehicle(p1); + if (flags & DC_EXEC) { { byte b = v->cur_order_index + 1; if (b >= v->num_orders) b = 0; @@ -159,6 +159,13 @@ int32 CmdSkipOrder(int x, int y, uint32 flags, uint32 p1, uint32 p2) InvalidateWindow(WC_VEHICLE_ORDERS, v->index); } + + //we have an aircraft, they have a mini-schedule, so update them all + if (v->type == VEH_Aircraft) InvalidateAircraftWindows(v); + + //same goes for ships + if (v->type == VEH_Ship) InvalidateShipWindows(v); + return 0; } 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; } @@ -402,6 +402,9 @@ int CheckOrders(Vehicle *v); bool VehicleNeedsService(const Vehicle *v); +void InvalidateAircraftWindows(const Vehicle *v); +void InvalidateShipWindows(const Vehicle *v); + typedef struct GetNewVehiclePosResult { int x,y; uint old_tile; |