Se puede especificar con argumentos el fichero de parametros a utilizar

This commit is contained in:
2024-09-10 10:19:56 +02:00
parent f071b60212
commit 46cdc2189e
5 changed files with 69 additions and 5 deletions

View File

@@ -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

View File

@@ -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];
}
}
}

View File

@@ -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<sound_file_t> sounds; // Vector con los sonidos
std::vector<music_file_t> 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();

View File

@@ -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);
}