|
|
@ -2382,7 +2382,6 @@ int32 CmdRenameStation(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|
|
|
uint MoveGoodsToStation(TileIndex tile, int w, int h, int type, uint amount)
|
|
|
|
uint MoveGoodsToStation(TileIndex tile, int w, int h, int type, uint amount)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Station* around[8];
|
|
|
|
Station* around[8];
|
|
|
|
int rad = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (uint i = 0; i < lengthof(around); i++) around[i] = NULL;
|
|
|
|
for (uint i = 0; i < lengthof(around); i++) around[i] = NULL;
|
|
|
|
|
|
|
|
|
|
|
@ -2417,9 +2416,6 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, int type, uint amount)
|
|
|
|
(!_patches.selectgoods || st->goods[type].last_speed > 0) && // if last_speed is 0, no vehicle has been there.
|
|
|
|
(!_patches.selectgoods || st->goods[type].last_speed > 0) && // if last_speed is 0, no vehicle has been there.
|
|
|
|
((st->facilities & ~FACIL_BUS_STOP) != 0 || type == CT_PASSENGERS) && // if we have other fac. than a bus stop, or the cargo is passengers
|
|
|
|
((st->facilities & ~FACIL_BUS_STOP) != 0 || type == CT_PASSENGERS) && // if we have other fac. than a bus stop, or the cargo is passengers
|
|
|
|
((st->facilities & ~FACIL_TRUCK_STOP) != 0 || type != CT_PASSENGERS)) { // if we have other fac. than a cargo bay or the cargo is not passengers
|
|
|
|
((st->facilities & ~FACIL_TRUCK_STOP) != 0 || type != CT_PASSENGERS)) { // if we have other fac. than a cargo bay or the cargo is not passengers
|
|
|
|
int x_dist;
|
|
|
|
|
|
|
|
int y_dist;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (_patches.modified_catchment) {
|
|
|
|
if (_patches.modified_catchment) {
|
|
|
|
// min and max coordinates of the producer relative
|
|
|
|
// min and max coordinates of the producer relative
|
|
|
|
const int x_min_prod = 9;
|
|
|
|
const int x_min_prod = 9;
|
|
|
@ -2427,27 +2423,26 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, int type, uint amount)
|
|
|
|
const int y_min_prod = 9;
|
|
|
|
const int y_min_prod = 9;
|
|
|
|
const int y_max_prod = 8 + h_prod;
|
|
|
|
const int y_max_prod = 8 + h_prod;
|
|
|
|
|
|
|
|
|
|
|
|
rad = FindCatchmentRadius(st);
|
|
|
|
int rad = FindCatchmentRadius(st);
|
|
|
|
|
|
|
|
|
|
|
|
x_dist = min(w_cur - x_min_prod, x_max_prod - w_cur);
|
|
|
|
int x_dist = min(w_cur - x_min_prod, x_max_prod - w_cur);
|
|
|
|
if (w_cur < x_min_prod) {
|
|
|
|
if (w_cur < x_min_prod) {
|
|
|
|
x_dist = x_min_prod - w_cur;
|
|
|
|
x_dist = x_min_prod - w_cur;
|
|
|
|
} else if (w_cur > x_max_prod) {
|
|
|
|
} else if (w_cur > x_max_prod) {
|
|
|
|
x_dist = w_cur - x_max_prod;
|
|
|
|
x_dist = w_cur - x_max_prod;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
y_dist = min(h_cur - y_min_prod, y_max_prod - h_cur);
|
|
|
|
int y_dist = min(h_cur - y_min_prod, y_max_prod - h_cur);
|
|
|
|
if (h_cur < y_min_prod) {
|
|
|
|
if (h_cur < y_min_prod) {
|
|
|
|
y_dist = y_min_prod - h_cur;
|
|
|
|
y_dist = y_min_prod - h_cur;
|
|
|
|
} else if (h_cur > y_max_prod) {
|
|
|
|
} else if (h_cur > y_max_prod) {
|
|
|
|
y_dist = h_cur - y_max_prod;
|
|
|
|
y_dist = h_cur - y_max_prod;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
|
|
|
|
x_dist = 0;
|
|
|
|
if (x_dist > rad || y_dist > rad) break;
|
|
|
|
y_dist = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (x_dist <= rad && y_dist <= rad) around[i] = st;
|
|
|
|
around[i] = st;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
} else if (around[i] == st) {
|
|
|
|
} else if (around[i] == st) {
|
|
|
|