summaryrefslogtreecommitdiff
path: root/src/vehicle.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-05-07 16:21:34 +0000
committerrubidium <rubidium@openttd.org>2007-05-07 16:21:34 +0000
commit2efecd34c4237bb52981c92241a7b76c46896c4c (patch)
tree7d799b24ea0e76722a37e235c563ee818db1da54 /src/vehicle.cpp
parent161786e2222b67a48624e82bc9c3aabbc86e51e9 (diff)
downloadopenttd-2efecd34c4237bb52981c92241a7b76c46896c4c.tar.xz
(svn r9808) -Codechange: unify the Handle<VehicleType>Loading functions.
Diffstat (limited to 'src/vehicle.cpp')
-rw-r--r--src/vehicle.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/vehicle.cpp b/src/vehicle.cpp
index 745ca776a..89757e7e7 100644
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -2929,6 +2929,40 @@ void Vehicle::LeaveStation()
}
+void Vehicle::HandleLoading(bool mode)
+{
+ switch (this->current_order.type) {
+ case OT_LOADING: {
+ /* Not the first call for this tick */
+ if (mode) return;
+
+ /* We have not waited enough time till the next round of loading/unloading */
+ if (--this->load_unload_time_rem) return;
+
+ /* Load/unload the vehicle; when it actually did something
+ * we do not leave the station. */
+ if (LoadUnloadVehicle(this)) return;
+
+ this->PlayLeaveStationSound();
+
+ Order b = this->current_order;
+ this->LeaveStation();
+
+ /* If this was not the final order, don't remove it from the list. */
+ if (!(b.flags & OF_NON_STOP)) return;
+ break;
+ }
+
+ case OT_DUMMY: break;
+
+ default: return;
+ }
+
+ this->cur_order_index++;
+ InvalidateVehicleOrder(this);
+}
+
+
void SpecialVehicle::UpdateDeltaXY(Direction direction)
{
this->x_offs = 0;