mirror of https://github.com/OpenTTD/OpenTTD.git
(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
This commit is contained in:
parent
3279a7c9a2
commit
02ed8410a2
|
@ -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)
|
||||
|
|
11
order_cmd.c
11
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;
|
||||
}
|
||||
|
||||
|
|
20
ship_cmd.c
20
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue