style: aplicar fixes de clang-tidy (todo excepto uppercase-literal-suffix)
Corregidos ~2570 issues automáticamente con clang-tidy --fix-errors más ajustes manuales posteriores: - modernize: designated-initializers, trailing-return-type, use-auto, avoid-c-arrays (→ std::array<>), use-ranges, use-emplace, deprecated-headers, use-equals-default, pass-by-value, return-braced-init-list, use-default-member-init - readability: math-missing-parentheses, implicit-bool-conversion, braces-around-statements, isolate-declaration, use-std-min-max, identifier-naming, else-after-return, redundant-casting, convert-member-functions-to-static, make-member-function-const, static-accessed-through-instance - performance: avoid-endl, unnecessary-value-param, type-promotion, inefficient-vector-operation - dead code: XOR_KEY (orphan tras eliminar encryptData/decryptData), dead stores en engine.cpp y png_shape.cpp - NOLINT justificado en 10 funciones con alta complejidad cognitiva (initialize, render, main, processEvents, update×3, performDemoAction, randomizeOnDemoStart, renderDebugHUD, AppLogo::update) Compilación: gcc -Wall sin warnings. clang-tidy: 0 issues. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
#include "shape_manager.hpp"
|
||||
|
||||
#include <algorithm> // for std::min, std::max, std::transform
|
||||
#include <cctype> // for ::tolower
|
||||
#include <cstdlib> // for rand
|
||||
#include <string> // for std::string
|
||||
#include <algorithm> // for std::min, std::max, std::transform
|
||||
#include <cctype> // for ::tolower
|
||||
#include <cstdlib> // for rand
|
||||
#include <string> // for std::string
|
||||
|
||||
#include "ball.hpp" // for Ball
|
||||
#include "defines.hpp" // for constantes
|
||||
#include "scene/scene_manager.hpp" // for SceneManager
|
||||
#include "state/state_manager.hpp" // for StateManager
|
||||
#include "ui/ui_manager.hpp" // for UIManager
|
||||
#include "ball.hpp" // for Ball
|
||||
#include "defines.hpp" // for constantes
|
||||
#include "scene/scene_manager.hpp" // for SceneManager
|
||||
#include "state/state_manager.hpp" // for StateManager
|
||||
#include "ui/ui_manager.hpp" // for UIManager
|
||||
|
||||
// Includes de todas las shapes (necesario para creación polimórfica)
|
||||
#include "shapes/atom_shape.hpp"
|
||||
@@ -23,26 +23,24 @@
|
||||
#include "shapes/torus_shape.hpp"
|
||||
|
||||
ShapeManager::ShapeManager()
|
||||
: engine_(nullptr)
|
||||
, scene_mgr_(nullptr)
|
||||
, ui_mgr_(nullptr)
|
||||
, state_mgr_(nullptr)
|
||||
, current_mode_(SimulationMode::PHYSICS)
|
||||
, current_shape_type_(ShapeType::SPHERE)
|
||||
, last_shape_type_(ShapeType::SPHERE)
|
||||
, active_shape_(nullptr)
|
||||
, shape_scale_factor_(1.0f)
|
||||
, depth_zoom_enabled_(true)
|
||||
, screen_width_(0)
|
||||
, screen_height_(0)
|
||||
, shape_convergence_(0.0f) {
|
||||
: engine_(nullptr),
|
||||
scene_mgr_(nullptr),
|
||||
ui_mgr_(nullptr),
|
||||
state_mgr_(nullptr),
|
||||
current_mode_(SimulationMode::PHYSICS),
|
||||
current_shape_type_(ShapeType::SPHERE),
|
||||
last_shape_type_(ShapeType::SPHERE),
|
||||
active_shape_(nullptr),
|
||||
shape_scale_factor_(1.0f),
|
||||
depth_zoom_enabled_(true),
|
||||
screen_width_(0),
|
||||
screen_height_(0),
|
||||
shape_convergence_(0.0f) {
|
||||
}
|
||||
|
||||
ShapeManager::~ShapeManager() {
|
||||
}
|
||||
ShapeManager::~ShapeManager() = default;
|
||||
|
||||
void ShapeManager::initialize(Engine* engine, SceneManager* scene_mgr, UIManager* ui_mgr,
|
||||
StateManager* state_mgr, int screen_width, int screen_height) {
|
||||
void ShapeManager::initialize(Engine* engine, SceneManager* scene_mgr, UIManager* ui_mgr, StateManager* state_mgr, int screen_width, int screen_height) {
|
||||
engine_ = engine;
|
||||
scene_mgr_ = scene_mgr;
|
||||
ui_mgr_ = ui_mgr;
|
||||
@@ -66,17 +64,17 @@ void ShapeManager::toggleShapeMode(bool force_gravity_on_exit) {
|
||||
activateShapeInternal(last_shape_type_);
|
||||
|
||||
// Si estamos en modo LOGO y la figura es PNG_SHAPE, restaurar configuración LOGO
|
||||
if (state_mgr_ && state_mgr_->getCurrentMode() == AppMode::LOGO && last_shape_type_ == ShapeType::PNG_SHAPE) {
|
||||
if ((state_mgr_ != nullptr) && state_mgr_->getCurrentMode() == AppMode::LOGO && last_shape_type_ == ShapeType::PNG_SHAPE) {
|
||||
if (active_shape_) {
|
||||
PNGShape* png_shape = dynamic_cast<PNGShape*>(active_shape_.get());
|
||||
if (png_shape) {
|
||||
auto* png_shape = dynamic_cast<PNGShape*>(active_shape_.get());
|
||||
if (png_shape != nullptr) {
|
||||
png_shape->setLogoMode(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Si estamos en LOGO MODE, resetear convergencia al entrar
|
||||
if (state_mgr_ && state_mgr_->getCurrentMode() == AppMode::LOGO) {
|
||||
if ((state_mgr_ != nullptr) && state_mgr_->getCurrentMode() == AppMode::LOGO) {
|
||||
shape_convergence_ = 0.0f;
|
||||
}
|
||||
} else {
|
||||
@@ -93,7 +91,7 @@ void ShapeManager::toggleShapeMode(bool force_gravity_on_exit) {
|
||||
}
|
||||
|
||||
// Mostrar notificación (solo si NO estamos en modo demo o logo)
|
||||
if (state_mgr_ && ui_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
if ((state_mgr_ != nullptr) && (ui_mgr_ != nullptr) && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
ui_mgr_->showNotification("Modo física");
|
||||
}
|
||||
}
|
||||
@@ -113,8 +111,8 @@ void ShapeManager::handleShapeScaleChange(bool increase) {
|
||||
clampShapeScale();
|
||||
|
||||
// Mostrar notificación si está en modo SANDBOX
|
||||
if (ui_mgr_ && state_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
std::string notification = "Escala " + std::to_string(static_cast<int>(shape_scale_factor_ * 100.0f + 0.5f)) + "%";
|
||||
if ((ui_mgr_ != nullptr) && (state_mgr_ != nullptr) && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
std::string notification = "Escala " + std::to_string(static_cast<int>((shape_scale_factor_ * 100.0f) + 0.5f)) + "%";
|
||||
ui_mgr_->showNotification(notification);
|
||||
}
|
||||
}
|
||||
@@ -125,7 +123,7 @@ void ShapeManager::resetShapeScale() {
|
||||
shape_scale_factor_ = SHAPE_SCALE_DEFAULT;
|
||||
|
||||
// Mostrar notificación si está en modo SANDBOX
|
||||
if (ui_mgr_ && state_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
if ((ui_mgr_ != nullptr) && (state_mgr_ != nullptr) && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
ui_mgr_->showNotification("Escala 100%");
|
||||
}
|
||||
}
|
||||
@@ -136,14 +134,16 @@ void ShapeManager::toggleDepthZoom() {
|
||||
depth_zoom_enabled_ = !depth_zoom_enabled_;
|
||||
|
||||
// Mostrar notificación si está en modo SANDBOX
|
||||
if (ui_mgr_ && state_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
if ((ui_mgr_ != nullptr) && (state_mgr_ != nullptr) && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
ui_mgr_->showNotification(depth_zoom_enabled_ ? "Profundidad on" : "Profundidad off");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ShapeManager::update(float delta_time) {
|
||||
if (!active_shape_ || current_mode_ != SimulationMode::SHAPE) return;
|
||||
if (!active_shape_ || current_mode_ != SimulationMode::SHAPE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Actualizar animación de la figura
|
||||
active_shape_->update(delta_time, static_cast<float>(screen_width_), static_cast<float>(screen_height_));
|
||||
@@ -161,7 +161,9 @@ void ShapeManager::update(float delta_time) {
|
||||
// Actualizar cada pelota con física de atracción
|
||||
for (size_t i = 0; i < balls.size(); i++) {
|
||||
// Obtener posición 3D rotada del punto i
|
||||
float x_3d, y_3d, z_3d;
|
||||
float x_3d;
|
||||
float y_3d;
|
||||
float z_3d;
|
||||
active_shape_->getPoint3D(static_cast<int>(i), x_3d, y_3d, z_3d);
|
||||
|
||||
// Aplicar escala manual a las coordenadas 3D
|
||||
@@ -179,9 +181,7 @@ void ShapeManager::update(float delta_time) {
|
||||
// Aplicar fuerza de atracción física hacia el punto rotado
|
||||
// Usar constantes SHAPE (mayor pegajosidad que ROTOBALL)
|
||||
float shape_size = scale_factor * 80.0f; // 80px = radio base
|
||||
balls[i]->applyShapeForce(target_x, target_y, shape_size, delta_time,
|
||||
SHAPE_SPRING_K, SHAPE_DAMPING_BASE, SHAPE_DAMPING_NEAR,
|
||||
SHAPE_NEAR_THRESHOLD, SHAPE_MAX_FORCE);
|
||||
balls[i]->applyShapeForce(target_x, target_y, shape_size, delta_time, SHAPE_SPRING_K, SHAPE_DAMPING_BASE, SHAPE_DAMPING_NEAR, SHAPE_NEAR_THRESHOLD, SHAPE_MAX_FORCE);
|
||||
|
||||
// Calcular brillo según profundidad Z para renderizado
|
||||
// Normalizar Z al rango de la figura (asumiendo simetría ±shape_size)
|
||||
@@ -191,12 +191,12 @@ void ShapeManager::update(float delta_time) {
|
||||
|
||||
// Calcular escala según profundidad Z (perspectiva) - solo si está activado
|
||||
// 0.0 (fondo) → 0.5x, 0.5 (medio) → 1.0x, 1.0 (frente) → 1.5x
|
||||
float depth_scale = depth_zoom_enabled_ ? (0.5f + z_normalized * 1.0f) : 1.0f;
|
||||
float depth_scale = depth_zoom_enabled_ ? (0.5f + (z_normalized * 1.0f)) : 1.0f;
|
||||
balls[i]->setDepthScale(depth_scale);
|
||||
}
|
||||
|
||||
// Calcular convergencia en LOGO MODE (% de pelotas cerca de su objetivo)
|
||||
if (state_mgr_ && state_mgr_->getCurrentMode() == AppMode::LOGO && current_mode_ == SimulationMode::SHAPE) {
|
||||
if ((state_mgr_ != nullptr) && state_mgr_->getCurrentMode() == AppMode::LOGO && current_mode_ == SimulationMode::SHAPE) {
|
||||
int balls_near = 0;
|
||||
float distance_threshold = LOGO_CONVERGENCE_DISTANCE; // 20px fijo (más permisivo)
|
||||
|
||||
@@ -215,7 +215,9 @@ void ShapeManager::update(float delta_time) {
|
||||
}
|
||||
|
||||
void ShapeManager::generateShape() {
|
||||
if (!active_shape_) return;
|
||||
if (!active_shape_) {
|
||||
return;
|
||||
}
|
||||
|
||||
int num_points = static_cast<int>(scene_mgr_->getBallCount());
|
||||
active_shape_->generatePoints(num_points, static_cast<float>(screen_width_), static_cast<float>(screen_height_));
|
||||
@@ -277,9 +279,9 @@ void ShapeManager::activateShapeInternal(ShapeType type) {
|
||||
scene_mgr_->enableShapeAttractionAll(true);
|
||||
|
||||
// Mostrar notificación con nombre de figura (solo si NO estamos en modo demo o logo)
|
||||
if (active_shape_ && state_mgr_ && ui_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
if (active_shape_ && (state_mgr_ != nullptr) && (ui_mgr_ != nullptr) && state_mgr_->getCurrentMode() == AppMode::SANDBOX) {
|
||||
std::string shape_name = active_shape_->getName();
|
||||
std::transform(shape_name.begin(), shape_name.end(), shape_name.begin(), ::tolower);
|
||||
std::ranges::transform(shape_name, shape_name.begin(), ::tolower);
|
||||
std::string notification = std::string("Modo ") + shape_name;
|
||||
ui_mgr_->showNotification(notification);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user