|
|
|
@ -1489,7 +1489,7 @@ void VehiclePayment(Vehicle *front_v)
|
|
|
|
|
if (!cp->paid_for &&
|
|
|
|
|
cp->source != last_visited &&
|
|
|
|
|
HasBit(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) &&
|
|
|
|
|
(front_v->current_order.GetUnloadType() & OFB_TRANSFER) == 0) {
|
|
|
|
|
(front_v->current_order.GetUnloadType() & OUFB_TRANSFER) == 0) {
|
|
|
|
|
/* Deliver goods to the station */
|
|
|
|
|
st->time_since_unload = 0;
|
|
|
|
|
|
|
|
|
@ -1502,8 +1502,8 @@ void VehiclePayment(Vehicle *front_v)
|
|
|
|
|
result |= 1;
|
|
|
|
|
|
|
|
|
|
SetBit(v->vehicle_flags, VF_CARGO_UNLOADING);
|
|
|
|
|
} else if (front_v->current_order.GetUnloadType() & (OFB_UNLOAD | OFB_TRANSFER)) {
|
|
|
|
|
if (!cp->paid_for && (front_v->current_order.GetUnloadType() & OFB_TRANSFER) != 0) {
|
|
|
|
|
} else if (front_v->current_order.GetUnloadType() & (OUFB_UNLOAD | OUFB_TRANSFER)) {
|
|
|
|
|
if (!cp->paid_for && (front_v->current_order.GetUnloadType() & OUFB_TRANSFER) != 0) {
|
|
|
|
|
Money profit = GetTransportedGoodsIncome(
|
|
|
|
|
cp->count,
|
|
|
|
|
/* pay transfer vehicle for only the part of transfer it has done: ie. cargo_loaded_at_xy to here */
|
|
|
|
@ -1556,7 +1556,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
|
|
|
|
|
|
|
|
|
|
/* We have not waited enough time till the next round of loading/unloading */
|
|
|
|
|
if (--v->load_unload_time_rem != 0) {
|
|
|
|
|
if (_patches.improved_load && HasBit(v->current_order.GetLoadType(), OF_FULL_LOAD)) {
|
|
|
|
|
if (_patches.improved_load && (v->current_order.GetLoadType() & OLFB_FULL_LOAD)) {
|
|
|
|
|
/* 'Reserve' this cargo for this vehicle, because we were first. */
|
|
|
|
|
for (; v != NULL; v = v->Next()) {
|
|
|
|
|
if (v->cargo_cap != 0) cargo_left[v->cargo_type] -= v->cargo_cap - v->cargo.Count();
|
|
|
|
@ -1604,12 +1604,12 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
|
|
|
|
|
uint amount_unloaded = _patches.gradual_loading ? min(cargo_count, load_amount) : cargo_count;
|
|
|
|
|
bool remaining; // Are there cargo entities in this vehicle that can still be unloaded here?
|
|
|
|
|
|
|
|
|
|
if (HasBit(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) && !(u->current_order.GetUnloadType() & OFB_TRANSFER)) {
|
|
|
|
|
if (HasBit(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) && !(u->current_order.GetUnloadType() & OUFB_TRANSFER)) {
|
|
|
|
|
/* The cargo has reached it's final destination, the packets may now be destroyed */
|
|
|
|
|
remaining = v->cargo.MoveTo(NULL, amount_unloaded, CargoList::MTA_FINAL_DELIVERY, last_visited);
|
|
|
|
|
|
|
|
|
|
result |= 1;
|
|
|
|
|
} else if (u->current_order.GetUnloadType() & (OFB_UNLOAD | OFB_TRANSFER)) {
|
|
|
|
|
} else if (u->current_order.GetUnloadType() & (OUFB_UNLOAD | OUFB_TRANSFER)) {
|
|
|
|
|
remaining = v->cargo.MoveTo(&ge->cargo, amount_unloaded);
|
|
|
|
|
SetBit(ge->acceptance_pickup, GoodsEntry::PICKUP);
|
|
|
|
|
|
|
|
|
@ -1638,7 +1638,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Do not pick up goods that we unloaded */
|
|
|
|
|
if (u->current_order.GetUnloadType() & OFB_UNLOAD) continue;
|
|
|
|
|
if (u->current_order.GetUnloadType() & OUFB_UNLOAD) continue;
|
|
|
|
|
|
|
|
|
|
/* update stats */
|
|
|
|
|
int t;
|
|
|
|
@ -1710,7 +1710,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
|
|
|
|
|
* all wagons at the same time instead of using the same 'improved'
|
|
|
|
|
* loading algorithm for the wagons (only fill wagon when there is
|
|
|
|
|
* enough to fill the previous wagons) */
|
|
|
|
|
if (_patches.improved_load && HasBit(u->current_order.GetLoadType(), OF_FULL_LOAD)) {
|
|
|
|
|
if (_patches.improved_load && (u->current_order.GetLoadType() & OLFB_FULL_LOAD)) {
|
|
|
|
|
/* Update left cargo */
|
|
|
|
|
for (v = u; v != NULL; v = v->Next()) {
|
|
|
|
|
if (v->cargo_cap != 0) cargo_left[v->cargo_type] -= v->cargo_cap - v->cargo.Count();
|
|
|
|
@ -1729,7 +1729,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
bool finished_loading = true;
|
|
|
|
|
if (HasBit(v->current_order.GetLoadType(), OF_FULL_LOAD)) {
|
|
|
|
|
if (v->current_order.GetLoadType() & OLFB_FULL_LOAD) {
|
|
|
|
|
if (_patches.full_load_any) {
|
|
|
|
|
/* if the aircraft carries passengers and is NOT full, then
|
|
|
|
|
* continue loading, no matter how much mail is in */
|
|
|
|
|