forked from jaildesigner-jailgames/jaildoctors_dilemma
132 lines
3.2 KiB
C++
132 lines
3.2 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL_rect.h> // for SDL_Rect, SDL_Point
|
|
#include <SDL2/SDL_stdinc.h> // for Uint8
|
|
#include <string> // for string
|
|
#include <vector>
|
|
|
|
// Tipos de paleta
|
|
enum class Palette : int
|
|
{
|
|
ZXSPECTRUM,
|
|
ZXARNE
|
|
};
|
|
|
|
// Estructura para definir un circulo
|
|
struct Circle
|
|
{
|
|
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
|
|
{
|
|
Uint8 r;
|
|
Uint8 g;
|
|
Uint8 b;
|
|
|
|
// Constructor por defecto
|
|
Color() : r(0), g(0), b(0) {}
|
|
|
|
// Constructor
|
|
Color(Uint8 red, Uint8 green, Uint8 blue)
|
|
: r(red), g(green), b(blue) {}
|
|
};
|
|
|
|
// 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 &a, Circle &b);
|
|
|
|
// Detector de colisiones entre un circulo y un rectangulo
|
|
bool checkCollision(Circle &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 a partir de un string
|
|
Color stringToColor(Palette pal, const std::string &str);
|
|
|
|
// Convierte una cadena a un entero de forma segura
|
|
int safeStoi(const std::string &value, int defaultValue = 0);
|
|
|
|
// Convierte una cadena a un booleano
|
|
bool stringToBool(const std::string &str);
|
|
|
|
// Convierte un booleano a una cadena
|
|
std::string boolToString(bool value);
|
|
|
|
// Compara dos colores
|
|
bool colorAreEqual(Color color1, Color color2);
|
|
|
|
// Convierte una cadena a minusculas
|
|
std::string toLower(std::string str);
|
|
|
|
// Convierte una cadena a mayúsculas
|
|
std::string toUpper(std::string str);
|
|
|
|
// Obtiene el nombre de un fichero a partir de una ruta
|
|
std::string getFileName(const std::string &path);
|
|
|
|
// Obtiene la ruta eliminando el nombre del fichero
|
|
std::string getPath(const std::string &full_path);
|
|
|
|
// Imprime por pantalla una linea de texto de tamaño fijo rellena con puntos
|
|
void printWithDots(const std::string &text1, const std::string &text2, const std::string &text3);
|
|
|
|
// Comprueba si una vector contiene una cadena
|
|
bool stringInVector(const std::vector<std::string> &vec, const std::string &str);
|
|
|
|
// Hace sonar la música
|
|
void playMusic(const std::string &music_path); |