Los parametros del juego ya se pueden cargar desde un fichero de texto. Falta empezar a sacar parametros hard-coded a ese fichero

This commit is contained in:
2024-06-20 13:09:00 +02:00
parent 1be38191bb
commit 5b8ea728ca
8 changed files with 162 additions and 31 deletions

View File

@@ -14,16 +14,10 @@
// Constructor
Director::Director(int argc, char *argv[])
{
// Carga los parametros para configurar el juego
loadParams();
// Inicializa variables
section = new section_t();
section->name = SECTION_PROG_TITLE;
// Inicializa las opciones del programa
initOptions();
// Comprueba los parametros del programa
checkProgramArguments(argc, argv);
@@ -35,6 +29,9 @@ Director::Director(int argc, char *argv[])
createSystemFolder("jailgames/coffee_crisis_arcade_edition_debug");
#endif
// Inicializa las opciones del programa
initOptions();
// Crea el objeto que controla los ficheros de recursos
asset = new Asset(executablePath);
asset->setVerbose(options->console);
@@ -45,6 +42,9 @@ Director::Director(int argc, char *argv[])
exit(EXIT_FAILURE);
}
// Carga los parametros para configurar el juego
loadParams();
// Carga el fichero de configuración
loadConfigFile();
@@ -178,7 +178,7 @@ bool Director::initSDL()
incW = options->video.border.width * 2;
incH = options->video.border.height * 2;
}
window = SDL_CreateWindow(WINDOW_CAPTION, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, (options->video.gameWidth + incW) * options->video.window.size, (options->video.gameHeight + incH) * options->video.window.size, SDL_WINDOW_SHOWN | SDL_WINDOW_ALLOW_HIGHDPI);
window = SDL_CreateWindow(WINDOW_CAPTION, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, (param->gameWidth + incW) * options->video.window.size, (param->gameHeight + incH) * options->video.window.size, SDL_WINDOW_SHOWN | SDL_WINDOW_ALLOW_HIGHDPI);
if (window == nullptr)
{
if (options->console)
@@ -211,7 +211,7 @@ bool Director::initSDL()
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
// Establece el tamaño del buffer de renderizado
SDL_RenderSetLogicalSize(renderer, options->video.gameWidth, options->video.gameHeight);
SDL_RenderSetLogicalSize(renderer, param->gameWidth, param->gameHeight);
// Establece el modo de mezcla
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
@@ -238,6 +238,7 @@ 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/demo.bin", t_data);
asset->add(prefix + "/data/config/gamecontrollerdb.txt", t_data);
@@ -363,10 +364,12 @@ void Director::loadParams()
{
param = new param_t;
param->gameWidth = 320;
param->gameHeight = 240;
loadParam(param, asset->get("param.txt"));
param->scoreboard = {0, 240-32, 320, 32};
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;
options->video.gameHeight = param->gameHeight;
}
// Inicializa las opciones del programa
@@ -390,12 +393,10 @@ void Director::initOptions()
options->input.push_back(inp);
// Opciones de video
options->video.gameWidth = param->gameWidth;
options->video.gameHeight = param->gameHeight;
options->video.mode = 0;
options->video.window.size = 3;
options->video.window.width = options->video.window.size * options->video.gameWidth;
options->video.window.height = options->video.window.size * options->video.gameHeight;
//options->video.window.width = options->video.window.size * param->gameWidth;
//options->video.window.height = options->video.window.size * param->gameHeight;
options->video.filter = FILTER_NEAREST;
options->video.vSync = true;
options->video.integerScale = true;