forked from jaildesigner-jailgames/jaildoctors_dilemma
141 lines
3.8 KiB
C++
141 lines
3.8 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#include "texture.h"
|
|
#include <string>
|
|
|
|
#ifndef UTILS_H
|
|
#define UTILS_H
|
|
|
|
// 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 una linea diagonal
|
|
struct d_line_t
|
|
{
|
|
int x1, y1, x2, y2;
|
|
};
|
|
|
|
// Estructura para definir una linea
|
|
struct line_t
|
|
{
|
|
int x1, y1, x2, y2;
|
|
};
|
|
|
|
// Estructura para definir un color
|
|
struct color_t
|
|
{
|
|
Uint8 r;
|
|
Uint8 g;
|
|
Uint8 b;
|
|
};
|
|
|
|
// Tipos de paleta
|
|
enum palette_e
|
|
{
|
|
p_zxspectrum,
|
|
p_zxarne
|
|
};
|
|
|
|
// 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 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
|
|
bool borderEnabled; // Indica si ha de mostrar el borde en el modo de ventana
|
|
float borderSize; // Porcentaje de borde que se añade a lo 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
|
|
int rooms; // Cantidad de habitaciones visitadas
|
|
int items; // Cantidad de items obtenidos
|
|
};
|
|
|
|
// 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);
|
|
|
|
// Detector de colisiones entre dos lineas
|
|
SDL_Point checkCollision(line_t &l1, line_t &l2);
|
|
|
|
// Detector de colisiones entre dos lineas
|
|
SDL_Point checkCollision(d_line_t &l1, v_line_t &l2);
|
|
|
|
// Detector de colisiones entre un punto y una linea diagonal
|
|
bool checkCollision(SDL_Point &p, d_line_t &l);
|
|
|
|
// Normaliza una linea diagonal
|
|
void normalizeLine(d_line_t &l);
|
|
|
|
// Devuelve un color_t a partir de un string
|
|
color_t stringToColor(palette_e pal, std::string str);
|
|
|
|
// Convierte una cadena en un valor booleano
|
|
bool stringToBool(std::string str);
|
|
|
|
// Convierte un valor booleano en una cadena
|
|
std::string boolToString(bool value);
|
|
|
|
// Compara dos colores
|
|
bool colorAreEqual(color_t color1, color_t color2);
|
|
|
|
#endif |