fix: bucles cap a ranges algorithms (38 troballes)
This commit is contained in:
@@ -108,32 +108,23 @@ auto CollisionMap::getSlopeHeight(SDL_FPoint p, Tile slope) -> int {
|
||||
|
||||
// Comprueba las colisiones con paredes derechas
|
||||
auto CollisionMap::checkRightSurfaces(const SDL_FRect& rect) -> int { // NOLINT(readability-convert-member-functions-to-static)
|
||||
for (const auto& s : right_walls_) {
|
||||
if (checkCollision(s, rect)) {
|
||||
return s.x;
|
||||
}
|
||||
}
|
||||
return Collision::NONE;
|
||||
auto it = std::ranges::find_if(right_walls_,
|
||||
[&rect](const auto& s) { return checkCollision(s, rect); });
|
||||
return (it != right_walls_.end()) ? it->x : Collision::NONE;
|
||||
}
|
||||
|
||||
// Comprueba las colisiones con paredes izquierdas
|
||||
auto CollisionMap::checkLeftSurfaces(const SDL_FRect& rect) -> int { // NOLINT(readability-convert-member-functions-to-static)
|
||||
for (const auto& s : left_walls_) {
|
||||
if (checkCollision(s, rect)) {
|
||||
return s.x;
|
||||
}
|
||||
}
|
||||
return Collision::NONE;
|
||||
auto it = std::ranges::find_if(left_walls_,
|
||||
[&rect](const auto& s) { return checkCollision(s, rect); });
|
||||
return (it != left_walls_.end()) ? it->x : Collision::NONE;
|
||||
}
|
||||
|
||||
// Comprueba las colisiones con techos
|
||||
auto CollisionMap::checkTopSurfaces(const SDL_FRect& rect) -> int { // NOLINT(readability-convert-member-functions-to-static)
|
||||
for (const auto& s : top_floors_) {
|
||||
if (checkCollision(s, rect)) {
|
||||
return s.y;
|
||||
}
|
||||
}
|
||||
return Collision::NONE;
|
||||
auto it = std::ranges::find_if(top_floors_,
|
||||
[&rect](const auto& s) { return checkCollision(s, rect); });
|
||||
return (it != top_floors_.end()) ? it->y : Collision::NONE;
|
||||
}
|
||||
|
||||
// Comprueba las colisiones punto con techos
|
||||
@@ -145,22 +136,16 @@ auto CollisionMap::checkTopSurfaces(const SDL_FPoint& p) -> bool {
|
||||
|
||||
// Comprueba las colisiones con suelos
|
||||
auto CollisionMap::checkBottomSurfaces(const SDL_FRect& rect) -> int { // NOLINT(readability-convert-member-functions-to-static)
|
||||
for (const auto& s : bottom_floors_) {
|
||||
if (checkCollision(s, rect)) {
|
||||
return s.y;
|
||||
}
|
||||
}
|
||||
return Collision::NONE;
|
||||
auto it = std::ranges::find_if(bottom_floors_,
|
||||
[&rect](const auto& s) { return checkCollision(s, rect); });
|
||||
return (it != bottom_floors_.end()) ? it->y : Collision::NONE;
|
||||
}
|
||||
|
||||
// Comprueba las colisiones con conveyor belts
|
||||
auto CollisionMap::checkAutoSurfaces(const SDL_FRect& rect) -> int { // NOLINT(readability-convert-member-functions-to-static)
|
||||
for (const auto& s : conveyor_belt_floors_) {
|
||||
if (checkCollision(s, rect)) {
|
||||
return s.y;
|
||||
}
|
||||
}
|
||||
return Collision::NONE;
|
||||
auto it = std::ranges::find_if(conveyor_belt_floors_,
|
||||
[&rect](const auto& s) { return checkCollision(s, rect); });
|
||||
return (it != conveyor_belt_floors_.end()) ? it->y : Collision::NONE;
|
||||
}
|
||||
|
||||
// Comprueba las colisiones punto con conveyor belts
|
||||
@@ -208,18 +193,16 @@ auto CollisionMap::checkRightSlopes(const SDL_FPoint& p) -> bool {
|
||||
|
||||
// Obtiene puntero a slope en un punto (prioriza left_slopes_ sobre right_slopes_)
|
||||
auto CollisionMap::getSlopeAtPoint(const SDL_FPoint& p) const -> const LineDiagonal* { // NOLINT(readability-convert-member-functions-to-static)
|
||||
// Primero busca en rampas izquierdas
|
||||
for (const auto& slope : left_slopes_) {
|
||||
if (checkCollision(p, slope)) {
|
||||
return &slope;
|
||||
}
|
||||
auto pred = [&p](const auto& slope) { return static_cast<bool>(checkCollision(p, slope)); };
|
||||
|
||||
auto left_it = std::ranges::find_if(left_slopes_, pred);
|
||||
if (left_it != left_slopes_.end()) {
|
||||
return &(*left_it);
|
||||
}
|
||||
|
||||
// Luego busca en rampas derechas
|
||||
for (const auto& slope : right_slopes_) {
|
||||
if (checkCollision(p, slope)) {
|
||||
return &slope;
|
||||
}
|
||||
auto right_it = std::ranges::find_if(right_slopes_, pred);
|
||||
if (right_it != right_slopes_.end()) {
|
||||
return &(*right_it);
|
||||
}
|
||||
|
||||
// No hay colisión con ninguna slope
|
||||
|
||||
Reference in New Issue
Block a user