File diff r20053:1f0b373e9dce → r20054:152d076eb07b
src/vehicle.cpp
Show inline comments
 
@@ -720,10 +720,11 @@ void Vehicle::PreDestructor()
 
	if (CleaningPool()) return;
 

	
 
	if (Station::IsValidID(this->last_station_visited)) {
 
		Station::Get(this->last_station_visited)->loading_vehicles.remove(this);
 
		Station *st = Station::Get(this->last_station_visited);
 
		st->loading_vehicles.remove(this);
 

	
 
		HideFillingPercent(&this->fill_percent_te_id);
 

	
 
		this->CancelReservation(st);
 
		delete this->cargo_payment;
 
	}
 

	
 
@@ -1255,7 +1256,7 @@ uint8 CalcPercentVehicleFilled(const Veh
 

	
 
	/* Count up max and used */
 
	for (const Vehicle *v = front; v != NULL; v = v->Next()) {
 
		count += v->cargo.Count();
 
		count += v->cargo.OnboardCount();
 
		max += v->cargo_cap;
 
		if (v->cargo_cap != 0 && colour != NULL) {
 
			unloading += HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) ? 1 : 0;
 
@@ -1981,6 +1982,22 @@ void Vehicle::BeginLoading()
 
}
 

	
 
/**
 
 * Return all reserved cargo packets to the station.
 
 * @param st the station where the reserved packets should go.
 
 */
 
void Vehicle::CancelReservation(Station *st)
 
{
 
	for (Vehicle *v = this; v != NULL; v = v->next) {
 
		VehicleCargoList &cargo = v->cargo;
 
		if (cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0) {
 
			DEBUG(misc, 1, "cancelling cargo reservation");
 
			cargo.Return(UINT_MAX, &st->goods[v->cargo_type].cargo);
 
			cargo.KeepAll();
 
		}
 
	}
 
}
 

	
 
/**
 
 * Perform all actions when leaving a station.
 
 * @pre this->current_order.IsType(OT_LOADING)
 
 */
 
@@ -1995,6 +2012,7 @@ void Vehicle::LeaveStation()
 

	
 
	this->current_order.MakeLeaveStation();
 
	Station *st = Station::Get(this->last_station_visited);
 
	this->CancelReservation(st);
 
	st->loading_vehicles.remove(this);
 

	
 
	HideFillingPercent(&this->fill_percent_te_id);