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:
106
source/load_param.cpp
Normal file
106
source/load_param.cpp
Normal file
@@ -0,0 +1,106 @@
|
||||
#include "load_param.h"
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
// Asigna variables a partir de dos cadenas
|
||||
bool setOptions(param_t *param, std::string var, std::string value);
|
||||
|
||||
// Establece valores por defecto a las variables
|
||||
void initParam(param_t *param)
|
||||
{
|
||||
// Tamaño original del juego
|
||||
param->gameWidth = 320;
|
||||
param->gameHeight = 240;
|
||||
|
||||
// Tamaño para el marcador
|
||||
param->scoreboard = {0, 240 - 32, 320, 32};
|
||||
|
||||
// Valores para el FADE_RANDOM_SQUARE
|
||||
param->numSquaresWidth = 80;
|
||||
param->numSquaresHeight = 60;
|
||||
param->fadeRandomSquaresDelay = 1;
|
||||
param->fadeRandomSquaresMult = 8;
|
||||
}
|
||||
|
||||
// Establece valores para los parametros a partir de un fichero de texto
|
||||
bool 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);
|
||||
|
||||
// Si el fichero se puede abrir
|
||||
if (file.good())
|
||||
{
|
||||
while (std::getline(file, line))
|
||||
{
|
||||
// Comprueba que la linea no sea un comentario
|
||||
if (line.substr(0, 1) != "#")
|
||||
{
|
||||
// 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())))
|
||||
{
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Cierra el fichero
|
||||
file.close();
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
// Asigna variables a partir de dos cadenas
|
||||
bool setOptions(param_t *param, std::string var, std::string value)
|
||||
{
|
||||
// Indicador de éxito en la asignación
|
||||
bool success = true;
|
||||
|
||||
// Opciones de video
|
||||
if (var == "gameWidth")
|
||||
{
|
||||
param->gameWidth = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "gameHeight")
|
||||
{
|
||||
param->gameHeight = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "numSquaresWidth")
|
||||
{
|
||||
param->numSquaresWidth = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "numSquaresHeight")
|
||||
{
|
||||
param->numSquaresHeight = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "fadeRandomSquaresDelay")
|
||||
{
|
||||
param->fadeRandomSquaresDelay = std::stoi(value);
|
||||
}
|
||||
|
||||
else if (var == "fadeRandomSquaresMult")
|
||||
{
|
||||
param->fadeRandomSquaresMult = std::stoi(value);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
success = false;
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
Reference in New Issue
Block a user