forked from jaildesigner-jailgames/jaildoctors_dilemma
Arreglada la cárrega de opcions i recursos
Modificats els parametros dels fitxers .ani a snake_case
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
#include "options.h"
|
||||
#include <SDL2/SDL_video.h> // for SDL_WINDOW_FULLSCREEN, SDL_WINDOW_FULLSC...
|
||||
#include <fstream> // for basic_ostream, operator<<, basic_ofstream
|
||||
#include <functional> // for function
|
||||
#include <iostream> // for cout, cerr
|
||||
#include <unordered_map> // for unordered_map, operator==, _Node_const_i...
|
||||
#include <utility> // for pair
|
||||
#include <SDL2/SDL_video.h> // for SDL_WINDOW_FULLSCREEN, SDL_WINDOW_FULLSC...
|
||||
#include <fstream> // for basic_ostream, operator<<, basic_ofstream
|
||||
#include <functional> // for function
|
||||
#include <iostream> // for cout, cerr
|
||||
#include <unordered_map> // for unordered_map, operator==, _Node_const_i...
|
||||
#include <utility> // for pair
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
|
||||
// Variables
|
||||
Options options;
|
||||
@@ -42,25 +45,35 @@ bool loadOptionsFromFile(const std::string &file_path)
|
||||
// Si el fichero se puede abrir
|
||||
if (file.good())
|
||||
{
|
||||
// Procesa el fichero linea a linea
|
||||
// Procesa el fichero línea a línea
|
||||
if (options.console)
|
||||
{
|
||||
std::cout << "Reading file config.txt\n";
|
||||
}
|
||||
while (std::getline(file, line))
|
||||
{
|
||||
// Comprueba que la linea no sea un comentario
|
||||
if (line.substr(0, 1) != "#")
|
||||
// Elimina espacios en blanco iniciales y finales
|
||||
line = std::string(std::find_if(line.begin(), line.end(), [](int ch) { return !std::isspace(ch); }), line.end());
|
||||
line.erase(std::find_if(line.rbegin(), line.rend(), [](int ch) { return !std::isspace(ch); }).base(), line.end());
|
||||
|
||||
// Ignora líneas vacías o comentarios
|
||||
if (line.empty() || line[0] == '#')
|
||||
{
|
||||
// Encuentra la posición del caracter '='
|
||||
int pos = line.find("=");
|
||||
// Procesa las dos subcadenas
|
||||
if (!setOptions(line.substr(0, pos), line.substr(pos + 1, line.length())))
|
||||
continue;
|
||||
}
|
||||
|
||||
// Usa un stringstream para dividir la línea en dos partes
|
||||
std::istringstream iss(line);
|
||||
std::string key, value;
|
||||
|
||||
if (iss >> key >> value)
|
||||
{
|
||||
if (!setOptions(key, value))
|
||||
{
|
||||
if (options.console)
|
||||
{
|
||||
std::cout << "Warning: file config.txt\n";
|
||||
std::cout << "unknown parameter " << line.substr(0, pos).c_str() << std::endl;
|
||||
std::cout << "unknown parameter " << key << std::endl;
|
||||
}
|
||||
success = false;
|
||||
}
|
||||
@@ -74,8 +87,6 @@ bool loadOptionsFromFile(const std::string &file_path)
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
|
||||
// El fichero no existe
|
||||
else
|
||||
{
|
||||
// Crea el fichero con los valores por defecto
|
||||
@@ -87,19 +98,16 @@ bool loadOptionsFromFile(const std::string &file_path)
|
||||
{
|
||||
initOptions();
|
||||
saveOptionsToFile(file_path);
|
||||
}
|
||||
|
||||
// Normaliza los valores
|
||||
if (options.video.mode != 0 &&
|
||||
options.video.mode != SDL_WINDOW_FULLSCREEN &&
|
||||
options.video.mode != SDL_WINDOW_FULLSCREEN_DESKTOP)
|
||||
{
|
||||
options.video.mode = 0;
|
||||
if (options.console)
|
||||
{
|
||||
std::cout << "Wrong config file: initializing options.\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
// Guarda las opciones en un fichero
|
||||
bool saveOptionsToFile(const std::string &file_path)
|
||||
{
|
||||
@@ -122,25 +130,38 @@ bool saveOptionsToFile(const std::string &file_path)
|
||||
}
|
||||
|
||||
// Escribe en el fichero
|
||||
file << "version=" << options.version << "\n";
|
||||
file << "# Versión de la configuración\n";
|
||||
file << "version " << options.version << "\n";
|
||||
|
||||
file << "\n## CONTROL\n";
|
||||
file << "keys=" << static_cast<int>(options.keys) << "\n";
|
||||
file << "# Esquema de control: 0 = Cursores, 1 = OPQ, 2 = WAD\n";
|
||||
file << "keys " << static_cast<int>(options.keys) << "\n";
|
||||
|
||||
file << "\n## WINDOW\n";
|
||||
file << "window.zoom=" << options.window.zoom << "\n";
|
||||
file << "# Zoom de la ventana: 1 = Normal, 2 = Doble, 3 = Triple, ...\n";
|
||||
file << "window.zoom " << options.window.zoom << "\n";
|
||||
|
||||
file << "\n## VIDEO\n";
|
||||
file << "video.mode=" << options.video.mode << "\n";
|
||||
file << "video.filter=" << static_cast<int>(options.video.filter) << "\n";
|
||||
file << "video.shaders=" << boolToString(options.video.shaders) << "\n";
|
||||
file << "video.vertical_sync=" << boolToString(options.video.vertical_sync) << "\n";
|
||||
file << "video.integer_scale=" << boolToString(options.video.integer_scale) << "\n";
|
||||
file << "video.keep_aspect=" << boolToString(options.video.keep_aspect) << "\n";
|
||||
file << "video.border.enabled=" << boolToString(options.video.border.enabled) << "\n";
|
||||
file << "video.border.width=" << options.video.border.width << "\n";
|
||||
file << "video.border.height=" << options.video.border.height << "\n";
|
||||
file << "video.palette=" << static_cast<int>(options.video.palette) << "\n";
|
||||
file << "# Modo de video: 0 = Ventana, 1 = Pantalla completa, 2 = Pantalla completa (escritorio)\n";
|
||||
file << "video.mode " << options.video.mode << "\n";
|
||||
file << "# Filtro de pantalla: 0 = Nearest, 1 = Linear\n";
|
||||
file << "video.filter " << static_cast<int>(options.video.filter) << "\n";
|
||||
file << "# Shaders: 1 = Activado, 0 = Desactivado\n";
|
||||
file << "video.shaders " << boolToString(options.video.shaders) << "\n";
|
||||
file << "# Sincronización vertical: 1 = Activado, 0 = Desactivado\n";
|
||||
file << "video.vertical_sync " << boolToString(options.video.vertical_sync) << "\n";
|
||||
file << "# Escalado entero: 1 = Activado, 0 = Desactivado\n";
|
||||
file << "video.integer_scale " << boolToString(options.video.integer_scale) << "\n";
|
||||
file << "# Mantener aspecto: 1 = Activado, 0 = Desactivado\n";
|
||||
file << "video.keep_aspect " << boolToString(options.video.keep_aspect) << "\n";
|
||||
file << "# Borde: 1 = Activado, 0 = Desactivado\n";
|
||||
file << "video.border.enabled " << boolToString(options.video.border.enabled) << "\n";
|
||||
file << "# Ancho del borde\n";
|
||||
file << "video.border.width " << options.video.border.width << "\n";
|
||||
file << "# Alto del borde\n";
|
||||
file << "video.border.height " << options.video.border.height << "\n";
|
||||
file << "# Paleta: 0 = ZX Spectrum, 1 = ZX Arne\n";
|
||||
file << "video.palette " << static_cast<int>(options.video.palette) << "\n";
|
||||
|
||||
// Cierra el fichero
|
||||
file.close();
|
||||
@@ -156,10 +177,12 @@ bool setOptions(const std::string &var, const std::string &value)
|
||||
{ options.version = v; }},
|
||||
{"keys", [](std::string v)
|
||||
{ options.keys = static_cast<ControlScheme>(safeStoi(v, static_cast<int>(ControlScheme::CURSOR))); }},
|
||||
{"video.mode", [](std::string v)
|
||||
{ options.video.mode = safeStoi(v, 0); }},
|
||||
{"window.zoom", [](std::string v)
|
||||
{ options.window.zoom = safeStoi(v, 1); }},
|
||||
{"video.mode", [](std::string v)
|
||||
{ options.video.mode = safeStoi(v, 0); }},
|
||||
{"video.filter", [](std::string v)
|
||||
{ options.video.filter = static_cast<ScreenFilter>(safeStoi(v, static_cast<int>(DEFAULT_VIDEO_FILTER))); }},
|
||||
{"video.shaders", [](std::string v)
|
||||
{ options.video.shaders = stringToBool(v); }},
|
||||
{"video.vertical_sync", [](std::string v)
|
||||
|
||||
Reference in New Issue
Block a user