Modificado el parser para leer archivos de texto
This commit is contained in:
@@ -1,7 +1,16 @@
|
|||||||
|
#GAME
|
||||||
gameWidth 320
|
gameWidth 320
|
||||||
gameHeight 240
|
gameHeight 240
|
||||||
|
|
||||||
|
#FADE
|
||||||
numSquaresWidth 160
|
numSquaresWidth 160
|
||||||
numSquaresHeight 120
|
numSquaresHeight 120
|
||||||
fadeRandomSquaresDelay 1
|
fadeRandomSquaresDelay 1
|
||||||
fadeRandomSquaresMult 500
|
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
|
// Opciones de video
|
||||||
file << "## VIDEO\n";
|
file << "## VIDEO\n";
|
||||||
|
file << "## video mode can be: 0, SDL_WINDOW_FULLSCREEN, SDL_WINDOW_FULLSCREEN_DESKTOP\n";
|
||||||
if (options->video.mode == 0)
|
if (options->video.mode == 0)
|
||||||
{
|
{
|
||||||
file << "mode=0\n";
|
file << "mode=0\n";
|
||||||
@@ -600,6 +601,7 @@ bool Director::saveConfigFile()
|
|||||||
|
|
||||||
file << "window.size=" + std::to_string(options->video.window.size) + "\n";
|
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)
|
if (options->video.filter == FILTER_NEAREST)
|
||||||
{
|
{
|
||||||
file << "filter=FILTER_NEAREST\n";
|
file << "filter=FILTER_NEAREST\n";
|
||||||
|
|||||||
@@ -227,7 +227,7 @@ void Game::init()
|
|||||||
gameOverMenu->setSelectorColor(difficultyColor, 255);
|
gameOverMenu->setSelectorColor(difficultyColor, 255);
|
||||||
|
|
||||||
// Variables para el marcador
|
// 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
|
// Resto de variables
|
||||||
gameCompleted = false;
|
gameCompleted = false;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ void initParam(param_t *param)
|
|||||||
param->gameHeight = 240;
|
param->gameHeight = 240;
|
||||||
|
|
||||||
// Tamaño para el marcador
|
// Tamaño para el marcador
|
||||||
param->scoreboard = {0, 240 - 32, 320, 32};
|
param->scoreboard = {0, 208, 320, 32};
|
||||||
|
|
||||||
// Valores para el FADE_RANDOM_SQUARE
|
// Valores para el FADE_RANDOM_SQUARE
|
||||||
param->numSquaresWidth = 80;
|
param->numSquaresWidth = 80;
|
||||||
@@ -24,41 +24,90 @@ void initParam(param_t *param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Establece valores para los parametros a partir de un fichero de texto
|
// 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
|
// Pone valores por defecto a las variables
|
||||||
initParam(param);
|
initParam(param);
|
||||||
|
|
||||||
// Indicador de éxito en la carga
|
|
||||||
bool success = true;
|
|
||||||
|
|
||||||
// Variables para manejar el fichero
|
// Variables para manejar el fichero
|
||||||
std::string line;
|
std::string line;
|
||||||
std::ifstream file(filePath);
|
std::ifstream file(filePath);
|
||||||
|
std::string param1;
|
||||||
|
std::string param2;
|
||||||
|
|
||||||
// Si el fichero se puede abrir
|
// Si el fichero se puede abrir
|
||||||
if (file.good())
|
if (file.good())
|
||||||
{
|
{
|
||||||
|
// Procesa cada linea del fichero
|
||||||
while (std::getline(file, line))
|
while (std::getline(file, line))
|
||||||
{
|
{
|
||||||
// Comprueba que la linea no sea un comentario
|
// Reinicia variables
|
||||||
if (line.substr(0, 1) != "#")
|
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 '='
|
pos++;
|
||||||
int pos = line.find(" ");
|
}
|
||||||
// Procesa las dos subcadenas
|
|
||||||
if (!setOptions(param, line.substr(0, pos), line.substr(pos + 1, line.length())))
|
// 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
|
// Cierra el fichero
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
return success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Asigna variables a partir de dos cadenas
|
// 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);
|
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
|
else
|
||||||
{
|
{
|
||||||
success = false;
|
success = false;
|
||||||
|
|||||||
@@ -8,6 +8,6 @@
|
|||||||
#define LOAD_PARAM
|
#define LOAD_PARAM
|
||||||
|
|
||||||
// Establece valores para los parametros a partir de un fichero de texto
|
// 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
|
#endif
|
||||||
Reference in New Issue
Block a user