From db5d2901ee32e738515dea741273f576c6ecc78a Mon Sep 17 00:00:00 2001 From: Sergio Valor Martinez Date: Wed, 26 Oct 2022 10:32:16 +0200 Subject: [PATCH] Ya cambia el color de los enemigos al cambiar la paleta --- source/enemy.cpp | 11 ++++++++++- source/enemy.h | 22 ++++++++++++++-------- source/room.cpp | 9 ++++++++- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/source/enemy.cpp b/source/enemy.cpp index ddf47fb..24320af 100644 --- a/source/enemy.cpp +++ b/source/enemy.cpp @@ -18,7 +18,9 @@ Enemy::Enemy(enemy_t enemy) x2 = enemy.x2; y1 = enemy.y1; y2 = enemy.y2; - color = enemy.color; + palette = enemy.palette; + colorString = enemy.color; + color = stringToColor(palette, colorString); sprite->setPosX(enemy.x); sprite->setPosY(enemy.y); sprite->setVelX(enemy.vx); @@ -101,4 +103,11 @@ SDL_Rect &Enemy::getCollider() void Enemy::reLoadTexture() { texture->reLoad(); +} + +// Asigna la paleta +void Enemy::setPalette(palette_e pal) +{ + palette = pal; + color = stringToColor(palette, colorString); } \ No newline at end of file diff --git a/source/enemy.h b/source/enemy.h index fb5e612..4149dc7 100644 --- a/source/enemy.h +++ b/source/enemy.h @@ -26,7 +26,8 @@ struct enemy_t int y1; // Limite superior de la ruta en el eje Y int y2; // Limite inferior de la ruta en el eje Y bool flip; // Indica si el enemigo hace flip al terminar su ruta - color_t color; // Color del enemigo + std::string color; // Color del enemigo + palette_e palette; // Paleta de colores }; class Enemy @@ -39,13 +40,15 @@ private: Asset *asset; // Objeto con la ruta a todos los ficheros de recursos // Variables - color_t color; // Color del enemigo - int x1; // Limite izquierdo de la ruta en el eje X - int x2; // Limite derecho de la ruta en el eje X - int y1; // Limite superior de la ruta en el eje Y - int y2; // Limite inferior de la ruta en el eje Y - SDL_Rect collider; // Caja de colisión - bool doFlip; // Indica si el enemigo hace flip al terminar su ruta + color_t color; // Color del enemigo + std::string colorString; // Color del enemigo en formato texto + palette_e palette; // Paleta de colores + int x1; // Limite izquierdo de la ruta en el eje X + int x2; // Limite derecho de la ruta en el eje X + int y1; // Limite superior de la ruta en el eje Y + int y2; // Limite inferior de la ruta en el eje Y + SDL_Rect collider; // Caja de colisión + bool doFlip; // Indica si el enemigo hace flip al terminar su ruta // Comprueba si ha llegado al limite del recorrido para darse media vuelta void checkPath(); @@ -71,6 +74,9 @@ public: // Recarga la textura void reLoadTexture(); + + // Asigna la paleta + void setPalette(palette_e pal); }; #endif diff --git a/source/room.cpp b/source/room.cpp index 8cab567..2ba34cb 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -105,6 +105,7 @@ bool Room::loadMapFile(std::string file_path) enemy.asset = asset; enemy.renderer = renderer; enemy.flip = false; + enemy.palette = options->palette; do { @@ -397,7 +398,7 @@ bool Room::setEnemy(enemy_t *enemy, std::string var, std::string value) else if (var == "color") { - enemy->color = stringToColor(options->palette, value); + enemy->color = value; } else if (var == "[/enemy]") @@ -799,6 +800,12 @@ void Room::reLoadPalette() { item->setColors(stringToColor(options->palette, itemColor1), stringToColor(options->palette, itemColor2)); } + + // Cambia el color de los enemigos + for (auto enemy:enemies) + { + enemy->setPalette(options->palette); + } // Establece el color del borde screen->setBorderColor(stringToColor(options->palette, borderColor));