From 46cdc2189e69c3cde70084b22aa70f8c7aad90bc Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Tue, 10 Sep 2024 10:19:56 +0200 Subject: [PATCH] Se puede especificar con argumentos el fichero de parametros a utilizar --- data/config/param_320x240.txt | 44 ++++++++++++++++++++ data/config/{param.txt => param_320x256.txt} | 0 source/director.cpp | 19 +++++++-- source/director.h | 3 +- source/load_param.cpp | 8 ++++ 5 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 data/config/param_320x240.txt rename data/config/{param.txt => param_320x256.txt} (100%) diff --git a/data/config/param_320x240.txt b/data/config/param_320x240.txt new file mode 100644 index 0000000..73ee3c3 --- /dev/null +++ b/data/config/param_320x240.txt @@ -0,0 +1,44 @@ +## GAME +game.itemSize 20 +game.width 320 +game.height 240 +game.playArea.rect.x 0 +game.playArea.rect.y 0 +game.playArea.rect.w 320 +game.playArea.rect.h 200 + +## FADE +fade.numSquaresWidth 160 +fade.numSquaresHeight 120 +fade.randomSquaresDelay 1 +fade.randomSquaresMult 500 +fade.postDuration 80 +fade.venetianSize 16 + +## SCOREBOARD +scoreboard.x 0 +scoreboard.y 200 +scoreboard.w 320 +scoreboard.h 40 + +## TITLE +title.pressStartPosition 170 +title.titleDuration 800 +title.arcadeEditionPosition 123 +title.titleCCPosition 80 + +## BACKGROUND +background.attenuateColor.r 255 +background.attenuateColor.g 255 +background.attenuateColor.b 255 +background.attenuateAlpha 0 + +## BALLOONS +balloon1.vel 2.75f +balloon1.grav 0.09f +balloon2.vel 3.70f +balloon2.grav 0.10f +balloon3.vel 4.70f +balloon3.grav 0.10f +balloon4.vel 5.45f +balloon4.grav 0.10f \ No newline at end of file diff --git a/data/config/param.txt b/data/config/param_320x256.txt similarity index 100% rename from data/config/param.txt rename to data/config/param_320x256.txt diff --git a/source/director.cpp b/source/director.cpp index d05c860..0b3db4d 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -47,7 +47,8 @@ Director::Director(int argc, char *argv[]) } // Carga los parametros para configurar el juego - loadParams(); + const std::string paramFilePath = paramFileArgument == "--320x240" ? asset->get("param_320x240.txt") : asset->get("param_320x256.txt"); + loadParams(paramFilePath); // Carga el fichero de configuración loadConfigFile(); @@ -213,6 +214,7 @@ bool Director::initSDL() SDL_DisplayMode DM; SDL_GetCurrentDisplayMode(0, &DM); std::cout << "\nDisplay info: " + std::to_string(DM.w) + "x" + std::to_string(DM.h) + " @ " + std::to_string(DM.refresh_rate) + "Hz" << std::endl; + std::cout << "Window info : " + std::to_string(param->game.width) + "x" + std::to_string(param->game.height) + " x" + std::to_string(options->video.window.size) << std::endl; } // Establece el filtro de la textura @@ -297,7 +299,8 @@ bool Director::setFileList() // Ficheros de configuración asset->add(systemFolder + "/config.txt", t_data, false, true); asset->add(systemFolder + "/score.bin", t_data, false, true); - asset->add(prefix + "/data/config/param.txt", t_data); + asset->add(prefix + "/data/config/param_320x240.txt", t_data); + asset->add(prefix + "/data/config/param_320x256.txt", t_data); asset->add(prefix + "/data/config/demo1.bin", t_data); asset->add(prefix + "/data/config/demo2.bin", t_data); asset->add(prefix + "/data/config/gamecontrollerdb.txt", t_data); @@ -429,11 +432,11 @@ bool Director::setFileList() } // Carga los parametros para configurar el juego -void Director::loadParams() +void Director::loadParams(std::string filepath) { param = new param_t; - loadParamsFromFile(param, asset->get("param.txt")); + loadParamsFromFile(param, filepath); // Modifica las opciones desde el fichero de parametros options->video.window.width = options->video.window.size * param->game.width; @@ -519,6 +522,9 @@ void Director::checkProgramArguments(int argc, char *argv[]) // Establece la ruta del programa executablePath = argv[0]; + // Valores por defecto + paramFileArgument = ""; + // Comprueba el resto de parametros for (int i = 1; i < argc; ++i) { @@ -526,6 +532,11 @@ void Director::checkProgramArguments(int argc, char *argv[]) { options->console = true; } + + if (strcmp(argv[i], "--320x240") == 0) + { + paramFileArgument = argv[i]; + } } } diff --git a/source/director.h b/source/director.h index 2f7c6b5..f77ac9c 100644 --- a/source/director.h +++ b/source/director.h @@ -45,6 +45,7 @@ private: param_t *param; // Variable con todos los parametros del programa std::string executablePath; // Path del ejecutable std::string systemFolder; // Carpeta del sistema donde guardar datos + std::string paramFileArgument; // Argumento para gestionar el fichero con los parametros del programa std::vector sounds; // Vector con los sonidos std::vector musics; // Vector con las musicas @@ -58,7 +59,7 @@ private: void initInput(); // Carga los parametros para configurar el juego - void loadParams(); + void loadParams(std::string filepath); // Inicializa las opciones del programa void initOptions(); diff --git a/source/load_param.cpp b/source/load_param.cpp index 13666ed..e0ced71 100644 --- a/source/load_param.cpp +++ b/source/load_param.cpp @@ -66,6 +66,10 @@ void loadParamsFromFile(param_t *param, std::string filePath) // Si el fichero se puede abrir if (file.good()) { +#ifdef VERBOSE + const std::string filename = filePath.substr(filePath.find_last_of("\\/") + 1); + std::cout << "Reading file: " << filename << std::endl; +#endif // Procesa cada linea del fichero while (std::getline(file, line)) { @@ -136,6 +140,10 @@ void loadParamsFromFile(param_t *param, std::string filePath) // Cierra el fichero file.close(); } +#ifdef VERBOSE + else + std::cout << "Failed to load file: " << filePath << std::endl; +#endif precalculateZones(param); }