Modificado el parser para leer archivos de texto
This commit is contained in:
@@ -1,7 +1,16 @@
|
||||
#GAME
|
||||
gameWidth 320
|
||||
gameHeight 240
|
||||
|
||||
#FADE
|
||||
numSquaresWidth 160
|
||||
numSquaresHeight 120
|
||||
fadeRandomSquaresDelay 1
|
||||
fadeRandomSquaresMult 500
|
||||
fadePostDuration 50
|
||||
fadePostDuration 50
|
||||
|
||||
#SCOREBOARD
|
||||
scoreboard.x 10
|
||||
scoreboard.y 208
|
||||
scoreboard.w 300
|
||||
scoreboard.h 32
|
||||
@@ -583,6 +583,7 @@ bool Director::saveConfigFile()
|
||||
|
||||
// Opciones de video
|
||||
file << "## VIDEO\n";
|
||||
file << "## video mode can be: 0, SDL_WINDOW_FULLSCREEN, SDL_WINDOW_FULLSCREEN_DESKTOP\n";
|
||||
if (options->video.mode == 0)
|
||||
{
|
||||
file << "mode=0\n";
|
||||
@@ -600,6 +601,7 @@ bool Director::saveConfigFile()
|
||||
|
||||
file << "window.size=" + std::to_string(options->video.window.size) + "\n";
|
||||
|
||||
file << "## filter can be: FILTER_NEAREST, FILTER_LINEAL\n";
|
||||
if (options->video.filter == FILTER_NEAREST)
|
||||
{
|
||||
file << "filter=FILTER_NEAREST\n";
|
||||
|
||||
@@ -227,7 +227,7 @@ void Game::init()
|
||||
gameOverMenu->setSelectorColor(difficultyColor, 255);
|
||||
|
||||
// Variables para el marcador
|
||||
scoreboard->setPos({SCOREBOARD_X, SCOREBOARD_Y, SCOREBOARD_WIDTH, SCOREBOARD_HEIGHT});
|
||||
scoreboard->setPos({param->scoreboard.x, param->scoreboard.y, param->scoreboard.w, param->scoreboard.h});
|
||||
|
||||
// Resto de variables
|
||||
gameCompleted = false;
|
||||
|
||||
@@ -13,7 +13,7 @@ void initParam(param_t *param)
|
||||
param->gameHeight = 240;
|
||||
|
||||
// Tamaño para el marcador
|
||||
param->scoreboard = {0, 240 - 32, 320, 32};
|
||||
param->scoreboard = {0, 208, 320, 32};
|
||||
|
||||
// Valores para el FADE_RANDOM_SQUARE
|
||||
param->numSquaresWidth = 80;
|
||||
@@ -24,41 +24,90 @@ void initParam(param_t *param)
|
||||
}
|
||||
|
||||
// Establece valores para los parametros a partir de un fichero de texto
|
||||
bool loadParam(param_t *param, std::string filePath)
|
||||
void loadParam(param_t *param, std::string filePath)
|
||||
{
|
||||
// Pone valores por defecto a las variables
|
||||
initParam(param);
|
||||
|
||||
// Indicador de éxito en la carga
|
||||
bool success = true;
|
||||
|
||||
// Variables para manejar el fichero
|
||||
std::string line;
|
||||
std::ifstream file(filePath);
|
||||
std::string param1;
|
||||
std::string param2;
|
||||
|
||||
// Si el fichero se puede abrir
|
||||
if (file.good())
|
||||
{
|
||||
// Procesa cada linea del fichero
|
||||
while (std::getline(file, line))
|
||||
{
|
||||
// Comprueba que la linea no sea un comentario
|
||||
if (line.substr(0, 1) != "#")
|
||||
// Reinicia variables
|
||||
param1 = "";
|
||||
param2 = "";
|
||||
|
||||
// Elimina los comentarios
|
||||
line = line.substr(0, line.find("#"));
|
||||
|
||||
// Ignora los espacios en blanco
|
||||
int pos = 0;
|
||||
while (pos < (int)line.size() && (int)line[pos] <= 32)
|
||||
{
|
||||
// Encuentra la posición del caracter '='
|
||||
int pos = line.find(" ");
|
||||
// Procesa las dos subcadenas
|
||||
if (!setOptions(param, line.substr(0, pos), line.substr(pos + 1, line.length())))
|
||||
pos++;
|
||||
}
|
||||
|
||||
// Si no ha llegado al final de la linea, es que hay algo escrito (no es una linea vacía)
|
||||
if (pos < (int)line.size())
|
||||
{
|
||||
// Elimina el espacio en blanco
|
||||
line = line.substr(pos, std::string::npos);
|
||||
|
||||
// Se queda con todo lo que no sean espacios en blanco
|
||||
pos = 1;
|
||||
while (pos <= (int)line.size() && (int)line[pos] > 32)
|
||||
{
|
||||
success = false;
|
||||
pos++;
|
||||
}
|
||||
|
||||
// Si llega al final de la linea, falta la segunda palabra
|
||||
if (pos < (int)line.size())
|
||||
{
|
||||
// Se queda con la primera palabra
|
||||
param1 = line.substr(0, pos);
|
||||
|
||||
// Y recorta la linea
|
||||
line = line.substr(pos, std::string::npos);
|
||||
|
||||
// Ignora los espacios en blanco
|
||||
pos = 0;
|
||||
while (pos <= (int)line.size() && (int)line[pos] <= 32)
|
||||
{
|
||||
pos++;
|
||||
}
|
||||
|
||||
// Si llega al final de la linea, falta la segunda palabra
|
||||
if (pos < (int)line.size())
|
||||
{
|
||||
// Elimina el espacio en blanco
|
||||
line = line.substr(pos, std::string::npos);
|
||||
|
||||
// Ignora los espacios en blanco
|
||||
pos = 1;
|
||||
while (pos <= (int)line.size() && (int)line[pos] > 32)
|
||||
{
|
||||
pos++;
|
||||
}
|
||||
// Se queda con la segunda palabra
|
||||
param2 = line.substr(0, pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setOptions(param, param1, param2);
|
||||
}
|
||||
|
||||
// Cierra el fichero
|
||||
file.close();
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
// Asigna variables a partir de dos cadenas
|
||||
@@ -103,6 +152,26 @@ bool setOptions(param_t *param, std::string var, std::string value)
|
||||
param->fadePostDuration = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "scoreboard.x")
|
||||
{
|
||||
param->scoreboard.x = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "scoreboard.y")
|
||||
{
|
||||
param->scoreboard.y = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "scoreboard.w")
|
||||
{
|
||||
param->scoreboard.w = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "scoreboard.h")
|
||||
{
|
||||
param->scoreboard.h = std::stoi(value);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
success = false;
|
||||
|
||||
@@ -8,6 +8,6 @@
|
||||
#define LOAD_PARAM
|
||||
|
||||
// Establece valores para los parametros a partir de un fichero de texto
|
||||
bool loadParam(param_t *param, std::string filePath);
|
||||
void loadParam(param_t *param, std::string filePath);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user