summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKUDr <KUDr@openttd.org>2007-01-13 18:55:54 +0000
committerKUDr <KUDr@openttd.org>2007-01-13 18:55:54 +0000
commit92e42d621d24459fdfb8231e69e66562c1f5e759 (patch)
treeffa45998168a4f37d45b9d9d3e429ee18cc906c0 /src
parenta6c23ae1ed38c25ce1cacfca025adc196c9071a5 (diff)
downloadopenttd-92e42d621d24459fdfb8231e69e66562c1f5e759.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.cpp2
-rw-r--r--src/roadveh_cmd.cpp5
-rw-r--r--src/ship_cmd.cpp6
-rw-r--r--src/train_cmd.cpp7
-rw-r--r--src/vehicle.cpp14
-rw-r--r--src/vehicle.h3
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)