61 lines
1.4 KiB
Markdown
61 lines
1.4 KiB
Markdown
# TODO
|
|
|
|
## Tareas pendientes
|
|
|
|
- [ ] Revisar todas las variables static de los métodos para ver si se resetean correctamente
|
|
|
|
## Mejoras arquitecturales (refactoring)
|
|
|
|
### Eliminar variables static locales y usar patrones profesionales:
|
|
|
|
**Opción 1: Máquina de Estados**
|
|
```cpp
|
|
class GameCompletedState {
|
|
bool start_celebrations_done = false;
|
|
bool end_celebrations_done = false;
|
|
float timer = 0.0f;
|
|
|
|
public:
|
|
void reset() {
|
|
start_celebrations_done = false;
|
|
end_celebrations_done = false;
|
|
timer = 0.0f;
|
|
}
|
|
|
|
void update(float deltaTime) {
|
|
timer += deltaTime;
|
|
// lógica aquí
|
|
}
|
|
};
|
|
```
|
|
|
|
**Opción 2: Sistema de Eventos/Callbacks**
|
|
```cpp
|
|
// Al entrar en COMPLETED state
|
|
eventSystem.scheduleEvent(6.0f, []{ startCelebrations(); });
|
|
eventSystem.scheduleEvent(14.0f, []{ endCelebrations(); });
|
|
```
|
|
|
|
**Opción 3: Flags como miembros privados**
|
|
```cpp
|
|
class Game {
|
|
private:
|
|
struct GameOverState {
|
|
bool game_over_triggered = false;
|
|
bool start_celebrations_triggered = false;
|
|
bool end_celebrations_triggered = false;
|
|
|
|
void reset() {
|
|
game_over_triggered = false;
|
|
start_celebrations_triggered = false;
|
|
end_celebrations_triggered = false;
|
|
}
|
|
} game_over_state_;
|
|
};
|
|
```
|
|
|
|
**Ventajas:**
|
|
- Más fáciles de testear
|
|
- Más fáciles de debugear
|
|
- Más fáciles de entender y mantener
|
|
- No tienen "estado oculto" |