#pragma once #include // Para SDL_Rect #include // Para string #include // Para vector #include "utils.h" // Para Color, Zone // param.game struct ParamGame { int width; // Ancho de la resolucion nativa del juego int height; // Alto de la resolucion nativa del juego int item_size; // Tamaño de los items del juego Zone play_area; // Rectangulo con la posición de la zona de juego Zone game_area; // Rectangulo con las dimensiones del juego int enter_name_seconds; // Duración en segundos para introducir el nombre al finalizar la partida }; // param.fade struct ParamFade { int num_squares_width; // Cantidad total de cuadraditos en horizontal para el FadeType::RANDOM_SQUARE int 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 pintaran cada vez int post_duration; // Duración final del fade int venetian_size; // Altura de los rectangulos para FadeType::VENETIAN }; // param.title struct ParamTitle { int press_start_position; // Posición del texto para empezar a jugar int title_duration; // Tiempo de inactividad del titulo int arcade_edition_position; // Posición del bitmap int title_c_c_position; // Posición del bitmap }; // param.background struct ParamBackground { Color attenuate_color; int attenuate_alpha; }; struct ParamBalloon { float grav; // Aceleración en el eje Y. Modifica la velocidad float vel; // Velocidad inicial que tienen al rebotar contra el suelo // Constructor explicit ParamBalloon(float grav_val = 0.0f, float vel_val = 0.0f) : grav(grav_val), vel(vel_val) {} }; // Estructura para las opciones de las notificaciones struct ParamNotification { NotifyPosition pos_h; // Ubicación de las notificaciones en pantalla NotifyPosition pos_v; // Ubicación de las notificaciones en pantalla bool sound; // Indica si las notificaciones suenan Color color; // Color de las notificaciones }; // Estructura para almacenar todos los parámetros del juego struct Param { ParamGame game; ParamFade fade; SDL_Rect scoreboard; ParamTitle title; ParamBackground background; std::vector balloon; ParamNotification notification; Param() : game(), fade(), scoreboard(), title(), background(), notification() { balloon.reserve(4); } }; extern Param param; extern Param param; // Establece valores para los parametros a partir de un fichero de texto void loadParamsFromFile(const std::string &file_path);