summaryrefslogtreecommitdiff
path: root/src/vehicle.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-04-06 15:09:45 +0000
committerrubidium <rubidium@openttd.org>2008-04-06 15:09:45 +0000
commitfb1c4eccd840cd05ee3bf00c3b757829c9c72ef0 (patch)
tree902d510152ab0f94357b64fda309b662a1637e12 /src/vehicle.cpp
parent5d8e3adcccda4b89b03c925c5d061621df2e5e10 (diff)
downloadopenttd-fb1c4eccd840cd05ee3bf00c3b757829c9c72ef0.tar.xz
(svn r12593) -Codechange: hide Order's flags in most of the code.
Diffstat (limited to 'src/vehicle.cpp')
-rw-r--r--src/vehicle.cpp29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/vehicle.cpp b/src/vehicle.cpp
index 8325897a2..c874c1aa5 100644
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -120,10 +120,10 @@ void VehicleServiceInDepot(Vehicle *v)
bool VehicleNeedsService(const Vehicle *v)
{
if (v->vehstatus & (VS_STOPPED | VS_CRASHED)) return false;
- if (!v->current_order.IsType(OT_GOTO_DEPOT) || !(v->current_order.flags & OFB_PART_OF_ORDERS)) { // Don't interfere with a depot visit by the order list
+ if (!v->current_order.IsType(OT_GOTO_DEPOT) || !(v->current_order.GetDepotOrderType() & OFB_PART_OF_ORDERS)) { // Don't interfere with a depot visit by the order list
if (_patches.gotodepot && VehicleHasDepotOrders(v)) return false;
if (v->current_order.IsType(OT_LOADING)) return false;
- if (v->current_order.IsType(OT_GOTO_DEPOT) && v->current_order.flags & OFB_HALT_IN_DEPOT) return false;
+ if (v->current_order.IsType(OT_GOTO_DEPOT) && v->current_order.GetDepotActionType() & OFB_HALT_IN_DEPOT) return false;
}
if (_patches.no_servicing_if_no_breakdowns && _opt.diff.vehicle_breakdowns == 0) {
@@ -631,7 +631,7 @@ void VehicleEnteredDepotThisTick(Vehicle *v)
{
/* We need to set v->leave_depot_instantly as we have no control of it's contents at this time.
* Vehicle should stop in the depot if it was in 'stopping' state - train intered depot while slowing down. */
- if ((HasBit(v->current_order.flags, OF_HALT_IN_DEPOT) && !HasBit(v->current_order.flags, OF_PART_OF_ORDERS) && v->current_order.IsType(OT_GOTO_DEPOT)) ||
+ if ((HasBit(v->current_order.GetDepotActionType(), OF_HALT_IN_DEPOT) && !HasBit(v->current_order.GetDepotOrderType(), OF_PART_OF_ORDERS) && v->current_order.IsType(OT_GOTO_DEPOT)) ||
(v->vehstatus & VS_STOPPED)) {
/* we keep the vehicle in the depot since the user ordered it to stay */
v->leave_depot_instantly = false;
@@ -2174,7 +2174,7 @@ uint8 CalcPercentVehicleFilled(Vehicle *v, StringID *color)
max += v->cargo_cap;
if (v->cargo_cap != 0) {
unloading += HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) ? 1 : 0;
- loading |= (u->current_order.flags & OFB_UNLOAD) == 0 && st->goods[v->cargo_type].days_since_pickup != 255;
+ loading |= !HasBit(u->current_order.GetUnloadType(), OF_UNLOAD) && st->goods[v->cargo_type].days_since_pickup != 255;
cars++;
}
}
@@ -2262,11 +2262,11 @@ void VehicleEnterDepot(Vehicle *v)
}
}
- if (HasBit(t.flags, OF_PART_OF_ORDERS)) {
+ if (HasBit(t.GetDepotOrderType(), OF_PART_OF_ORDERS)) {
/* Part of orders */
UpdateVehicleTimetable(v, true);
v->cur_order_index++;
- } else if (HasBit(t.flags, OF_HALT_IN_DEPOT)) {
+ } else if (HasBit(t.GetDepotActionType(), OF_HALT_IN_DEPOT)) {
/* Force depot visit */
v->vehstatus |= VS_STOPPED;
if (v->owner == _local_player) {
@@ -3132,23 +3132,20 @@ void Vehicle::BeginLoading()
if (this->current_order.IsType(OT_GOTO_STATION) &&
this->current_order.GetDestination() == this->last_station_visited) {
- /* Arriving at the ordered station.
- * Keep the load/unload flags, as we (obviously) still need them. */
- this->current_order.flags &= OFB_FULL_LOAD | OFB_UNLOAD | OFB_TRANSFER;
-
/* Furthermore add the Non Stop flag to mark that this station
* is the actual destination of the vehicle, which is (for example)
* necessary to be known for HandleTrainLoading to determine
* whether the train is lost or not; not marking a train lost
* that arrives at random stations is bad. */
- this->current_order.flags |= OFB_NON_STOP;
+ this->current_order.SetNonStopType(OFB_NON_STOP);
+
+ current_order.MakeLoading(true);
UpdateVehicleTimetable(this, true);
} else {
- /* This is just an unordered intermediate stop */
- this->current_order.flags = 0;
+ this->current_order.SetNonStopType(OFB_NO_NON_STOP);
+ current_order.MakeLoading(false);
}
- current_order.MakeLoading();
GetStation(this->last_station_visited)->loading_vehicles.push_back(this);
VehiclePayment(this);
@@ -3167,7 +3164,7 @@ void Vehicle::LeaveStation()
assert(current_order.IsType(OT_LOADING));
/* Only update the timetable if the vehicle was supposed to stop here. */
- if (current_order.flags & OFB_NON_STOP) UpdateVehicleTimetable(this, false);
+ if (current_order.GetNonStopType() != OFB_NO_NON_STOP) UpdateVehicleTimetable(this, false);
current_order.MakeLeaveStation();
GetStation(this->last_station_visited)->loading_vehicles.remove(this);
@@ -3193,7 +3190,7 @@ void Vehicle::HandleLoading(bool mode)
this->LeaveStation();
/* If this was not the final order, don't remove it from the list. */
- if (!(b.flags & OFB_NON_STOP)) return;
+ if (!(b.GetNonStopType() & OFB_NON_STOP)) return;
break;
}