diff options
author | KUDr <kudr@openttd.org> | 2007-01-13 18:55:54 +0000 |
---|---|---|
committer | KUDr <kudr@openttd.org> | 2007-01-13 18:55:54 +0000 |
commit | 9bfb3f08d95bf308eb5da9e59b9dc9fb214de6a1 (patch) | |
tree | ffa45998168a4f37d45b9d9d3e429ee18cc906c0 /src | |
parent | 1f0206f62d478540f7b96a86999944b0cdac7492 (diff) | |
download | openttd-9bfb3f08d95bf308eb5da9e59b9dc9fb214de6a1.tar.xz |
(svn r8110) -Codechange: direct Vehicle::current_order.type changes (to OT_LOADING and OT_LEAVESTATION) replaced by v->BeginLoading() and v->LeaveStation() calls. This should allow easy hooking of those state transitions in order to maintain vehicle loading queue.
Diffstat (limited to 'src')
-rw-r--r-- | src/aircraft_cmd.cpp | 2 | ||||
-rw-r--r-- | src/roadveh_cmd.cpp | 5 | ||||
-rw-r--r-- | src/ship_cmd.cpp | 6 | ||||
-rw-r--r-- | src/train_cmd.cpp | 7 | ||||
-rw-r--r-- | src/vehicle.cpp | 14 | ||||
-rw-r--r-- | src/vehicle.h | 3 |
6 files changed, 25 insertions, 12 deletions
diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index b694d7247..a0c59ad67 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -1370,7 +1370,7 @@ static void AircraftEntersTerminal(Vehicle *v) } old_order = v->current_order; - v->current_order.type = OT_LOADING; + v->BeginLoading(); v->current_order.flags = 0; if (old_order.type == OT_GOTO_STATION && diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 11873d97b..f5cb88121 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -750,8 +750,7 @@ static void HandleRoadVehLoading(Vehicle *v) } b = v->current_order; - v->current_order.type = OT_LEAVESTATION; - v->current_order.flags = 0; + v->LeaveStation(); if (!(b.flags & OF_NON_STOP)) return; break; } @@ -1508,7 +1507,7 @@ again: RoadVehArrivesAt(v, st); old_order = v->current_order; - v->current_order.type = OT_LOADING; + v->BeginLoading(); v->current_order.flags = 0; if (old_order.type == OT_GOTO_STATION && diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index da5a40d54..bd4e2d760 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -292,8 +292,7 @@ static void HandleShipLoading(Vehicle *v) { Order b = v->current_order; - v->current_order.type = OT_LEAVESTATION; - v->current_order.flags = 0; + v->LeaveStation(); if (!(b.flags & OF_NON_STOP)) return; } } @@ -704,7 +703,7 @@ static void ShipController(Vehicle *v) /* Process station in the orderlist. */ st = GetStation(v->current_order.dest); if (st->facilities & FACIL_DOCK) { /* ugly, ugly workaround for problem with ships able to drop off cargo at wrong stations */ - v->current_order.type = OT_LOADING; + v->BeginLoading(); v->current_order.flags &= OF_FULL_LOAD | OF_UNLOAD | OF_TRANSFER; v->current_order.flags |= OF_NON_STOP; ShipArrivesAt(v, st); @@ -717,7 +716,6 @@ static void ShipController(Vehicle *v) InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR); } else { /* leave stations without docks right aways */ v->current_order.type = OT_LEAVESTATION; - v->current_order.flags = 0; v->cur_order_index++; InvalidateVehicleOrder(v); } diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 98c2dac06..5f2acb663 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -2647,8 +2647,7 @@ static void HandleTrainLoading(Vehicle *v, bool mode) { Order b = v->current_order; - v->current_order.type = OT_LEAVESTATION; - v->current_order.flags = 0; + v->LeaveStation(); // If this was not the final order, don't remove it from the list. if (!(b.flags & OF_NON_STOP)) return; @@ -2721,12 +2720,12 @@ static void TrainEnterStation(Vehicle *v, StationID station) v->current_order.dest == station) { // Yeah, keep the load/unload flags // Non Stop now means if the order should be increased. - v->current_order.type = OT_LOADING; + v->BeginLoading(); v->current_order.flags &= OF_FULL_LOAD | OF_UNLOAD | OF_TRANSFER; v->current_order.flags |= OF_NON_STOP; } else { // No, just do a simple load - v->current_order.type = OT_LOADING; + v->BeginLoading(); v->current_order.flags = 0; } v->current_order.dest = 0; diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 6e5b08160..c068488f3 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -3227,3 +3227,17 @@ static void Load_VEHS(void) extern const ChunkHandler _veh_chunk_handlers[] = { { 'VEHS', Save_VEHS, Load_VEHS, CH_SPARSE_ARRAY | CH_LAST}, }; + +void Vehicle::BeginLoading() +{ + assert(IsTileType(tile, MP_STATION) || type == VEH_Ship); + current_order.type = OT_LOADING; +} + +void Vehicle::LeaveStation() +{ + assert(IsTileType(tile, MP_STATION) || type == VEH_Ship); + assert(current_order.type == OT_LOADING); + current_order.type = OT_LEAVESTATION; + current_order.flags = 0; +} diff --git a/src/vehicle.h b/src/vehicle.h index 6c16c9921..02f79c50b 100644 --- a/src/vehicle.h +++ b/src/vehicle.h @@ -251,6 +251,9 @@ struct Vehicle { VehicleDisaster disaster; VehicleShip ship; } u; + + void BeginLoading(); + void LeaveStation(); }; #define is_custom_sprite(x) (x >= 0xFD) |