Changeset - r8241:9d4bd14e65b7
[Not reviewed]
master
0 1 0
frosch - 17 years ago 2008-01-10 13:13:18
frosch@openttd.org
(svn r11805) -Fix [FS#1620]: VEHICLE_TRIGGER_EMPTY was triggered continuously while train waiting in station.
1 file changed with 8 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/economy.cpp
Show inline comments
 
@@ -1564,7 +1564,7 @@ static void LoadUnloadVehicle(Vehicle *v
 
	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
 

	
 
			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
 
			 * 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
 
		}
 
	}
 

	
 
	/* 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
 

	
 
	v->load_unload_time_rem = unloading_time;
 

	
 
	if (completely_empty) {
 
	if (completely_emptied) {
 
		TriggerVehicle(v, VEHICLE_TRIGGER_EMPTY);
 
	}
 

	
0 comments (0 inline, 0 general)