forked from jaildesigner-jailgames/jaildoctors_dilemma
101 lines
3.8 KiB
C++
101 lines
3.8 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL_rect.h> // Para SDL_Rect, SDL_Point
|
|
#include <SDL2/SDL_stdinc.h> // Para Uint8, Uint32
|
|
#include <string> // Para string, basic_string
|
|
#include "utils.h"
|
|
|
|
// Posiciones de las notificaciones
|
|
enum not_pos_e
|
|
{
|
|
pos_top,
|
|
pos_bottom,
|
|
pos_left,
|
|
pos_middle,
|
|
pos_right
|
|
};
|
|
|
|
// Tipos de control de teclado
|
|
enum ctrl_schem_e
|
|
{
|
|
ctrl_cursor,
|
|
ctrl_opqa,
|
|
ctrl_wasd
|
|
};
|
|
|
|
// Estructura para las opciones de las notificaciones
|
|
struct op_notification_t
|
|
{
|
|
not_pos_e posH; // Ubicación de las notificaciones en pantalla
|
|
not_pos_e posV; // Ubicación de las notificaciones en pantalla
|
|
bool sound; // Indica si las notificaciones suenan
|
|
color_t color; // Color de las notificaciones
|
|
};
|
|
|
|
// Estructura para saber la seccion y subseccion del programa
|
|
struct section_t
|
|
{
|
|
Uint8 name;
|
|
Uint8 subsection;
|
|
};
|
|
|
|
// Estructura para albergar trucos
|
|
struct cheat_t
|
|
{
|
|
bool infiniteLives; // Indica si el jugador dispone de vidas infinitas
|
|
bool invincible; // Indica si el jugador puede morir
|
|
bool jailEnabled; // Indica si la Jail está abierta
|
|
bool altSkin; // Indicxa si se usa una skin diferente para el jugador
|
|
};
|
|
|
|
// Estructura para almacenar estadísticas
|
|
struct op_stats_t
|
|
{
|
|
int rooms; // Cantidad de habitaciones visitadas
|
|
int items; // Cantidad de items obtenidos
|
|
std::string worstNightmare; // Habitación con más muertes acumuladas
|
|
};
|
|
|
|
// Estructura con opciones de la pantalla
|
|
struct op_screen_t
|
|
{
|
|
int windowWidth; // Ancho de la ventana
|
|
int windowHeight; // Alto de la ventana
|
|
};
|
|
|
|
// Estructura con todas las opciones de configuración del programa
|
|
struct options_t
|
|
{
|
|
std::string configVersion; // Versión del programa. Sirve para saber si las opciones son compatibles
|
|
Uint32 videoMode; // Contiene el valor del modo de pantalla completa
|
|
int windowSize; // Contiene el valor por el que se multiplica el tamaño de la ventana
|
|
Uint32 filter; // Filtro usado para el escalado de la imagen
|
|
bool vSync; // Indica si se quiere usar vsync o no
|
|
bool shaders; // Indica si se van a usar shaders o no
|
|
int gameWidth; // Ancho de la resolucion nativa del juego
|
|
int gameHeight; // Alto de la resolucion nativa del juego
|
|
bool integerScale; // Indica si el escalado de la imagen ha de ser entero en el modo a pantalla completa
|
|
bool keepAspect; // Indica si se ha de mantener la relación de aspecto al poner el modo a pantalla completa
|
|
bool borderEnabled; // Indica si ha de mostrar el borde en el modo de ventana
|
|
int borderWidth; // Cantidad de pixels que se añade en el borde de la ventana
|
|
int borderHeight; // Cantidad de pixels que se añade en el borde de la ventana
|
|
palette_e palette; // Paleta de colores a usar en el juego
|
|
bool console; // Indica si ha de mostrar información por la consola de texto
|
|
cheat_t cheat; // Contiene trucos y ventajas para el juego
|
|
op_stats_t stats; // Datos con las estadisticas de juego
|
|
op_notification_t notifications; // Opciones relativas a las notificaciones;
|
|
op_screen_t screen; // Opciones relativas a la clase screen
|
|
ctrl_schem_e keys; // Teclas usadas para jugar
|
|
section_t section; // Sección actual del programa
|
|
};
|
|
|
|
extern options_t options;
|
|
|
|
// Crea e inicializa las opciones del programa
|
|
void initOptions();
|
|
|
|
// Carga las opciones desde un fichero
|
|
bool loadOptionsFromFile(const std::string &file_path);
|
|
|
|
// Guarda las opciones a un fichero
|
|
bool saveOptionsToFile(const std::string &file_path); |