demo time-based: porta el patro de CCAE (multi-set, index = elapsed_s*60, % size per safe loop), substitueix demo.bin per demo1/2/3.bin

This commit is contained in:
2026-05-19 19:16:36 +02:00
parent 748673f41b
commit 63eaaa8b5c
13 changed files with 173 additions and 97 deletions
+3 -10
View File
@@ -6,9 +6,10 @@
#include <string> // for string, basic_string
#include <vector> // for vector
#include "core/system/demo.hpp" // for Demo (estat de la demo)
#include "game/entities/bullet.h" // for Bullet::Kind (signatura de createBullet)
#include "game/entities/item.h" // for Item::Id (signatura de dropItem/createItem)
#include "utils/utils.h" // for DemoKeys, Color
#include "utils/utils.h" // for Color, Section
class Balloon;
class Fade;
class Menu;
@@ -45,7 +46,6 @@ class Game {
// Cantidad de elementos a escribir en los ficheros de datos
static constexpr int TOTAL_SCORE_DATA = 3;
static constexpr int TOTAL_DEMO_DATA = 2000;
// Contadores
static constexpr int STAGE_COUNTER = 200;
@@ -138,14 +138,6 @@ class Game {
int item_coffee_machine_odds; // Probabilidad de aparición del objeto
};
struct Demo {
bool enabled; // Indica si está activo el modo demo
bool recording; // Indica si está activado el modo para grabar la demo
Uint16 counter; // Contador para el modo demo
DemoKeys keys; // Variable con las pulsaciones de teclas del modo demo
DemoKeys data_file[TOTAL_DEMO_DATA]; // Datos del fichero con los movimientos para la demo
};
void update(float dt_s); // Actualiza el juego
void render(); // Dibuja el juego
void init(); // Inicializa las variables necesarias para la sección 'Game'
@@ -389,6 +381,7 @@ class Game {
EnemyPool enemy_pool_[10]; // Variable con los diferentes conjuntos de formaciones enemigas
Uint8 last_stage_reached_; // Contiene el numero de la última pantalla que se ha alcanzado
Demo demo_; // Variable con todas las variables relacionadas con el modo demo
size_t demo_selected_set_{0}; // Index del set de demo a reproduir (escollit a loadDemoFile)
int total_power_to_complete_game_; // La suma del poder necesario para completar todas las fases
int clouds_speed_{0}; // Velocidad a la que se desplazan las nubes
int pause_counter_; // Contador per a sortir del menu de pausa (frame-based, frames)