summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2008-01-10 13:13:18 +0000
committerfrosch <frosch@openttd.org>2008-01-10 13:13:18 +0000
commit930f875c514560aac503b6b487460eac2d1dd41a (patch)
tree05faffe07d605738d838f2781671361597d05e72
parent0181678cdedc9c02934a1add07fe9f81458b151f (diff)
downloadopenttd-930f875c514560aac503b6b487460eac2d1dd41a.tar.xz
(svn r11805) -Fix [FS#1620]: VEHICLE_TRIGGER_EMPTY was triggered continuously while train waiting in station.
-rw-r--r--src/economy.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/economy.cpp b/src/economy.cpp
index ca6177c34..02b928a42 100644
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -1564,7 +1564,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
int result = 0;
uint cap;
- bool completely_empty = true;
+ bool completely_emptied = true;
bool anything_unloaded = false;
bool anything_loaded = false;
uint32 cargo_not_full = 0;
@@ -1612,7 +1612,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
anything_unloaded = true;
if (_patches.gradual_loading && remaining) {
- completely_empty = false;
+ completely_emptied = false;
} else {
/* We have finished unloading (cargo count == 0) */
ClrBit(v->vehicle_flags, VF_CARGO_UNLOADING);
@@ -1665,9 +1665,9 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
* loading them. Since this will cause
* VEHICLE_TRIGGER_EMPTY to be called at the time when
* the whole vehicle chain is really totally empty, the
- * completely_empty assignment can then be safely
+ * completely_emptied assignment can then be safely
* removed; that's how TTDPatch behaves too. --pasky */
- completely_empty = false;
+ completely_emptied = false;
anything_loaded = true;
ge->cargo.MoveTo(&v->cargo, cap, CargoList::MTA_CARGO_LOAD, st->xy);
@@ -1687,6 +1687,9 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
}
}
+ /* Only set completly_emptied, if we just unloaded all remaining cargo */
+ completely_emptied &= anything_unloaded;
+
/* We update these variables here, so gradual loading still fills
* all wagons at the same time instead of using the same 'improved'
* loading algorithm for the wagons (only fill wagon when there is
@@ -1754,7 +1757,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
v->load_unload_time_rem = unloading_time;
- if (completely_empty) {
+ if (completely_emptied) {
TriggerVehicle(v, VEHICLE_TRIGGER_EMPTY);
}