From 1f4d7ce0426c3421b04c796f446699a960535fb4 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 3 Aug 2024 17:55:18 +0200 Subject: [PATCH] =?UTF-8?q?afegida=20la=20opci=C3=B3=20de=20controlar=20el?= =?UTF-8?q?=20autofire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/common/utils.h | 4 +++- source/director.cpp | 2 ++ source/game.cpp | 7 ++++--- source/load_param.cpp | 6 ++++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/source/common/utils.h b/source/common/utils.h index d0678fe..92b8304 100644 --- a/source/common/utils.h +++ b/source/common/utils.h @@ -148,6 +148,7 @@ struct op_game_t { Uint8 difficulty; // Dificultad del juego Uint8 language; // Idioma usado en el juego + bool autofire; // Indica si se va a usar el disparo automático para el disparo normal std::vector hiScoreTable; // Tabla con las mejores puntuaciones }; @@ -194,7 +195,8 @@ struct param_t // GAME int gameWidth; // Ancho de la resolucion nativa del juego int gameHeight; // Alto de la resolucion nativa del juego - int itemSize; // Tamañoi de los items del juego + int itemSize; // Tamaño de los items del juego + int autofire; // Indica si se va a usar el disparo automático para el disparo normal // FADE int numSquaresWidth; // Cantidad total de cuadraditos en horizontal para el FADE_RANDOM_SQUARE diff --git a/source/director.cpp b/source/director.cpp index ad01640..c22c50f 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -424,6 +424,8 @@ void Director::loadParams() loadParam(param, asset->get("param.txt")); + // Modifica las opciones desde el fichero de parametros + options->game.autofire = param->autofire; options->video.window.width = options->video.window.size * param->gameWidth; options->video.window.height = options->video.window.size * param->gameHeight; options->video.gameWidth = param->gameWidth; diff --git a/source/game.cpp b/source/game.cpp index c01f9d1..2c69b7f 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -2235,6 +2235,7 @@ void Game::checkInput() int i = 0; for (auto player : players) { + const bool autofire = player->isPowerUp() || options->game.autofire; if (player->isAlive() && player->isEnabled()) { // Input a la izquierda @@ -2265,7 +2266,7 @@ void Game::checkInput() } } // Comprueba el input de disparar al centro - if (input->checkInput(input_fire_center, ALLOW_REPEAT, options->controller[i].deviceType, options->controller[i].index)) + if (input->checkInput(input_fire_center, autofire, options->controller[i].deviceType, options->controller[i].index)) { if (player->canFire()) { @@ -2282,7 +2283,7 @@ void Game::checkInput() } // Comprueba el input de disparar a la izquierda - else if (input->checkInput(input_fire_left, ALLOW_REPEAT, options->controller[i].deviceType, options->controller[i].index)) + else if (input->checkInput(input_fire_left, autofire, options->controller[i].deviceType, options->controller[i].index)) { if (player->canFire()) { @@ -2299,7 +2300,7 @@ void Game::checkInput() } // Comprueba el input de disparar a la derecha - else if (input->checkInput(input_fire_right, ALLOW_REPEAT, options->controller[i].deviceType, options->controller[i].index)) + else if (input->checkInput(input_fire_right, autofire, options->controller[i].deviceType, options->controller[i].index)) { if (player->canFire()) { diff --git a/source/load_param.cpp b/source/load_param.cpp index 5fdeef6..42a2a7d 100644 --- a/source/load_param.cpp +++ b/source/load_param.cpp @@ -12,6 +12,7 @@ void initParam(param_t *param) param->gameWidth = 320; param->gameHeight = 240; param->itemSize = 20; + param->autofire = true; // SCOREBOARD param->scoreboard = {0, 200, 320, 40}; @@ -154,6 +155,11 @@ bool setOptions(param_t *param, std::string var, std::string value) param->itemSize = std::stoi(value); } + else if (var == "autofire") + { + param->autofire = stringToBool(value); + } + // FADE else if (var == "numSquaresWidth") {