Adjust types in EnumCheckRoadVehClose

pull/603/head
Jonathan G Rennison 9 months ago
parent 7cc1ed9594
commit 18a40df10e

@ -679,19 +679,20 @@ static void StartRoadVehSound(const RoadVehicle *v)
struct RoadVehFindData {
int x;
int y;
const Vehicle *veh;
Vehicle *best;
const RoadVehicle *veh;
RoadVehicle *best;
uint best_diff;
Direction dir;
RoadTypeCollisionMode collision_mode;
};
static Vehicle *EnumCheckRoadVehClose(Vehicle *v, void *data)
static Vehicle *EnumCheckRoadVehClose(Vehicle *veh, void *data)
{
static const int8 dist_x[] = { -4, -8, -4, -1, 4, 8, 4, 1 };
static const int8 dist_y[] = { -4, -1, 4, 8, 4, 1, -4, -8 };
RoadVehFindData *rvf = (RoadVehFindData*)data;
RoadVehicle *v = RoadVehicle::From(veh);
short x_diff = v->x_pos - rvf->x;
short y_diff = v->y_pos - rvf->y;
@ -700,7 +701,7 @@ static Vehicle *EnumCheckRoadVehClose(Vehicle *v, void *data)
abs(v->z_pos - rvf->veh->z_pos) < 6 &&
v->direction == rvf->dir &&
rvf->veh->First() != v->First() &&
HasBit(_collision_mode_roadtypes[rvf->collision_mode], RoadVehicle::From(v)->roadtype) &&
HasBit(_collision_mode_roadtypes[rvf->collision_mode], v->roadtype) &&
(dist_x[v->direction] >= 0 || (x_diff > dist_x[v->direction] && x_diff <= 0)) &&
(dist_x[v->direction] <= 0 || (x_diff < dist_x[v->direction] && x_diff >= 0)) &&
(dist_y[v->direction] >= 0 || (y_diff > dist_y[v->direction] && y_diff <= 0)) &&
@ -750,7 +751,7 @@ static RoadVehicle *RoadVehFindCloseTo(RoadVehicle *v, int x, int y, Direction d
if (update_blocked_ctr && ++front->blocked_ctr > 1480 && (!_settings_game.vehicle.roadveh_cant_quantum_tunnel)) return nullptr;
RoadVehicle *rv = RoadVehicle::From(rvf.best);
RoadVehicle *rv = rvf.best;
if (rv != nullptr && front->IsRoadVehicleOnLevelCrossing() && (rv->First()->cur_speed == 0 || rv->First()->IsRoadVehicleStopped())) return nullptr;
return rv;

Loading…
Cancel
Save