#pragma once #include #include "ltexture.h" #include #ifndef UTILS_H #define UTILS_H #define FILTER_NEAREST 0 #define FILTER_LINEAL 1 // Secciones del programa #define SECTION_PROG_LOGO 0 #define SECTION_PROG_INTRO 1 #define SECTION_PROG_TITLE 2 #define SECTION_PROG_GAME 3 #define SECTION_PROG_QUIT 4 // Subsecciones #define SUBSECTION_GAME_PLAY 0 #define SUBSECTION_GAME_PAUSE 1 #define SUBSECTION_GAME_GAMEOVER 2 #define SUBSECTION_TITLE_1 3 #define SUBSECTION_TITLE_2 4 #define SUBSECTION_TITLE_3 5 #define SUBSECTION_TITLE_INSTRUCTIONS 6 // Estructura para definir un circulo struct circle_t { int x; int y; int r; }; // Estructura para definir una linea horizontal struct h_line_t { int x1, x2, y; }; // Estructura para definir una linea vertical struct v_line_t { int x, y1, y2; }; // Estructura para definir un color struct color_t { Uint8 r; Uint8 g; Uint8 b; }; // Estructura para saber la seccion y subseccion del programa struct section_t { Uint8 name; Uint8 subsection; }; // Estructura con todas las opciones de configuración del programa struct options_t { Uint32 fullScreenMode; // 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 int screenWidth; // Ancho de la pantalla o ventana int screenHeight; // Alto de la pantalla o ventana 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 }; // Calcula el cuadrado de la distancia entre dos puntos double distanceSquared(int x1, int y1, int x2, int y2); // Detector de colisiones entre dos circulos bool checkCollision(circle_t &a, circle_t &b); // Detector de colisiones entre un circulo y un rectangulo bool checkCollision(circle_t &a, SDL_Rect &b); // Detector de colisiones entre un dos rectangulos bool checkCollision(SDL_Rect &a, SDL_Rect &b); // Detector de colisiones entre un punto y un rectangulo bool checkCollision(SDL_Point &p, SDL_Rect &r); // Detector de colisiones entre una linea horizontal y un rectangulo bool checkCollision(h_line_t &l, SDL_Rect &r); // Detector de colisiones entre una linea vertical y un rectangulo bool checkCollision(v_line_t &l, SDL_Rect &r); // Detector de colisiones entre una linea horizontal y un punto bool checkCollision(h_line_t &l, SDL_Point &p); // Devuelve un color_t a partir de un string color_t stringToColor(std::string str); #endif