diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index f6933f385e..69e7c363c2 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -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;