299 lines
5.8 KiB
C++
299 lines
5.8 KiB
C++
#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)
|
|
{
|
|
// GAME
|
|
param->gameWidth = 320;
|
|
param->gameHeight = 240;
|
|
param->itemSize = 20;
|
|
|
|
// SCOREBOARD
|
|
param->scoreboard = {0, 200, 320, 40};
|
|
|
|
// FADE
|
|
param->numSquaresWidth = 160;
|
|
param->numSquaresHeight = 120;
|
|
param->fadeRandomSquaresDelay = 1;
|
|
param->fadeRandomSquaresMult = 500;
|
|
param->fadePostDuration = 80;
|
|
param->venetianSize = 16;
|
|
|
|
// TITLE
|
|
param->pressStart = 160;
|
|
param->titleCounter = 800;
|
|
param->arcadeEdition = 123;
|
|
param->titleCC = 11;
|
|
|
|
// BACKGROUND
|
|
param->backgroundAttenuateColor = {255, 255, 255};
|
|
param->backgroundAttenuateAlpha = 32;
|
|
|
|
// BALLOONS
|
|
param->balloon1.vel = 2.60f;
|
|
param->balloon1.grav = 0.09f;
|
|
param->balloon2.vel = 3.50f;
|
|
param->balloon2.grav = 0.10f;
|
|
param->balloon3.vel = 4.50f;
|
|
param->balloon3.grav = 0.10f;
|
|
param->balloon4.vel = 4.95f;
|
|
param->balloon4.grav = 0.10f;
|
|
}
|
|
|
|
// Establece valores para los parametros a partir de un fichero de texto
|
|
void loadParam(param_t *param, std::string filePath)
|
|
{
|
|
// Pone valores por defecto a las variables
|
|
initParam(param);
|
|
|
|
// 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))
|
|
{
|
|
// 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)
|
|
{
|
|
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)
|
|
{
|
|
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();
|
|
}
|
|
}
|
|
|
|
// 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;
|
|
|
|
// GAME
|
|
if (var == "gameWidth")
|
|
{
|
|
param->gameWidth = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "gameHeight")
|
|
{
|
|
param->gameHeight = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "itemSize")
|
|
{
|
|
param->itemSize = std::stoi(value);
|
|
}
|
|
|
|
// FADE
|
|
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 if (var == "fadePostDuration")
|
|
{
|
|
param->fadePostDuration = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "venetianSize")
|
|
{
|
|
param->venetianSize = std::stoi(value);
|
|
}
|
|
|
|
// SCOREBOARD
|
|
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);
|
|
}
|
|
|
|
// TITLE
|
|
else if (var == "pressStart")
|
|
{
|
|
param->pressStart = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "titleCounter")
|
|
{
|
|
param->titleCounter = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "arcadeEdition")
|
|
{
|
|
param->arcadeEdition = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "titleCC")
|
|
{
|
|
param->titleCC = std::stoi(value);
|
|
}
|
|
|
|
// BACKGROUND
|
|
else if (var == "backgroundAttenuateColor.r")
|
|
{
|
|
param->backgroundAttenuateColor.r = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "backgroundAttenuateColor.g")
|
|
{
|
|
param->backgroundAttenuateColor.g = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "backgroundAttenuateColor.b")
|
|
{
|
|
param->backgroundAttenuateColor.b = std::stoi(value);
|
|
}
|
|
|
|
else if (var == "backgroundAttenuateColor.a")
|
|
{
|
|
param->backgroundAttenuateAlpha = std::stoi(value);
|
|
}
|
|
|
|
// BALLOON
|
|
else if (var == "balloon1.vel")
|
|
{
|
|
param->balloon1.vel = std::stof(value);
|
|
}
|
|
|
|
else if (var == "balloon1.grav")
|
|
{
|
|
param->balloon1.grav = std::stof(value);
|
|
}
|
|
|
|
else if (var == "balloon2.vel")
|
|
{
|
|
param->balloon2.vel = std::stof(value);
|
|
}
|
|
|
|
else if (var == "balloon2.grav")
|
|
{
|
|
param->balloon2.grav = std::stof(value);
|
|
}
|
|
|
|
else if (var == "balloon3.vel")
|
|
{
|
|
param->balloon3.vel = std::stof(value);
|
|
}
|
|
|
|
else if (var == "balloon3.grav")
|
|
{
|
|
param->balloon3.grav = std::stof(value);
|
|
}
|
|
|
|
else if (var == "balloon4.vel")
|
|
{
|
|
param->balloon4.vel = std::stof(value);
|
|
}
|
|
|
|
else if (var == "balloon4.grav")
|
|
{
|
|
param->balloon4.grav = std::stof(value);
|
|
}
|
|
|
|
// RESTO
|
|
else
|
|
{
|
|
success = false;
|
|
}
|
|
|
|
return success;
|
|
} |