#pragma once #include // Para SDL_FRect #include // Para Uint32 #include // Para std::string #include // Para std::vector #include "utils.h" // Para Color, Zone, NotifyPosition // --- 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 float coffee_machine_w; // Ancho de la máquina de café float coffee_machine_h; // Alto de la máquina de café 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 enter_name_seconds; // Duración en segundos para introducir el nombre al finalizar la partida Uint32 speed; // Velocidad a la que transcurre el juego }; // --- Parámetros del fade --- struct ParamFade { 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" }; // --- Parámetros del fondo --- struct ParamBackground { Color attenuate_color; // Color para atenuar el fondo int attenuate_alpha; // Alpha para la atenuación }; // --- Parámetros de los globos (balloons) --- struct ParamBalloon { float grav; // Aceleración en el eje Y. Modifica la velocidad float vel; // Velocidad inicial al rebotar contra el suelo // Constructor explicit ParamBalloon(float grav_val = 0.0f, float vel_val = 0.0f) : grav(grav_val), vel(vel_val) {} }; // --- 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 }; // --- Estructura principal para almacenar todos los parámetros del juego --- struct Param { ParamGame game; // Parámetros del juego ParamFade fade; // Parámetros del fade SDL_FRect scoreboard; // Rectángulo del marcador ParamTitle title; // Parámetros de la pantalla de título ParamBackground background; // Parámetros del fondo std::vector balloon; // Parámetros de los globos ParamNotification notification; // Parámetros de las notificaciones // Constructor Param() : game(), fade(), scoreboard(), title(), background(), notification() { balloon.reserve(4); } }; // --- 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