Renombradas las variables de opciones

Actualizado el fichero de configuración
This commit is contained in:
2024-06-30 09:35:31 +02:00
parent 50b445ad3f
commit 12711d38f0
4 changed files with 120 additions and 114 deletions

View File

@@ -145,16 +145,22 @@ struct op_audio_t
op_sound_t sound; // Opciones para los efectos de sonido op_sound_t sound; // Opciones para los efectos de sonido
}; };
// Estructura con todas las opciones de configuración del programa // Estructura para las opciones del juego
struct options_t struct op_game_t
{ {
Uint8 difficulty; // Dificultad del juego Uint8 difficulty; // Dificultad del juego
Uint8 playerSelected; // Jugador seleccionado para el modo 1P Uint8 playerSelected; // Jugador seleccionado para el modo 1P
std::vector<input_t> input; // Modo de control (teclado o mando) std::vector<input_t> input; // Modo de control (teclado o mando)
Uint8 language; // Idioma usado en el juego Uint8 language; // Idioma usado en el juego
bool console; // Indica si ha de mostrar información por la consola de texto };
op_video_t video; // Opciones relativas a la clase screen
op_audio_t audio; // Opciones para el audio // Estructura con todas las opciones de configuración del programa
struct options_t
{
bool console; // Indica si ha de mostrar información por la consola de texto
op_game_t game; // Opciones para el propio juego
op_video_t video; // Opciones relativas a la clase screen
op_audio_t audio; // Opciones para el audio
}; };
struct param_t struct param_t

View File

@@ -56,7 +56,7 @@ Director::Director(int argc, char *argv[])
// Crea los objetos // Crea los objetos
lang = new Lang(asset); lang = new Lang(asset);
lang->setLang(options->language); lang->setLang(options->game.language);
input = new Input(asset->get("gamecontrollerdb.txt")); input = new Input(asset->get("gamecontrollerdb.txt"));
initInput(); initInput();
@@ -397,18 +397,18 @@ void Director::initOptions()
options = new options_t; options = new options_t;
// Pone unos valores por defecto para las opciones de control // Pone unos valores por defecto para las opciones de control
options->input.clear(); options->game.input.clear();
input_t inp; input_t inp;
inp.id = 0; inp.id = 0;
inp.name = "KEYBOARD"; inp.name = "KEYBOARD";
inp.deviceType = INPUT_USE_KEYBOARD; inp.deviceType = INPUT_USE_KEYBOARD;
options->input.push_back(inp); options->game.input.push_back(inp);
inp.id = 0; inp.id = 0;
inp.name = "GAME CONTROLLER"; inp.name = "GAME CONTROLLER";
inp.deviceType = INPUT_USE_GAMECONTROLLER; inp.deviceType = INPUT_USE_GAMECONTROLLER;
options->input.push_back(inp); options->game.input.push_back(inp);
// Opciones de video // Opciones de video
options->video.mode = 0; options->video.mode = 0;
@@ -431,9 +431,9 @@ void Director::initOptions()
options->audio.sound.volume = 64; options->audio.sound.volume = 64;
// Opciones varios // Opciones varios
options->playerSelected = 0; options->game.playerSelected = 0;
options->difficulty = DIFFICULTY_NORMAL; options->game.difficulty = DIFFICULTY_NORMAL;
options->language = ba_BA; options->game.language = ba_BA;
options->console = false; options->console = false;
} }
@@ -569,9 +569,9 @@ bool Director::loadConfigFile()
options->video.window.size = 3; options->video.window.size = 3;
} }
if (options->language < 0 || options->language > MAX_LANGUAGES) if (options->game.language < 0 || options->game.language > MAX_LANGUAGES)
{ {
options->language = en_UK; options->game.language = en_UK;
} }
return success; return success;
@@ -602,55 +602,55 @@ bool Director::saveConfigFile()
// Opciones de video // Opciones de video
file << "## VIDEO\n"; file << "## VIDEO\n";
file << "## video mode can be: 0, SDL_WINDOW_FULLSCREEN, SDL_WINDOW_FULLSCREEN_DESKTOP\n"; file << "## video.mode [0, SDL_WINDOW_FULLSCREEN, SDL_WINDOW_FULLSCREEN_DESKTOP]\n";
file << "## video.filter [FILTER_NEAREST, FILTER_LINEAL]\n";
file << "\n";
if (options->video.mode == 0) if (options->video.mode == 0)
{ {
file << "mode=0\n"; file << "video.mode=0\n";
} }
else if (options->video.mode == SDL_WINDOW_FULLSCREEN) else if (options->video.mode == SDL_WINDOW_FULLSCREEN)
{ {
file << "mode=SDL_WINDOW_FULLSCREEN\n"; file << "video.mode=SDL_WINDOW_FULLSCREEN\n";
} }
else if (options->video.mode == SDL_WINDOW_FULLSCREEN_DESKTOP) else if (options->video.mode == SDL_WINDOW_FULLSCREEN_DESKTOP)
{ {
file << "mode=SDL_WINDOW_FULLSCREEN_DESKTOP\n"; file << "video.mode=SDL_WINDOW_FULLSCREEN_DESKTOP\n";
} }
file << "window.size=" + std::to_string(options->video.window.size) + "\n"; file << "video.window.size=" + std::to_string(options->video.window.size) + "\n";
file << "## filter can be: FILTER_NEAREST, FILTER_LINEAL\n"; options->video.filter == FILTER_NEAREST ? file << "video.filter=FILTER_NEAREST\n" : file << "video.filter=FILTER_LINEAL\n";
if (options->video.filter == FILTER_NEAREST)
{
file << "filter=FILTER_NEAREST\n";
}
else
{
file << "filter=FILTER_LINEAL\n";
}
file << "vSync=" + boolToString(options->video.vSync) + "\n";
file << "integerScale=" + boolToString(options->video.integerScale) + "\n";
file << "keepAspect=" + boolToString(options->video.keepAspect) + "\n";
file << "border.enabled=" + boolToString(options->video.border.enabled) + "\n";
file << "border.width=" + std::to_string(options->video.border.width) + "\n";
file << "border.height=" + std::to_string(options->video.border.height) + "\n";
file << "video.shaders=" + boolToString(options->video.shaders) + "\n"; file << "video.shaders=" + boolToString(options->video.shaders) + "\n";
file << "video.vSync=" + boolToString(options->video.vSync) + "\n";
file << "video.integerScale=" + boolToString(options->video.integerScale) + "\n";
file << "video.keepAspect=" + boolToString(options->video.keepAspect) + "\n";
file << "video.border.enabled=" + boolToString(options->video.border.enabled) + "\n";
file << "video.border.width=" + std::to_string(options->video.border.width) + "\n";
file << "video.border.height=" + std::to_string(options->video.border.height) + "\n";
// Opciones de audio // Opciones de audio
file << "\n## AUDIO\n"; file << "\n\n## AUDIO\n";
file << "music.enabled=" + boolToString(options->audio.music.enabled) + "\n"; file << "## volume [0 .. 128]\n";
file << "music.volume=" + std::to_string(options->audio.music.volume) + "\n"; file << "\n";
file << "sound.enabled=" + boolToString(options->audio.sound.enabled) + "\n";
file << "sound.volume=" + std::to_string(options->audio.sound.volume) + "\n"; file << "audio.music.enabled=" + boolToString(options->audio.music.enabled) + "\n";
file << "audio.music.volume=" + std::to_string(options->audio.music.volume) + "\n";
file << "audio.sound.enabled=" + boolToString(options->audio.sound.enabled) + "\n";
file << "audio.sound.volume=" + std::to_string(options->audio.sound.volume) + "\n";
// Opciones del juego // Opciones del juego
file << "\n## GAME\n"; file << "\n\n## GAME\n";
file << "language=" + std::to_string(options->language) + "\n"; file << "\n";
file << "difficulty=" + std::to_string(options->difficulty) + "\n";
file << "input0=" + std::to_string(options->input[0].deviceType) + "\n"; file << "game.language=" + std::to_string(options->game.language) + "\n";
file << "input1=" + std::to_string(options->input[1].deviceType) + "\n"; file << "game.difficulty=" + std::to_string(options->game.difficulty) + "\n";
file << "game.input0=" + std::to_string(options->game.input[0].deviceType) + "\n";
file << "game.input1=" + std::to_string(options->game.input[1].deviceType) + "\n";
// Cierra el fichero // Cierra el fichero
file.close(); file.close();
@@ -760,7 +760,7 @@ bool Director::setOptions(options_t *options, std::string var, std::string value
bool success = true; bool success = true;
// Opciones de video // Opciones de video
if (var == "mode") if (var == "video.mode")
{ {
if (value == "SDL_WINDOW_FULLSCREEN_DESKTOP") if (value == "SDL_WINDOW_FULLSCREEN_DESKTOP")
{ {
@@ -776,7 +776,7 @@ bool Director::setOptions(options_t *options, std::string var, std::string value
} }
} }
else if (var == "window.size") else if (var == "video.window.size")
{ {
options->video.window.size = std::stoi(value); options->video.window.size = std::stoi(value);
if ((options->video.window.size < 1) || (options->video.window.size > 4)) if ((options->video.window.size < 1) || (options->video.window.size > 4))
@@ -785,7 +785,7 @@ bool Director::setOptions(options_t *options, std::string var, std::string value
} }
} }
else if (var == "filter") else if (var == "video.filter")
{ {
if (value == "FILTER_LINEAL") if (value == "FILTER_LINEAL")
{ {
@@ -797,81 +797,81 @@ bool Director::setOptions(options_t *options, std::string var, std::string value
} }
} }
else if (var == "vSync")
{
options->video.vSync = stringToBool(value);
}
else if (var == "integerScale")
{
options->video.integerScale = stringToBool(value);
}
else if (var == "keepAspect")
{
options->video.keepAspect = stringToBool(value);
}
else if (var == "border.enabled")
{
options->video.border.enabled = stringToBool(value);
}
else if (var == "border.width")
{
options->video.border.width = std::stoi(value);
}
else if (var == "border.height")
{
options->video.border.height = std::stoi(value);
}
else if (var == "video.shaders") else if (var == "video.shaders")
{ {
options->video.shaders = stringToBool(value); options->video.shaders = stringToBool(value);
} }
else if (var == "video.vSync")
{
options->video.vSync = stringToBool(value);
}
else if (var == "video.integerScale")
{
options->video.integerScale = stringToBool(value);
}
else if (var == "video.keepAspect")
{
options->video.keepAspect = stringToBool(value);
}
else if (var == "video.border.enabled")
{
options->video.border.enabled = stringToBool(value);
}
else if (var == "video.border.width")
{
options->video.border.width = std::stoi(value);
}
else if (var == "video.border.height")
{
options->video.border.height = std::stoi(value);
}
// Opciones de audio // Opciones de audio
else if (var == "music.enabled") else if (var == "audio.music.enabled")
{ {
options->audio.music.enabled = stringToBool(value); options->audio.music.enabled = stringToBool(value);
} }
else if (var == "music.volume") else if (var == "audio.music.volume")
{ {
options->audio.music.volume = std::stoi(value); options->audio.music.volume = std::stoi(value);
} }
else if (var == "sound.enabled") else if (var == "audio.sound.enabled")
{ {
options->audio.sound.enabled = stringToBool(value); options->audio.sound.enabled = stringToBool(value);
} }
else if (var == "sound.volume") else if (var == "audio.sound.volume")
{ {
options->audio.sound.volume = std::stoi(value); options->audio.sound.volume = std::stoi(value);
} }
// Opciones de juego // Opciones de juego
else if (var == "language") else if (var == "game.language")
{ {
options->language = std::stoi(value); options->game.language = std::stoi(value);
} }
else if (var == "difficulty") else if (var == "game.difficulty")
{ {
options->difficulty = std::stoi(value); options->game.difficulty = std::stoi(value);
} }
else if (var == "input0") else if (var == "game.input0")
{ {
options->input[0].deviceType = std::stoi(value); options->game.input[0].deviceType = std::stoi(value);
} }
else if (var == "input1") else if (var == "game.input1")
{ {
options->input[1].deviceType = std::stoi(value); options->game.input[1].deviceType = std::stoi(value);
} }
// Lineas vacias o que empiezan por comentario // Lineas vacias o que empiezan por comentario

View File

@@ -20,10 +20,10 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
lastStageReached = currentStage; lastStageReached = currentStage;
if (numPlayers == 1) if (numPlayers == 1)
{ // Si solo juega un jugador, permite jugar tanto con teclado como con mando { // Si solo juega un jugador, permite jugar tanto con teclado como con mando
onePlayerControl = options->input[0].deviceType; onePlayerControl = options->game.input[0].deviceType;
options->input[0].deviceType = INPUT_USE_ANY; options->game.input[0].deviceType = INPUT_USE_ANY;
} }
difficulty = options->difficulty; difficulty = options->game.difficulty;
// Crea los objetos // Crea los objetos
fade = new Fade(renderer, param); fade = new Fade(renderer, param);
@@ -62,7 +62,7 @@ Game::~Game()
// Restaura el metodo de control // Restaura el metodo de control
if (numPlayers == 1) if (numPlayers == 1)
{ {
options->input[0].deviceType = onePlayerControl; options->game.input[0].deviceType = onePlayerControl;
} }
// Elimina todos los objetos contenidos en vectores // Elimina todos los objetos contenidos en vectores
@@ -182,7 +182,7 @@ void Game::init()
// Crea los jugadores // Crea los jugadores
if (numPlayers == 1) if (numPlayers == 1)
{ {
Player *player = new Player(PLAY_AREA_CENTER_X - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[options->playerSelected], playerAnimations); Player *player = new Player(PLAY_AREA_CENTER_X - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[options->game.playerSelected], playerAnimations);
players.push_back(player); players.push_back(player);
} }
@@ -2846,7 +2846,7 @@ void Game::checkGameInput()
if (player->isAlive()) if (player->isAlive())
{ {
// Input a la izquierda // Input a la izquierda
if (input->checkInput(input_left, REPEAT_TRUE, options->input[i].deviceType, options->input[i].id)) if (input->checkInput(input_left, REPEAT_TRUE, options->game.input[i].deviceType, options->game.input[i].id))
{ {
player->setInput(input_left); player->setInput(input_left);
demo.keys.left = 1; demo.keys.left = 1;
@@ -2854,7 +2854,7 @@ void Game::checkGameInput()
else else
{ {
// Input a la derecha // Input a la derecha
if (input->checkInput(input_right, REPEAT_TRUE, options->input[i].deviceType, options->input[i].id)) if (input->checkInput(input_right, REPEAT_TRUE, options->game.input[i].deviceType, options->game.input[i].id))
{ {
player->setInput(input_right); player->setInput(input_right);
demo.keys.right = 1; demo.keys.right = 1;
@@ -2867,7 +2867,7 @@ void Game::checkGameInput()
} }
} }
// Comprueba el input de disparar al centro // Comprueba el input de disparar al centro
if (input->checkInput(input_fire_center, REPEAT_TRUE, options->input[i].deviceType, options->input[i].id)) if (input->checkInput(input_fire_center, REPEAT_TRUE, options->game.input[i].deviceType, options->game.input[i].id))
{ {
if (player->canFire()) if (player->canFire())
{ {
@@ -2883,7 +2883,7 @@ void Game::checkGameInput()
} }
// Comprueba el input de disparar a la izquierda // Comprueba el input de disparar a la izquierda
if (input->checkInput(input_fire_left, REPEAT_TRUE, options->input[i].deviceType, options->input[i].id)) if (input->checkInput(input_fire_left, REPEAT_TRUE, options->game.input[i].deviceType, options->game.input[i].id))
{ {
if (player->canFire()) if (player->canFire())
{ {
@@ -2899,7 +2899,7 @@ void Game::checkGameInput()
} }
// Comprueba el input de disparar a la derecha // Comprueba el input de disparar a la derecha
if (input->checkInput(input_fire_right, REPEAT_TRUE, options->input[i].deviceType, options->input[i].id)) if (input->checkInput(input_fire_right, REPEAT_TRUE, options->game.input[i].deviceType, options->game.input[i].id))
{ {
if (player->canFire()) if (player->canFire())
{ {
@@ -2915,7 +2915,7 @@ void Game::checkGameInput()
} }
// Comprueba el input de pausa // Comprueba el input de pausa
if (input->checkInput(input_cancel, REPEAT_FALSE, options->input[i].deviceType, options->input[i].id)) if (input->checkInput(input_cancel, REPEAT_FALSE, options->game.input[i].deviceType, options->game.input[i].id))
{ {
section->subsection = SUBSECTION_GAME_PAUSE; section->subsection = SUBSECTION_GAME_PAUSE;
} }

View File

@@ -79,18 +79,18 @@ void Title::init()
demo = true; demo = true;
// Pone valores por defecto a las opciones de control // Pone valores por defecto a las opciones de control
options->input.clear(); options->game.input.clear();
input_t i; input_t i;
i.id = 0; i.id = 0;
i.name = "KEYBOARD"; i.name = "KEYBOARD";
i.deviceType = INPUT_USE_KEYBOARD; i.deviceType = INPUT_USE_KEYBOARD;
options->input.push_back(i); options->game.input.push_back(i);
i.id = 0; i.id = 0;
i.name = "GAME CONTROLLER"; i.name = "GAME CONTROLLER";
i.deviceType = INPUT_USE_GAMECONTROLLER; i.deviceType = INPUT_USE_GAMECONTROLLER;
options->input.push_back(i); options->game.input.push_back(i);
// Comprueba si hay mandos conectados // Comprueba si hay mandos conectados
checkInputDevices(); checkInputDevices();
@@ -103,9 +103,9 @@ void Title::init()
// Si ha encontrado un mando se lo asigna al segundo jugador // Si ha encontrado un mando se lo asigna al segundo jugador
if (input->gameControllerFound()) if (input->gameControllerFound())
{ {
options->input[1].id = availableInputDevices[deviceIndex[1]].id; options->game.input[1].id = availableInputDevices[deviceIndex[1]].id;
options->input[1].name = availableInputDevices[deviceIndex[1]].name; options->game.input[1].name = availableInputDevices[deviceIndex[1]].name;
options->input[1].deviceType = availableInputDevices[deviceIndex[1]].deviceType; options->game.input[1].deviceType = availableInputDevices[deviceIndex[1]].deviceType;
} }
} }
@@ -314,13 +314,13 @@ bool Title::updatePlayerInputs(int numPlayer)
deviceIndex[0] = 0; deviceIndex[0] = 0;
deviceIndex[1] = 0; deviceIndex[1] = 0;
options->input[0].id = -1; options->game.input[0].id = -1;
options->input[0].name = "KEYBOARD"; options->game.input[0].name = "KEYBOARD";
options->input[0].deviceType = INPUT_USE_KEYBOARD; options->game.input[0].deviceType = INPUT_USE_KEYBOARD;
options->input[1].id = 0; options->game.input[1].id = 0;
options->input[1].name = "GAME CONTROLLER"; options->game.input[1].name = "GAME CONTROLLER";
options->input[1].deviceType = INPUT_USE_GAMECONTROLLER; options->game.input[1].deviceType = INPUT_USE_GAMECONTROLLER;
return true; return true;
} }
@@ -358,8 +358,8 @@ bool Title::updatePlayerInputs(int numPlayer)
} }
// Copia el dispositivo marcado por el indice a la variable de opciones de cada jugador // Copia el dispositivo marcado por el indice a la variable de opciones de cada jugador
options->input[0] = availableInputDevices[deviceIndex[0]]; options->game.input[0] = availableInputDevices[deviceIndex[0]];
options->input[1] = availableInputDevices[deviceIndex[1]]; options->game.input[1] = availableInputDevices[deviceIndex[1]];
return true; return true;
} }