forked from jaildesigner-jailgames/jaildoctors_dilemma
Arreglos en la estructura i format del codi
This commit is contained in:
@@ -16,7 +16,8 @@ Scoreboard::Scoreboard(std::shared_ptr<ScoreboardData> data)
|
|||||||
: renderer_(Screen::get()->getRenderer()),
|
: renderer_(Screen::get()->getRenderer()),
|
||||||
resource_(Resource::get()),
|
resource_(Resource::get()),
|
||||||
asset_(Asset::get()),
|
asset_(Asset::get()),
|
||||||
data_(data)
|
data_(data),
|
||||||
|
clock_(ClockData())
|
||||||
{
|
{
|
||||||
const int TEXTURE_WIDTH_ = options.game.width;
|
const int TEXTURE_WIDTH_ = options.game.width;
|
||||||
constexpr int TEXTURE_HEIGHT_ = 6 * BLOCK;
|
constexpr int TEXTURE_HEIGHT_ = 6 * BLOCK;
|
||||||
@@ -48,10 +49,10 @@ Scoreboard::Scoreboard(std::shared_ptr<ScoreboardData> data)
|
|||||||
items_color_ = stringToColor(options.video.palette, "white");
|
items_color_ = stringToColor(options.video.palette, "white");
|
||||||
|
|
||||||
// Inicializa el vector de colores
|
// Inicializa el vector de colores
|
||||||
const std::vector<std::string> vColors = {"blue", "magenta", "green", "cyan", "yellow", "white", "bright_blue", "bright_magenta", "bright_green", "bright_cyan", "bright_yellow", "bright_white"};
|
const std::vector<std::string> COLORS = {"blue", "magenta", "green", "cyan", "yellow", "white", "bright_blue", "bright_magenta", "bright_green", "bright_cyan", "bright_yellow", "bright_white"};
|
||||||
for (auto v : vColors)
|
for (const auto &color : COLORS)
|
||||||
{
|
{
|
||||||
color_.push_back(stringToColor(options.video.palette, v));
|
color_.push_back(stringToColor(options.video.palette, color));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,14 @@ private:
|
|||||||
int minutes;
|
int minutes;
|
||||||
int seconds;
|
int seconds;
|
||||||
std::string separator;
|
std::string separator;
|
||||||
|
|
||||||
|
// Constructor por defecto
|
||||||
|
ClockData()
|
||||||
|
: hours(0), minutes(0), seconds(0), separator(":") {}
|
||||||
|
|
||||||
|
// Constructor parametrizado
|
||||||
|
ClockData(int h, int m, int s, const std::string &sep)
|
||||||
|
: hours(h), minutes(m), seconds(s), separator(sep) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Objetos y punteros
|
// Objetos y punteros
|
||||||
|
|||||||
@@ -416,12 +416,3 @@ int Screen::getMaxZoom()
|
|||||||
|
|
||||||
return max_zoom;
|
return max_zoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Renderiza un frame negro
|
|
||||||
void Screen::renderBlackFrame()
|
|
||||||
{
|
|
||||||
SDL_SetRenderTarget(renderer_, nullptr);
|
|
||||||
SDL_SetRenderDrawColor(renderer_, 0x00, 0x00, 0x00, 0xFF);
|
|
||||||
SDL_RenderClear(renderer_);
|
|
||||||
SDL_RenderPresent(renderer_);
|
|
||||||
}
|
|
||||||
@@ -58,9 +58,6 @@ private:
|
|||||||
// Ajusta el tamaño lógico del renderizador
|
// Ajusta el tamaño lógico del renderizador
|
||||||
void adjustRenderLogicalSize();
|
void adjustRenderLogicalSize();
|
||||||
|
|
||||||
// Renderiza un frame negro
|
|
||||||
void renderBlackFrame();
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Screen(SDL_Window *window, SDL_Renderer *renderer);
|
Screen(SDL_Window *window, SDL_Renderer *renderer);
|
||||||
|
|
||||||
|
|||||||
@@ -4,14 +4,9 @@
|
|||||||
#include "options.h" // for Options, OptionsStats, options
|
#include "options.h" // for Options, OptionsStats, options
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Stats::Stats(std::string file, std::string buffer)
|
Stats::Stats(const std::string &file, const std::string &buffer)
|
||||||
{
|
: bufferPath(buffer),
|
||||||
bufferPath = buffer;
|
filePath(file) {}
|
||||||
filePath = file;
|
|
||||||
bufferList.clear();
|
|
||||||
list.clear();
|
|
||||||
dictionary.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
Stats::~Stats()
|
Stats::~Stats()
|
||||||
@@ -43,7 +38,7 @@ void Stats::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Añade una muerte a las estadisticas
|
// Añade una muerte a las estadisticas
|
||||||
void Stats::addDeath(std::string name)
|
void Stats::addDeath(const std::string &name)
|
||||||
{
|
{
|
||||||
// Primero busca si ya hay una entrada con ese nombre
|
// Primero busca si ya hay una entrada con ese nombre
|
||||||
const int index = findByName(name, bufferList);
|
const int index = findByName(name, bufferList);
|
||||||
@@ -64,7 +59,7 @@ void Stats::addDeath(std::string name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Añade una visita a las estadisticas
|
// Añade una visita a las estadisticas
|
||||||
void Stats::addVisit(std::string name)
|
void Stats::addVisit(const std::string &name)
|
||||||
{
|
{
|
||||||
// Primero busca si ya hay una entrada con ese nombre
|
// Primero busca si ya hay una entrada con ese nombre
|
||||||
const int index = findByName(name, bufferList);
|
const int index = findByName(name, bufferList);
|
||||||
@@ -85,11 +80,11 @@ void Stats::addVisit(std::string name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Busca una entrada en la lista por nombre
|
// Busca una entrada en la lista por nombre
|
||||||
int Stats::findByName(std::string name, std::vector<stats_t> &list)
|
int Stats::findByName(const std::string &name, const std::vector<stats_t> &list)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
for (auto l : list)
|
for (const auto &l : list)
|
||||||
{
|
{
|
||||||
if (l.name == name)
|
if (l.name == name)
|
||||||
{
|
{
|
||||||
@@ -102,7 +97,7 @@ int Stats::findByName(std::string name, std::vector<stats_t> &list)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Carga las estadisticas desde un fichero
|
// Carga las estadisticas desde un fichero
|
||||||
bool Stats::loadFromFile(std::string filePath, std::vector<stats_t> &list)
|
bool Stats::loadFromFile(const std::string &file_path, std::vector<stats_t> &list)
|
||||||
{
|
{
|
||||||
list.clear();
|
list.clear();
|
||||||
|
|
||||||
@@ -110,12 +105,12 @@ bool Stats::loadFromFile(std::string filePath, std::vector<stats_t> &list)
|
|||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
||||||
// Variables para manejar el fichero
|
// Variables para manejar el fichero
|
||||||
std::string line;
|
std::ifstream file(file_path);
|
||||||
std::ifstream file(filePath);
|
|
||||||
|
|
||||||
// Si el fichero se puede abrir
|
// Si el fichero se puede abrir
|
||||||
if (file.good())
|
if (file.good())
|
||||||
{
|
{
|
||||||
|
std::string line;
|
||||||
// Procesa el fichero linea a linea
|
// Procesa el fichero linea a linea
|
||||||
while (std::getline(file, line))
|
while (std::getline(file, line))
|
||||||
{
|
{
|
||||||
@@ -150,21 +145,21 @@ bool Stats::loadFromFile(std::string filePath, std::vector<stats_t> &list)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Crea el fichero con los valores por defecto
|
// Crea el fichero con los valores por defecto
|
||||||
saveToFile(filePath, list);
|
saveToFile(file_path, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Guarda las estadisticas en un fichero
|
// Guarda las estadisticas en un fichero
|
||||||
void Stats::saveToFile(std::string filePath, std::vector<stats_t> &list)
|
void Stats::saveToFile(const std::string &file_path, const std::vector<stats_t> &list)
|
||||||
{
|
{
|
||||||
// Crea y abre el fichero de texto
|
// Crea y abre el fichero de texto
|
||||||
std::ofstream file(filePath);
|
std::ofstream file(file_path);
|
||||||
|
|
||||||
// Escribe en el fichero
|
// Escribe en el fichero
|
||||||
file << "# ROOM NAME;VISITS;DEATHS" << std::endl;
|
file << "# ROOM NAME;VISITS;DEATHS" << std::endl;
|
||||||
for (auto item : list)
|
for (const auto &item : list)
|
||||||
{
|
{
|
||||||
file << item.name << ";" << item.visited << ";" << item.died << std::endl;
|
file << item.name << ";" << item.visited << ";" << item.died << std::endl;
|
||||||
}
|
}
|
||||||
@@ -177,7 +172,7 @@ void Stats::saveToFile(std::string filePath, std::vector<stats_t> &list)
|
|||||||
void Stats::checkWorstNightmare()
|
void Stats::checkWorstNightmare()
|
||||||
{
|
{
|
||||||
int deaths = 0;
|
int deaths = 0;
|
||||||
for (auto item : list)
|
for (const auto &item : list)
|
||||||
{
|
{
|
||||||
if (item.died > deaths)
|
if (item.died > deaths)
|
||||||
{
|
{
|
||||||
@@ -188,42 +183,16 @@ void Stats::checkWorstNightmare()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Añade una entrada al diccionario
|
// Añade una entrada al diccionario
|
||||||
void Stats::addDictionary(std::string number, std::string name)
|
void Stats::addDictionary(const std::string &number, const std::string &name)
|
||||||
{
|
{
|
||||||
dictionary.push_back({number, name});
|
dictionary.push_back({number, name});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Obtiene el nombre de una habitación a partir del número
|
|
||||||
std::string Stats::numberToName(std::string number)
|
|
||||||
{
|
|
||||||
for (auto l : dictionary)
|
|
||||||
{
|
|
||||||
if (l.number == number)
|
|
||||||
{
|
|
||||||
return l.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Obtiene el número de una habitación a partir del nombre
|
|
||||||
std::string Stats::nameToNumber(std::string name)
|
|
||||||
{
|
|
||||||
for (auto l : dictionary)
|
|
||||||
{
|
|
||||||
if (l.name == name)
|
|
||||||
{
|
|
||||||
return l.number;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vuelca los datos del buffer en la lista de estadisticas
|
// Vuelca los datos del buffer en la lista de estadisticas
|
||||||
void Stats::updateListFromBuffer()
|
void Stats::updateListFromBuffer()
|
||||||
{
|
{
|
||||||
// Actualiza list desde bufferList
|
// Actualiza list desde bufferList
|
||||||
for (auto buffer : bufferList)
|
for (const auto &buffer : bufferList)
|
||||||
{
|
{
|
||||||
int index = findByName(buffer.name, list);
|
int index = findByName(buffer.name, list);
|
||||||
|
|
||||||
|
|||||||
@@ -27,29 +27,23 @@ private:
|
|||||||
std::string filePath; // Fichero con las estadísticas completas
|
std::string filePath; // Fichero con las estadísticas completas
|
||||||
|
|
||||||
// Busca una entrada en la lista por nombre
|
// Busca una entrada en la lista por nombre
|
||||||
int findByName(std::string name, std::vector<stats_t> &list);
|
int findByName(const std::string &name, const std::vector<stats_t> &list);
|
||||||
|
|
||||||
// Carga las estadisticas desde un fichero
|
// Carga las estadisticas desde un fichero
|
||||||
bool loadFromFile(std::string filePath, std::vector<stats_t> &list);
|
bool loadFromFile(const std::string &filePath, std::vector<stats_t> &list);
|
||||||
|
|
||||||
// Guarda las estadisticas en un fichero
|
// Guarda las estadisticas en un fichero
|
||||||
void saveToFile(std::string filePath, std::vector<stats_t> &list);
|
void saveToFile(const std::string &filePath, const std::vector<stats_t> &list);
|
||||||
|
|
||||||
// Calcula cual es la habitación con más muertes
|
// Calcula cual es la habitación con más muertes
|
||||||
void checkWorstNightmare();
|
void checkWorstNightmare();
|
||||||
|
|
||||||
// Obtiene el nombre de una habitación a partir del número
|
|
||||||
std::string numberToName(std::string number);
|
|
||||||
|
|
||||||
// Obtiene el número de una habitación a partir del nombre
|
|
||||||
std::string nameToNumber(std::string name);
|
|
||||||
|
|
||||||
// Vuelca los datos del buffer en la lista de estadisticas
|
// Vuelca los datos del buffer en la lista de estadisticas
|
||||||
void updateListFromBuffer();
|
void updateListFromBuffer();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Stats(std::string file, std::string buffer);
|
Stats(const std::string &file, const std::string &buffer);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Stats();
|
~Stats();
|
||||||
@@ -59,11 +53,11 @@ public:
|
|||||||
void init();
|
void init();
|
||||||
|
|
||||||
// Añade una muerte a las estadisticas
|
// Añade una muerte a las estadisticas
|
||||||
void addDeath(std::string name);
|
void addDeath(const std::string &name);
|
||||||
|
|
||||||
// Añade una visita a las estadisticas
|
// Añade una visita a las estadisticas
|
||||||
void addVisit(std::string name);
|
void addVisit(const std::string &name);
|
||||||
|
|
||||||
// Añade una entrada al diccionario
|
// Añade una entrada al diccionario
|
||||||
void addDictionary(std::string number, std::string name);
|
void addDictionary(const std::string &number, const std::string &name);
|
||||||
};
|
};
|
||||||
@@ -15,12 +15,10 @@ Surface::Surface(std::shared_ptr<SurfaceData> surface_dest, int w, int h)
|
|||||||
surface_(std::make_shared<SurfaceData>(w, h)),
|
surface_(std::make_shared<SurfaceData>(w, h)),
|
||||||
transparent_color_(0) {}
|
transparent_color_(0) {}
|
||||||
|
|
||||||
Surface::Surface(std::shared_ptr<SurfaceData> surface_dest, std::string file_path)
|
Surface::Surface(std::shared_ptr<SurfaceData> surface_dest, const std::string &file_path)
|
||||||
: surface_dest_(surface_dest),
|
: surface_dest_(surface_dest),
|
||||||
surface_(std::make_shared<SurfaceData>(loadSurface(Asset::get()->get(file_path)))),
|
surface_(std::make_shared<SurfaceData>(loadSurface(Asset::get()->get(file_path)))),
|
||||||
transparent_color_(0) {
|
transparent_color_(0) {}
|
||||||
std::cout << "surface loaded: "<< surface_->width << "x" << surface_->height << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
Surface::~Surface() {}
|
Surface::~Surface() {}
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Surface(std::shared_ptr<SurfaceData> surface_dest, int w, int h);
|
Surface(std::shared_ptr<SurfaceData> surface_dest, int w, int h);
|
||||||
Surface(std::shared_ptr<SurfaceData> surface_dest, std::string file_path);
|
Surface(std::shared_ptr<SurfaceData> surface_dest, const std::string &file_path);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Surface();
|
~Surface();
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ void Title::updateMarquee()
|
|||||||
// Dibuja la marquesina
|
// Dibuja la marquesina
|
||||||
void Title::renderMarquee()
|
void Title::renderMarquee()
|
||||||
{
|
{
|
||||||
for (auto l : letters_)
|
for (const auto &l : letters_)
|
||||||
{
|
{
|
||||||
if (l.enabled)
|
if (l.enabled)
|
||||||
{
|
{
|
||||||
@@ -205,14 +205,6 @@ void Title::renderMarquee()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dibuja la linea de información inferior
|
|
||||||
void Title::renderInfo()
|
|
||||||
{
|
|
||||||
const std::string version = "v.1.10";
|
|
||||||
const int x = GAMECANVAS_WIDTH - info_text_->lenght(version) - 1;
|
|
||||||
info_text_->write(x, 1, version);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Actualiza las variables
|
// Actualiza las variables
|
||||||
void Title::update()
|
void Title::update()
|
||||||
{
|
{
|
||||||
@@ -319,40 +311,6 @@ void Title::run()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recarga las texturas
|
|
||||||
void Title::reLoadTextures()
|
|
||||||
{
|
|
||||||
// Carga la textura adecuada
|
|
||||||
if (options.video.palette == Palette::ZXSPECTRUM)
|
|
||||||
{
|
|
||||||
texture_ = resource_->getTexture("loading_screen_color.png");
|
|
||||||
}
|
|
||||||
else if (options.video.palette == Palette::ZXARNE)
|
|
||||||
{
|
|
||||||
texture_ = resource_->getTexture("loading_screen_color_zxarne.png");
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_->reLoad();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cambia la paleta
|
|
||||||
void Title::switchPalette()
|
|
||||||
{
|
|
||||||
if (options.video.palette == Palette::ZXSPECTRUM)
|
|
||||||
{
|
|
||||||
options.video.palette = Palette::ZXARNE;
|
|
||||||
sprite_->setTexture(resource_->getTexture("loading_screen_color_zxarne.png"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
options.video.palette = Palette::ZXSPECTRUM;
|
|
||||||
sprite_->setTexture(resource_->getTexture("loading_screen_color.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cambia el color del borde
|
|
||||||
screen_->setBorderColor(stringToColor(options.video.palette, "bright_blue"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Desplaza la lista de logros
|
// Desplaza la lista de logros
|
||||||
void Title::moveCheevosList(int direction)
|
void Title::moveCheevosList(int direction)
|
||||||
{
|
{
|
||||||
@@ -432,7 +390,7 @@ void Title::createCheevosTexture()
|
|||||||
constexpr int LINE_X1 = (CHEEVOS_TEXTURE_WIDTH / 7) * 3;
|
constexpr int LINE_X1 = (CHEEVOS_TEXTURE_WIDTH / 7) * 3;
|
||||||
constexpr int LINE_X2 = LINE_X1 + ((CHEEVOS_TEXTURE_WIDTH / 7) * 1);
|
constexpr int LINE_X2 = LINE_X1 + ((CHEEVOS_TEXTURE_WIDTH / 7) * 1);
|
||||||
|
|
||||||
for (auto cheevo : cheevosList)
|
for (const auto &cheevo : cheevosList)
|
||||||
{
|
{
|
||||||
cheevoColor = cheevo.completed ? CHEEVO_UNLOCKED_COLOR : CHEEVO_LOCKED_COLOR;
|
cheevoColor = cheevo.completed ? CHEEVO_UNLOCKED_COLOR : CHEEVO_LOCKED_COLOR;
|
||||||
pos += CHEEVOS_PADDING;
|
pos += CHEEVOS_PADDING;
|
||||||
|
|||||||
@@ -76,15 +76,6 @@ private:
|
|||||||
// Dibuja la marquesina
|
// Dibuja la marquesina
|
||||||
void renderMarquee();
|
void renderMarquee();
|
||||||
|
|
||||||
// Dibuja la linea de información inferior
|
|
||||||
void renderInfo();
|
|
||||||
|
|
||||||
// Recarga las texturas
|
|
||||||
void reLoadTextures();
|
|
||||||
|
|
||||||
// Cambia la paleta
|
|
||||||
void switchPalette();
|
|
||||||
|
|
||||||
// Desplaza la lista de logros
|
// Desplaza la lista de logros
|
||||||
void moveCheevosList(int direction);
|
void moveCheevosList(int direction);
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ double distanceSquared(int x1, int y1, int x2, int y2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre dos circulos
|
// Detector de colisiones entre dos circulos
|
||||||
bool checkCollision(Circle &a, Circle &b)
|
bool checkCollision(const Circle &a, const Circle &b)
|
||||||
{
|
{
|
||||||
// Calcula el radio total al cuadrado
|
// Calcula el radio total al cuadrado
|
||||||
int totalRadiusSquared = a.r + b.r;
|
int totalRadiusSquared = a.r + b.r;
|
||||||
@@ -38,7 +38,7 @@ bool checkCollision(Circle &a, Circle &b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre un circulo y un rectangulo
|
// Detector de colisiones entre un circulo y un rectangulo
|
||||||
bool checkCollision(Circle &a, SDL_Rect &b)
|
bool checkCollision(const Circle &a, const SDL_Rect &b)
|
||||||
{
|
{
|
||||||
// Closest point on collision box
|
// Closest point on collision box
|
||||||
int cX, cY;
|
int cX, cY;
|
||||||
@@ -83,7 +83,7 @@ bool checkCollision(Circle &a, SDL_Rect &b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre dos rectangulos
|
// Detector de colisiones entre dos rectangulos
|
||||||
bool checkCollision(SDL_Rect &a, SDL_Rect &b)
|
bool checkCollision(const SDL_Rect &a, const SDL_Rect &b)
|
||||||
{
|
{
|
||||||
// Calcula las caras del rectangulo a
|
// Calcula las caras del rectangulo a
|
||||||
const int leftA = a.x;
|
const int leftA = a.x;
|
||||||
@@ -123,7 +123,7 @@ bool checkCollision(SDL_Rect &a, SDL_Rect &b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre un punto y un rectangulo
|
// Detector de colisiones entre un punto y un rectangulo
|
||||||
bool checkCollision(SDL_Point &p, SDL_Rect &r)
|
bool checkCollision(const SDL_Point &p, const SDL_Rect &r)
|
||||||
{
|
{
|
||||||
// Comprueba si el punto está a la izquierda del rectangulo
|
// Comprueba si el punto está a la izquierda del rectangulo
|
||||||
if (p.x < r.x)
|
if (p.x < r.x)
|
||||||
@@ -154,7 +154,7 @@ bool checkCollision(SDL_Point &p, SDL_Rect &r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre una linea horizontal y un rectangulo
|
// Detector de colisiones entre una linea horizontal y un rectangulo
|
||||||
bool checkCollision(h_line_t &l, SDL_Rect &r)
|
bool checkCollision(const h_line_t &l, const SDL_Rect &r)
|
||||||
{
|
{
|
||||||
// Comprueba si la linea esta por encima del rectangulo
|
// Comprueba si la linea esta por encima del rectangulo
|
||||||
if (l.y < r.y)
|
if (l.y < r.y)
|
||||||
@@ -185,7 +185,7 @@ bool checkCollision(h_line_t &l, SDL_Rect &r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre una linea vertical y un rectangulo
|
// Detector de colisiones entre una linea vertical y un rectangulo
|
||||||
bool checkCollision(v_line_t &l, SDL_Rect &r)
|
bool checkCollision(const v_line_t &l, const SDL_Rect &r)
|
||||||
{
|
{
|
||||||
// Comprueba si la linea esta por la izquierda del rectangulo
|
// Comprueba si la linea esta por la izquierda del rectangulo
|
||||||
if (l.x < r.x)
|
if (l.x < r.x)
|
||||||
@@ -216,7 +216,7 @@ bool checkCollision(v_line_t &l, SDL_Rect &r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre una linea horizontal y un punto
|
// Detector de colisiones entre una linea horizontal y un punto
|
||||||
bool checkCollision(h_line_t &l, SDL_Point &p)
|
bool checkCollision(const h_line_t &l, const SDL_Point &p)
|
||||||
{
|
{
|
||||||
// Comprueba si el punto esta sobre la linea
|
// Comprueba si el punto esta sobre la linea
|
||||||
if (p.y > l.y)
|
if (p.y > l.y)
|
||||||
@@ -247,7 +247,7 @@ bool checkCollision(h_line_t &l, SDL_Point &p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre dos lineas
|
// Detector de colisiones entre dos lineas
|
||||||
SDL_Point checkCollision(line_t &l1, line_t &l2)
|
SDL_Point checkCollision(const line_t &l1, const line_t &l2)
|
||||||
{
|
{
|
||||||
const float x1 = l1.x1;
|
const float x1 = l1.x1;
|
||||||
const float y1 = l1.y1;
|
const float y1 = l1.y1;
|
||||||
@@ -276,7 +276,7 @@ SDL_Point checkCollision(line_t &l1, line_t &l2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre dos lineas
|
// Detector de colisiones entre dos lineas
|
||||||
SDL_Point checkCollision(d_line_t &l1, v_line_t &l2)
|
SDL_Point checkCollision(const d_line_t &l1, const v_line_t &l2)
|
||||||
{
|
{
|
||||||
const float x1 = l1.x1;
|
const float x1 = l1.x1;
|
||||||
const float y1 = l1.y1;
|
const float y1 = l1.y1;
|
||||||
@@ -321,7 +321,7 @@ void normalizeLine(d_line_t &l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detector de colisiones entre un punto y una linea diagonal
|
// Detector de colisiones entre un punto y una linea diagonal
|
||||||
bool checkCollision(SDL_Point &p, d_line_t &l)
|
bool checkCollision(const SDL_Point &p, const d_line_t &l)
|
||||||
{
|
{
|
||||||
// Comprueba si el punto está en alineado con la linea
|
// Comprueba si el punto está en alineado con la linea
|
||||||
if (abs(p.x - l.x1) != abs(p.y - l.y1))
|
if (abs(p.x - l.x1) != abs(p.y - l.y1))
|
||||||
@@ -464,36 +464,26 @@ bool colorAreEqual(Color color1, Color color2)
|
|||||||
return (r && g && b);
|
return (r && g && b);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convierte una cadena a minusculas
|
// Convierte una cadena a minúsculas
|
||||||
std::string toLower(std::string str)
|
std::string toLower(std::string str)
|
||||||
{
|
{
|
||||||
const char *original = str.c_str();
|
for (char& c : str) {
|
||||||
char *lower = (char *)malloc(str.size() + 1);
|
if (c >= 'A' && c <= 'Z') {
|
||||||
for (int i = 0; i < (int)str.size(); ++i)
|
c += 32; // Convierte a minúscula
|
||||||
{
|
|
||||||
char c = original[i];
|
|
||||||
lower[i] = (c >= 65 && c <= 90) ? c + 32 : c;
|
|
||||||
}
|
}
|
||||||
lower[str.size()] = 0;
|
}
|
||||||
std::string result(lower);
|
return str;
|
||||||
free(lower);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convierte una cadena a mayúsculas
|
// Convierte una cadena a mayúsculas
|
||||||
std::string toUpper(std::string str)
|
std::string toUpper(std::string str)
|
||||||
{
|
{
|
||||||
const char *original = str.c_str();
|
for (char& c : str) {
|
||||||
char *upper = (char *)malloc(str.size() + 1);
|
if (c >= 'a' && c <= 'z') {
|
||||||
for (int i = 0; i < (int)str.size(); ++i)
|
c -= 32; // Convierte a mayúscula
|
||||||
{
|
|
||||||
char c = original[i];
|
|
||||||
upper[i] = (c >= 97 && c <= 122) ? c - 32 : c;
|
|
||||||
}
|
}
|
||||||
upper[str.size()] = 0;
|
}
|
||||||
std::string result(upper);
|
return str;
|
||||||
free(upper);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Obtiene el nombre de un fichero a partir de una ruta completa
|
// Obtiene el nombre de un fichero a partir de una ruta completa
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
#include <SDL2/SDL_render.h> // for SDL_Renderer
|
#include <SDL2/SDL_render.h> // for SDL_Renderer
|
||||||
#include <SDL2/SDL.h> // for SDL_Texture
|
#include <SDL2/SDL.h> // for SDL_Texture
|
||||||
|
|
||||||
|
|
||||||
// Tipos de paleta
|
// Tipos de paleta
|
||||||
enum class Palette : int
|
enum class Palette : int
|
||||||
{
|
{
|
||||||
@@ -66,34 +65,34 @@ struct Color
|
|||||||
double distanceSquared(int x1, int y1, int x2, int y2);
|
double distanceSquared(int x1, int y1, int x2, int y2);
|
||||||
|
|
||||||
// Detector de colisiones entre dos circulos
|
// Detector de colisiones entre dos circulos
|
||||||
bool checkCollision(Circle &a, Circle &b);
|
bool checkCollision(const Circle &a, const Circle &b);
|
||||||
|
|
||||||
// Detector de colisiones entre un circulo y un rectangulo
|
// Detector de colisiones entre un circulo y un rectangulo
|
||||||
bool checkCollision(Circle &a, SDL_Rect &b);
|
bool checkCollision(const Circle &a, const SDL_Rect &b);
|
||||||
|
|
||||||
// Detector de colisiones entre un dos rectangulos
|
// Detector de colisiones entre un dos rectangulos
|
||||||
bool checkCollision(SDL_Rect &a, SDL_Rect &b);
|
bool checkCollision(const SDL_Rect &a, const SDL_Rect &b);
|
||||||
|
|
||||||
// Detector de colisiones entre un punto y un rectangulo
|
// Detector de colisiones entre un punto y un rectangulo
|
||||||
bool checkCollision(SDL_Point &p, SDL_Rect &r);
|
bool checkCollision(const SDL_Point &p, const SDL_Rect &r);
|
||||||
|
|
||||||
// Detector de colisiones entre una linea horizontal y un rectangulo
|
// Detector de colisiones entre una linea horizontal y un rectangulo
|
||||||
bool checkCollision(h_line_t &l, SDL_Rect &r);
|
bool checkCollision(const h_line_t &l, const SDL_Rect &r);
|
||||||
|
|
||||||
// Detector de colisiones entre una linea vertical y un rectangulo
|
// Detector de colisiones entre una linea vertical y un rectangulo
|
||||||
bool checkCollision(v_line_t &l, SDL_Rect &r);
|
bool checkCollision(const v_line_t &l, const SDL_Rect &r);
|
||||||
|
|
||||||
// Detector de colisiones entre una linea horizontal y un punto
|
// Detector de colisiones entre una linea horizontal y un punto
|
||||||
bool checkCollision(h_line_t &l, SDL_Point &p);
|
bool checkCollision(const h_line_t &l, const SDL_Point &p);
|
||||||
|
|
||||||
// Detector de colisiones entre dos lineas
|
// Detector de colisiones entre dos lineas
|
||||||
SDL_Point checkCollision(line_t &l1, line_t &l2);
|
SDL_Point checkCollision(const line_t &l1, const line_t &l2);
|
||||||
|
|
||||||
// Detector de colisiones entre dos lineas
|
// Detector de colisiones entre dos lineas
|
||||||
SDL_Point checkCollision(d_line_t &l1, v_line_t &l2);
|
SDL_Point checkCollision(const d_line_t &l1, const v_line_t &l2);
|
||||||
|
|
||||||
// Detector de colisiones entre un punto y una linea diagonal
|
// Detector de colisiones entre un punto y una linea diagonal
|
||||||
bool checkCollision(SDL_Point &p, d_line_t &l);
|
bool checkCollision(const SDL_Point &p, const d_line_t &l);
|
||||||
|
|
||||||
// Normaliza una linea diagonal
|
// Normaliza una linea diagonal
|
||||||
void normalizeLine(d_line_t &l);
|
void normalizeLine(d_line_t &l);
|
||||||
|
|||||||
Reference in New Issue
Block a user