137 lines
5.9 KiB
C++
137 lines
5.9 KiB
C++
#pragma once
|
|
|
|
#include <SDL3/SDL.h> // Para Uint32, SDL_FRect
|
|
|
|
#include <array> // Para array
|
|
#include <string> // Para basic_string, string
|
|
|
|
#include "utils.h" // Para Color, NotifyPosition (ptr only), Zone
|
|
|
|
// --- Parámetros del juego ---
|
|
struct ParamGame {
|
|
float width; // Ancho de la resolución nativa del juego
|
|
float height; // Alto de la resolución nativa del juego
|
|
float item_size; // Tamaño de los ítems del juego
|
|
Zone play_area; // Rectángulo con la posición de la zona de juego
|
|
Zone game_area; // Rectángulo con las dimensiones del juego
|
|
int name_entry_idle_time; // Segundos para introducir el nombre al finalizar la partida si no se pulsa nada
|
|
int name_entry_total_time; // Segundos totales para introducir el nombre al finalizar la partida
|
|
Uint32 speed; // Velocidad a la que transcurre el juego
|
|
bool hit_stop; // Indica si debe haber un paro cuando el jugador es golpeado por un globo
|
|
Uint32 hit_stop_ms; // Cantidad de milisegundos que dura el hit_stop
|
|
};
|
|
|
|
// --- Parámetros del fade ---
|
|
struct ParamFade {
|
|
Color color; // Color del fade
|
|
float num_squares_width; // Cantidad total de cuadraditos en horizontal para el FadeType::RANDOM_SQUARE
|
|
float num_squares_height; // Cantidad total de cuadraditos en vertical para el FadeType::RANDOM_SQUARE
|
|
int random_squares_delay; // Duración entre cada pintado de cuadrados
|
|
int random_squares_mult; // Cantidad de cuadrados que se pintarán cada vez
|
|
int post_duration; // Duración final del fade
|
|
float venetian_size; // Altura de los rectángulos para FadeType::VENETIAN
|
|
};
|
|
|
|
// --- Parámetros de la pantalla de título ---
|
|
struct ParamTitle {
|
|
int press_start_position; // Posición del texto para empezar a jugar
|
|
int title_duration; // Tiempo de inactividad del título
|
|
int arcade_edition_position; // Posición del bitmap "Arcade Edition"
|
|
int title_c_c_position; // Posición del bitmap "Coffee Crisis"
|
|
Color bg_color; // Color para los tiles de fondo
|
|
};
|
|
|
|
// --- Parámetros del fondo ---
|
|
struct ParamBackground {
|
|
Color attenuate_color; // Color para atenuar el fondo
|
|
};
|
|
|
|
// --- Parámetros de los globos ---
|
|
struct ParamBalloon {
|
|
struct Settings {
|
|
float grav; // Aceleración en el eje Y. Modifica la velocidad
|
|
float vel; // Velocidad inicial al rebotar contra el suelo
|
|
|
|
// Constructor
|
|
explicit Settings(float grav_val = 0.0F, float vel_val = 0.0F)
|
|
: grav(grav_val), vel(vel_val) {}
|
|
};
|
|
|
|
std::array<Settings, 4> settings;
|
|
std::array<std::string, 4> color;
|
|
bool bouncing_sound; // Indica si los globos hacer sonido al rebotar
|
|
};
|
|
|
|
// --- Parámetros de las notificaciones ---
|
|
struct ParamNotification {
|
|
NotifyPosition pos_h; // Ubicación horizontal de las notificaciones en pantalla
|
|
NotifyPosition pos_v; // Ubicación vertical de las notificaciones en pantalla
|
|
bool sound; // Indica si las notificaciones suenan
|
|
Color color; // Color de las notificaciones
|
|
};
|
|
|
|
// --- Parámetros del marcador ---
|
|
struct ParamScoreboard {
|
|
SDL_FRect rect; // Posición y tamaño del marcador
|
|
bool separator_autocolor; // El separado establece su color de forma automatica
|
|
Color separator_color; // Color del separador si se pone de forma manual
|
|
Color easy_color; // Color del marcador segun la dificultad
|
|
Color normal_color; // Color del marcador segun la dificultad
|
|
Color hard_color; // Color del marcador segun la dificultad
|
|
bool text_autocolor; // El texto establece su color de forma automatica
|
|
Color text_color1; // Color del texto
|
|
Color text_color2; // Color del texto
|
|
int skip_countdown_value; // Valor a partir del cual se puede saltar la cuenta atras
|
|
};
|
|
|
|
// --- Parámetros del menú de servicio ---
|
|
struct ParamServiceMenu {
|
|
Color title_color;
|
|
Color text_color;
|
|
Color selected_color;
|
|
Color bg_color;
|
|
bool drop_shadow;
|
|
};
|
|
|
|
// --- Parámetros de la intro ---
|
|
struct ParamIntro {
|
|
Color bg_color;
|
|
Color card_color;
|
|
Color shadow_color;
|
|
int text_distance_from_bottom;
|
|
};
|
|
|
|
// --- Parámetros para Debug ---
|
|
struct ParamDebug {
|
|
Color color;
|
|
};
|
|
|
|
// --- Parámetros para Resource ---
|
|
struct ParamResource {
|
|
Color color;
|
|
};
|
|
|
|
// --- Estructura principal para almacenar todos los parámetros del juego ---
|
|
struct Param {
|
|
ParamGame game; // Parámetros del juego
|
|
ParamFade fade; // Parámetros del fade
|
|
ParamScoreboard scoreboard; // Rectángulo del marcador
|
|
ParamTitle title; // Parámetros de la pantalla de título
|
|
ParamBackground background; // Parámetros del fondo
|
|
ParamBalloon balloon; // Parámetros de los globos
|
|
ParamNotification notification; // Parámetros de las notificaciones
|
|
ParamServiceMenu service_menu; // Parámetros del menú de servicio
|
|
ParamIntro intro; // Parámetros de la intro
|
|
ParamDebug debug; // Parámetros para Debug
|
|
ParamResource resource; // Parámetros para Resource
|
|
|
|
// Constructor
|
|
Param()
|
|
: game(), fade(), scoreboard(), title(), background(), balloon(), notification(), service_menu(), intro(), debug(), resource() {}
|
|
};
|
|
|
|
// --- Variable global con los parámetros del juego ---
|
|
extern Param param;
|
|
|
|
// --- Funciones globales ---
|
|
void loadParamsFromFile(const std::string &file_path); // Establece valores para los parámetros a partir de un fichero de texto
|