refactor(bloques2-5): auditoria de codi - limpieza i arquitectura

Bloque 2: eliminar codi mort comentat (shape_manager, engine)
Bloque 3: Engine shape methods com thin wrappers a ShapeManager;
          eliminar estat duplicat de shapes en Engine
Bloque 4: encapsular getBallsMutable() amb helpers a SceneManager
          (enableShapeAttractionAll, resetDepthScalesAll)
Bloque 5: StateManager Phase 9 - tota la logica DEMO/LOGO
          implementada directament amb refs a SceneManager,
          ThemeManager i ShapeManager; eliminar callbacks a Engine.
          Acoplament Engine<->StateManager passa a unidireccional.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-19 00:42:03 +01:00
parent 6409b61bd5
commit 821eba3483
8 changed files with 640 additions and 1106 deletions

View File

@@ -239,3 +239,15 @@ void SceneManager::updateBallSizes(int old_size, int new_size) {
ball->updateSize(new_size);
}
}
void SceneManager::enableShapeAttractionAll(bool enabled) {
for (auto& ball : balls_) {
ball->enableShapeAttraction(enabled);
}
}
void SceneManager::resetDepthScalesAll() {
for (auto& ball : balls_) {
ball->setDepthScale(1.0f);
}
}

View File

@@ -109,11 +109,22 @@ class SceneManager {
const std::vector<std::unique_ptr<Ball>>& getBalls() const { return balls_; }
/**
* @brief Obtiene referencia mutable al vector de bolas (para ShapeManager)
* @brief Obtiene referencia mutable al vector de bolas (para ShapeManager/BoidManager)
* NOTA: Usar con cuidado, solo para sistemas que necesitan modificar estado de bolas
*/
std::vector<std::unique_ptr<Ball>>& getBallsMutable() { return balls_; }
/**
* @brief Activa o desactiva la atracción de figura en todas las bolas
* @param enabled true para activar, false para desactivar
*/
void enableShapeAttractionAll(bool enabled);
/**
* @brief Resetea la escala de profundidad a 1.0 en todas las bolas
*/
void resetDepthScalesAll();
/**
* @brief Obtiene número total de bolas
*/