From caf191672e21040fe3b5a33de0dd1b8198faf8d6 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 24 Oct 2024 22:08:53 +0200 Subject: [PATCH] Posat ordre en el constructor de Game --- source/game.cpp | 373 ++++++++++++++++++++++-------------------------- source/game.h | 134 ++++++++++------- source/utils.h | 3 +- 3 files changed, 252 insertions(+), 258 deletions(-) diff --git a/source/game.cpp b/source/game.cpp index 217eb43..19bac7b 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -26,7 +26,6 @@ #include "lang.h" // para getText #include "manage_hiscore_table.h" // para ManageHiScoreTable #include "notifier.h" // para Notifier -#include "options.h" // para options #include "param.h" // para param #include "player.h" // para Player, PlayerStatus #include "resource.h" // para Resource @@ -42,39 +41,35 @@ struct JA_Sound_t; // lines 36-36 // Constructor Game::Game(int player_id, int current_stage, bool demo) - : current_stage_(current_stage) + : renderer_(Screen::get()->getRenderer()), + screen_(Screen::get()), + asset_(Asset::get()), + input_(Input::get()), + background_(std::make_unique()), + explosions_(std::make_unique()), + balloon_formations_(std::make_unique()), + canvas_(SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.play_area.rect.w, param.game.play_area.rect.h)), + fade_(std::make_unique()), + current_stage_(current_stage), + last_stage_reached_(current_stage) { - // Copia los punteros - asset_ = Asset::get(); - input_ = Input::get(); - screen_ = Screen::get(); - renderer_ = screen_->getRenderer(); - // Pasa variables demo_.enabled = demo; - last_stage_reached_ = current_stage_; - difficulty_ = options.game.difficulty; - // Crea los objetos - Scoreboard::init(); - scoreboard_ = Scoreboard::get(); - fade_ = std::make_unique(); + // Otras variables + section::name = section::Name::GAME; + section::options = section::Options::GAME_PLAY_1P; - background_ = std::make_unique(); - explosions_ = std::make_unique(); - balloon_formations_ = std::make_unique(); - - // Asigna los recursos a variables privadas del objeto + // Asigna texturas y animaciones setResources(); - // Inicializa los vectores con los datos para la demo - if (demo_.enabled) - { // Aleatoriza la asignación del fichero - const auto demo1 = rand() % 2; - const auto demo2 = (demo1 == 0) ? 1 : 0; - demo_.data.emplace_back(Resource::get()->getDemoData(demo1)); - demo_.data.emplace_back(Resource::get()->getDemoData(demo2)); - } + // Crea y configura los objetos + Scoreboard::init(); + scoreboard_ = Scoreboard::get(); + + fade_->setColor(fade_color.r, fade_color.g, fade_color.b); + fade_->setPost(param.fade.post_duration); + fade_->setType(FadeType::VENETIAN); background_->setPos(param.game.play_area.rect); @@ -83,181 +78,16 @@ Game::Game(int player_id, int current_stage, bool demo) explosions_->addTexture(3, explosions_textures_[2], explosions_animations_[2]); explosions_->addTexture(4, explosions_textures_[3], explosions_animations_[3]); - canvas_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.play_area.rect.w, param.game.play_area.rect.h); SDL_SetTextureBlendMode(canvas_, SDL_BLENDMODE_BLEND); - // Crea los dos jugadores - { - const int y = param.game.play_area.rect.h - 30; - players_.emplace_back(std::make_unique(1, param.game.play_area.first_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[0], player_animations_)); - players_.back()->setScoreBoardPanel(SCOREBOARD_LEFT_PANEL); - players_.back()->setName(lang::getText(53)); - players_.back()->setController(getController(players_.back()->getId())); - - players_.emplace_back(std::make_unique(2, param.game.play_area.third_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[1], player_animations_)); - players_.back()->setScoreBoardPanel(SCOREBOARD_RIGHT_PANEL); - players_.back()->setName(lang::getText(54)); - players_.back()->setController(getController(players_.back()->getId())); - } - - // Activa el jugador que coincide con el "player_id" - { - auto player = getPlayer(player_id); - player->setStatusPlaying(PlayerStatus::PLAYING); - player->setInvulnerable(false); - } - - // Variables relacionadas con la dificultad - switch (difficulty_) - { - case GameDifficulty::EASY: - { - default_balloon_speed_ = BALLOON_SPEED_1; - difficulty_score_multiplier_ = 0.5f; - scoreboard_->setColor(scoreboard_easy_color); - break; - } - - case GameDifficulty::NORMAL: - { - default_balloon_speed_ = BALLOON_SPEED_1; - difficulty_score_multiplier_ = 1.0f; - scoreboard_->setColor(scoreboard_normal_color); - break; - } - - case GameDifficulty::HARD: - { - default_balloon_speed_ = BALLOON_SPEED_5; - difficulty_score_multiplier_ = 1.5f; - scoreboard_->setColor(scoreboard_hard_color); - break; - } - - default: - break; - } - - // Variables para el marcador - scoreboard_->setPos({param.scoreboard.x, param.scoreboard.y, param.scoreboard.w, param.scoreboard.h}); - scoreboard_->setMode(SCOREBOARD_CENTER_PANEL, ScoreboardMode::STAGE_INFO); - for (const auto &player : players_) - { - scoreboard_->setName(player->getScoreBoardPanel(), player->getName()); - if (player->isWaiting()) - scoreboard_->setMode(player->getScoreBoardPanel(), ScoreboardMode::WAITING); - } - - // Resto de variables - ticks_ = 0; - hi_score_.score = options.game.hi_score_table[0].score; - hi_score_.name = options.game.hi_score_table[0].name; - paused_ = false; - game_completed_ = false; - game_completed_counter_ = 0; - section::name = section::Name::GAME; - section::options = section::Options::GAME_PLAY_1P; - current_power_ = 0; - menace_current_ = 0; - menace_threshold_ = 0; - hi_score_achieved_ = false; - stage_bitmap_counter_ = STAGE_COUNTER_; - game_over_counter_ = GAME_OVER_COUNTER_; - time_stopped_ = false; - time_stopped_counter_ = 0; - counter_ = 0; - last_ballon_deploy_ = 0; - balloon_deploy_counter_ = 0; - balloon_speed_ = default_balloon_speed_; - helper_.need_coffee = false; - helper_.need_coffee_machine = false; - helper_.need_power_ball = false; - helper_.counter = HELP_COUNTER_; - helper_.item_disk_odds = ITEM_POINTS_1_DISK_ODDS_; - helper_.item_gavina_odds = ITEM_POINTS_2_GAVINA_ODDS_; - helper_.item_pacmar_odds = ITEM_POINTS_3_PACMAR_ODDS_; - helper_.item_clock_odds = ITEM_CLOCK_ODDS_; - helper_.item_coffee_odds = ITEM_COFFEE_ODDS_; - helper_.item_coffee_machine_odds = ITEM_COFFEE_MACHINE_ODDS_; - power_ball_enabled_ = false; - power_ball_counter_ = 0; - coffee_machine_enabled_ = false; - balloons_popped_ = 0; -#ifdef DEBUG - auto_pop_balloons_ = false; -#endif - - // Inicializa las variables para el modo DEMO - if (demo_.enabled) - { - // Selecciona una pantalla al azar - { - constexpr auto demos = 3; - const auto demo = rand() % demos; - const int stages[demos] = {0, 3, 5}; - current_stage_ = stages[demo]; - } - - // Actualiza el numero de globos explotados según la fase de la demo - for (int i = 0; i < current_stage_; ++i) - { - balloons_popped_ += balloon_formations_->getStage(i).power_to_complete; - } - - // Activa o no al otro jugador - if (rand() % 2 == 0) - { - const auto other_player_id = player_id == 1 ? 2 : 1; - auto other_player = getPlayer(other_player_id); - other_player->setStatusPlaying(PlayerStatus::PLAYING); - } - - for (auto &player : players_) - { - // Añade 0, 1 o 2 cafes al jugador - for (int i = 0; i < rand() % 3; ++i) - { - player->giveExtraHit(); - } - - // Empieza sin inmunidad - player->setInvulnerable(false); - } - - // Deshabilita los sonidos - JA_EnableSound(false); - - // Configura los marcadores - scoreboard_->setMode(SCOREBOARD_LEFT_PANEL, ScoreboardMode::DEMO); - scoreboard_->setMode(SCOREBOARD_RIGHT_PANEL, ScoreboardMode::DEMO); - } - + // Inicializa el resto de variables + initPlayers(player_id); + initScoreboard(); + initDifficultyVars(); + initDemo(player_id); initPaths(); - - total_power_to_complete_game_ = 0; - for (int i = 0; i < 10; ++i) - { - total_power_to_complete_game_ += balloon_formations_->getStage(i).power_to_complete; - } - - // Modo grabar demo -#ifdef RECORDING - demo_.recording = true; -#else - demo_.recording = false; -#endif - demo_.counter = 0; - - // Inicializa el objeto para el fundido - fade_->setColor(fade_color.r, fade_color.g, fade_color.b); - fade_->setPost(param.fade.post_duration); - fade_->setType(FadeType::VENETIAN); - - // Con los globos creados, calcula el nivel de amenaza + setTotalPower(); evaluateAndSetMenace(); - - // Inicializa los sprites con los textos que aparecen al coger items - smart_sprites_.clear(); } Game::~Game() @@ -273,11 +103,10 @@ Game::~Game() #endif Scoreboard::destroy(); - SDL_DestroyTexture(canvas_); } -// Asigna los recursos a variables privadas del objeto +// Asigna texturas y animaciones void Game::setResources() { // Texturas @@ -404,12 +233,12 @@ void Game::deployBalloonFormation() auto set = rand() % 10; // Evita repetir la ultima formación enemiga desplegada - if (set == last_ballon_deploy_) + if (set == last_balloon_deploy_) { ++set %= 10; } - last_ballon_deploy_ = set; + last_balloon_deploy_ = set; const Stage stage = balloon_formations_->getStage(current_stage_); const auto numEnemies = stage.balloon_pool->set[set]->number_of_balloons; @@ -2255,3 +2084,143 @@ void Game::handleNameInput(const std::shared_ptr &player) player->setStatusPlaying(PlayerStatus::CONTINUE); } } + +// Inicializa las variables para el modo DEMO +void Game::initDemo(int player_id) +{ + if (demo_.enabled) + { + // Aleatoriza la asignación del fichero con los datos del modo demostracion + const auto demo1 = rand() % 2; + const auto demo2 = (demo1 == 0) ? 1 : 0; + demo_.data.emplace_back(Resource::get()->getDemoData(demo1)); + demo_.data.emplace_back(Resource::get()->getDemoData(demo2)); + + // Selecciona una pantalla al azar + { + constexpr auto demos = 3; + const auto demo = rand() % demos; + const int stages[demos] = {0, 3, 5}; + current_stage_ = stages[demo]; + } + + // Actualiza el numero de globos explotados según la fase del modo demostración + for (int i = 0; i < current_stage_; ++i) + { + balloons_popped_ += balloon_formations_->getStage(i).power_to_complete; + } + + // Activa o no al otro jugador + if (rand() % 2 == 0) + { + const auto other_player_id = player_id == 1 ? 2 : 1; + auto other_player = getPlayer(other_player_id); + other_player->setStatusPlaying(PlayerStatus::PLAYING); + } + + // Asigna cafes a los jugadores + for (auto &player : players_) + { + for (int i = 0; i < rand() % 3; ++i) + player->giveExtraHit(); + + player->setInvulnerable(false); + } + + // Deshabilita los sonidos + JA_EnableSound(false); + + // Configura los marcadores + scoreboard_->setMode(SCOREBOARD_LEFT_PANEL, ScoreboardMode::DEMO); + scoreboard_->setMode(SCOREBOARD_RIGHT_PANEL, ScoreboardMode::DEMO); + } + + // Modo grabar demo +#ifdef RECORDING + demo_.recording = true; +#else + demo_.recording = false; +#endif + demo_.counter = 0; +} + +// Calcula el poder total necesario para completar el juego +void Game::setTotalPower() +{ + total_power_to_complete_game_ = 0; + for (int i = 0; i < 10; ++i) + { + total_power_to_complete_game_ += balloon_formations_->getStage(i).power_to_complete; + } +} + +// Inicializa el marcador +void Game::initScoreboard() +{ + scoreboard_->setPos({param.scoreboard.x, param.scoreboard.y, param.scoreboard.w, param.scoreboard.h}); + scoreboard_->setMode(SCOREBOARD_CENTER_PANEL, ScoreboardMode::STAGE_INFO); + for (const auto &player : players_) + { + scoreboard_->setName(player->getScoreBoardPanel(), player->getName()); + if (player->isWaiting()) + scoreboard_->setMode(player->getScoreBoardPanel(), ScoreboardMode::WAITING); + } +} + +// Inicializa las opciones relacionadas con la dificultad +void Game::initDifficultyVars() +{ + // Variables relacionadas con la dificultad + switch (difficulty_) + { + case GameDifficulty::EASY: + { + default_balloon_speed_ = BALLOON_SPEED_1; + difficulty_score_multiplier_ = 0.5f; + scoreboard_->setColor(scoreboard_easy_color); + break; + } + + case GameDifficulty::NORMAL: + { + default_balloon_speed_ = BALLOON_SPEED_1; + difficulty_score_multiplier_ = 1.0f; + scoreboard_->setColor(scoreboard_normal_color); + break; + } + + case GameDifficulty::HARD: + { + default_balloon_speed_ = BALLOON_SPEED_5; + difficulty_score_multiplier_ = 1.5f; + scoreboard_->setColor(scoreboard_hard_color); + break; + } + + default: + break; + } + + balloon_speed_ = default_balloon_speed_; +} + +// Inicializa los jugadores +void Game::initPlayers(int player_id) +{ + // Crea los dos jugadores + const int y = param.game.play_area.rect.h - 30; + players_.emplace_back(std::make_unique(1, param.game.play_area.first_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[0], player_animations_)); + players_.back()->setScoreBoardPanel(SCOREBOARD_LEFT_PANEL); + players_.back()->setName(lang::getText(53)); + players_.back()->setController(getController(players_.back()->getId())); + + players_.emplace_back(std::make_unique(2, param.game.play_area.third_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[1], player_animations_)); + players_.back()->setScoreBoardPanel(SCOREBOARD_RIGHT_PANEL); + players_.back()->setName(lang::getText(54)); + players_.back()->setController(getController(players_.back()->getId())); + + // Activa el jugador que coincide con el "player_id" + auto player = getPlayer(player_id); + player->setStatusPlaying(PlayerStatus::PLAYING); + player->setInvulnerable(false); +} \ No newline at end of file diff --git a/source/game.h b/source/game.h index 76b5eb8..59ca0e3 100644 --- a/source/game.h +++ b/source/game.h @@ -8,6 +8,7 @@ #include "balloon.h" // para Balloon #include "player.h" // para Player #include "utils.h" // para DemoKeys, Color, HiScoreEntry +#include "options.h" // para options class Asset; class Background; class BalloonFormations; @@ -63,27 +64,6 @@ constexpr int TOTAL_SCORE_DATA = 3; class Game { private: - // Estructuras - struct Helper - { - bool need_coffee; // Indica si se necesitan cafes - bool need_coffee_machine; // Indica si se necesita PowerUp - bool need_power_ball; // Indica si se necesita una PowerBall - int counter; // Contador para no dar ayudas consecutivas - int item_disk_odds; // Probabilidad de aparición del objeto - int item_gavina_odds; // Probabilidad de aparición del objeto - int item_pacmar_odds; // Probabilidad de aparición del objeto - int item_clock_odds; // Probabilidad de aparición del objeto - int item_coffee_odds; // Probabilidad de aparición del objeto - int item_coffee_machine_odds; // Probabilidad de aparición del objeto - - // Constructor con valores predeterminados - explicit Helper(bool nc = false, bool ncm = false, bool npb = false, int c = 0, int ido = 0, int igo = 0, int ipo = 0, int ico = 0, int icoffo = 0, int icmo = 0) - : need_coffee(nc), need_coffee_machine(ncm), need_power_ball(npb), counter(c), - item_disk_odds(ido), item_gavina_odds(igo), item_pacmar_odds(ipo), item_clock_odds(ico), - item_coffee_odds(icoffo), item_coffee_machine_odds(icmo) {} - }; - // Constantes // Contadores @@ -102,6 +82,34 @@ private: static constexpr int ITEM_COFFEE_ODDS_ = 5; static constexpr int ITEM_POWER_BALL_ODDS_ = 0; static constexpr int ITEM_COFFEE_MACHINE_ODDS_ = 4; + + // Estructuras + struct Helper + { + bool need_coffee; // Indica si se necesitan cafes + bool need_coffee_machine; // Indica si se necesita PowerUp + bool need_power_ball; // Indica si se necesita una PowerBall + int counter; // Contador para no dar ayudas consecutivas + int item_disk_odds; // Probabilidad de aparición del objeto + int item_gavina_odds; // Probabilidad de aparición del objeto + int item_pacmar_odds; // Probabilidad de aparición del objeto + int item_clock_odds; // Probabilidad de aparición del objeto + int item_coffee_odds; // Probabilidad de aparición del objeto + int item_coffee_machine_odds; // Probabilidad de aparición del objeto + + // Constructor con valores predeterminados + Helper() + : need_coffee(false), + need_coffee_machine(false), + need_power_ball(false), + counter(HELP_COUNTER_), + item_disk_odds(ITEM_POINTS_1_DISK_ODDS_), + item_gavina_odds(ITEM_POINTS_2_GAVINA_ODDS_), + item_pacmar_odds(ITEM_POINTS_3_PACMAR_ODDS_), + item_clock_odds(ITEM_CLOCK_ODDS_), + item_coffee_odds(ITEM_COFFEE_ODDS_), + item_coffee_machine_odds(ITEM_COFFEE_MACHINE_ODDS_) {} + }; // Objetos y punteros SDL_Renderer *renderer_; // El renderizador de la ventana @@ -143,39 +151,42 @@ private: std::unique_ptr fade_; // Objeto para renderizar fades // Variables - Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa - bool hi_score_achieved_; // Indica si se ha superado la puntuación máxima - HiScoreEntry hi_score_; // Máxima puntuación y nombre de quien la ostenta - int current_stage_; // Indica la fase actual - int stage_bitmap_counter_; // Contador para el tiempo visible del texto de Stage - float stage_bitmap_path_[STAGE_COUNTER_]; // Vector con los puntos Y por donde se desplaza el texto - float get_ready_bitmap_path_[STAGE_COUNTER_]; // Vector con los puntos X por donde se desplaza el texto - int game_over_counter_; // Contador para el estado de fin de partida - int menace_current_; // Nivel de amenaza actual - int menace_threshold_; // Umbral del nivel de amenaza. Si el nivel de amenaza cae por debajo del umbral, se generan más globos. Si el umbral aumenta, aumenta el número de globos - bool time_stopped_; // Indica si el tiempo está detenido - int time_stopped_counter_; // Temporizador para llevar la cuenta del tiempo detenido - int counter_; // Contador para el juego - int balloons_popped_; // Lleva la cuenta de los globos explotados - int last_ballon_deploy_; // Guarda cual ha sido la última formación desplegada para no repetir; - int balloon_deploy_counter_; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero - float balloon_speed_; // Velocidad a la que se mueven los enemigos - float default_balloon_speed_; // Velocidad base de los enemigos, sin incrementar - Helper helper_; // Variable para gestionar las ayudas - bool power_ball_enabled_; // Indica si hay una powerball ya activa - int power_ball_counter_; // Contador de formaciones enemigas entre la aparicion de una PowerBall y otra - bool coffee_machine_enabled_; // Indica si hay una máquina de café en el terreno de juego - bool game_completed_; // Indica si se ha completado la partida, llegando al final de la ultima pantalla - int game_completed_counter_; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos - GameDifficulty difficulty_; // Dificultad del juego - float difficulty_score_multiplier_; // Multiplicador de puntos en función de la dificultad - int last_stage_reached_; // Contiene el número de la última pantalla que se ha alcanzado - Demo demo_; // Variable con todas las variables relacionadas con el modo demo - int total_power_to_complete_game_; // La suma del poder necesario para completar todas las fases - bool paused_; // Indica si el juego está pausado (no se deberia de poder utilizar en el modo arcade) - int current_power_; // Poder actual almacenado para completar la fase + HiScoreEntry hi_score_ = + HiScoreEntry(options.game.hi_score_table[0].name, + options.game.hi_score_table[0].score); // Máxima puntuación y nombre de quien la ostenta + + int current_stage_; // Indica la fase actual + int last_stage_reached_; // Contiene el número de la última pantalla que se ha alcanzado + Demo demo_; // Variable con todas las variables relacionadas con el modo demo + GameDifficulty difficulty_ = options.game.difficulty; // Dificultad del juego + Helper helper_; // Variable para gestionar las ayudas + Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa + bool coffee_machine_enabled_ = false; // Indica si hay una máquina de café en el terreno de juego + bool game_completed_ = false; // Indica si se ha completado la partida, llegando al final de la ultima pantalla + bool hi_score_achieved_ = false; // Indica si se ha superado la puntuación máxima + bool paused_ = false; // Indica si el juego está pausado (no se deberia de poder utilizar en el modo arcade) + bool power_ball_enabled_ = false; // Indica si hay una powerball ya activa + bool time_stopped_ = false; // Indica si el tiempo está detenido + float balloon_speed_; // Velocidad a la que se mueven los enemigos + float default_balloon_speed_; // Velocidad base de los enemigos, sin incrementar + float difficulty_score_multiplier_; // Multiplicador de puntos en función de la dificultad + float get_ready_bitmap_path_[STAGE_COUNTER_]; // Vector con los puntos X por donde se desplaza el texto + float stage_bitmap_path_[STAGE_COUNTER_]; // Vector con los puntos Y por donde se desplaza el texto + int balloon_deploy_counter_ = 0; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero + int balloons_popped_ = 0; // Lleva la cuenta de los globos explotados + int counter_ = 0; // Contador para el juego + int current_power_ = 0; // Poder actual almacenado para completar la fase + int game_completed_counter_ = 0; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos + int game_over_counter_ = GAME_OVER_COUNTER_; // Contador para el estado de fin de partida + int last_balloon_deploy_ = 0; // Guarda cual ha sido la última formación desplegada para no repetir; + int menace_current_ = 0; // Nivel de amenaza actual + int menace_threshold_ = 0; // Umbral del nivel de amenaza. Si el nivel de amenaza cae por debajo del umbral, se generan más globos. Si el umbral aumenta, aumenta el número de globos + int power_ball_counter_ = 0; // Contador de formaciones enemigas entre la aparicion de una PowerBall y otra + int stage_bitmap_counter_ = STAGE_COUNTER_; // Contador para el tiempo visible del texto de Stage + int time_stopped_counter_ = 0; // Temporizador para llevar la cuenta del tiempo detenido + int total_power_to_complete_game_; // La suma del poder necesario para completar todas las fases #ifdef DEBUG - bool auto_pop_balloons_; // Si es true, incrementa automaticamente los globos explotados + bool auto_pop_balloons_ = false; // Si es true, incrementa automaticamente los globos explotados #endif // Actualiza el juego @@ -187,7 +198,7 @@ private: // Comprueba los eventos que hay en cola void checkEvents(); - // Asigna los recursos a variables privadas del objeto + // Asigna texturas y animaciones void setResources(); // Crea una formación de enemigos @@ -425,6 +436,21 @@ private: // Procesa las entradas para la introducción del nombre del jugador. void handleNameInput(const std::shared_ptr &player); + // Inicializa las variables para el modo DEMO + void initDemo(int player_id); + + // Calcula el poder total necesario para completar el juego + void setTotalPower(); + + // Inicializa el marcador + void initScoreboard(); + + // Inicializa las opciones relacionadas con la dificultad + void initDifficultyVars(); + + // Inicializa los jugadores + void initPlayers(int player_id); + public: // Constructor Game(int playerID, int current_stage, bool demo); diff --git a/source/utils.h b/source/utils.h index db7d156..d08deaa 100644 --- a/source/utils.h +++ b/source/utils.h @@ -110,8 +110,7 @@ struct Demo std::vector data; // Vector con diferentes sets de datos con los movimientos para la demo // Constructor por defecto - Demo() - : enabled(false), recording(false), counter(0), keys(), data() {} + Demo() : enabled(false), recording(false), counter(0), keys(), data() {} // Constructor con parámetros Demo(bool e, bool r, int c, const DemoKeys &k, const std::vector &d)