Implementado el cambio de paleta durante el juego

This commit is contained in:
2022-10-25 21:51:30 +02:00
parent bcb56e17f2
commit dc84ed79d6
31 changed files with 297 additions and 164 deletions

View File

@@ -4,18 +4,8 @@
#include <sstream>
// Constructor
Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asset, ItemTracker *itemTracker, int *items, Debug *debug)
Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, ItemTracker *itemTracker, int *items, Debug *debug)
{
// Inicializa variables
tileSize = 8;
mapWidth = 32;
mapHeight = 16;
paused = false;
itemColor1 = stringToColor("magenta");
itemColor2 = stringToColor("yellow");
autoSurfaceDirection = 1;
counter = 0;
// Copia los punteros a objetos
this->renderer = renderer;
this->asset = asset;
@@ -23,6 +13,17 @@ Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asse
this->itemTracker = itemTracker;
this->itemsPicked = items;
this->debug = debug;
this->options = options;
// Inicializa variables
tileSize = 8;
mapWidth = 32;
mapHeight = 16;
paused = false;
itemColor1 = stringToColor(options->palette, "magenta");
itemColor2 = stringToColor(options->palette, "yellow");
autoSurfaceDirection = 1;
counter = 0;
// Crea los objetos
loadMapFile(file);
@@ -297,27 +298,35 @@ bool Room::setVars(std::string var, std::string value)
else if (var == "bgColor")
{
bgColor = stringToColor(value);
bgColor = stringToColor(options->palette, value);
}
else if (var == "border")
{
borderColor = stringToColor(value);
borderColor = stringToColor(options->palette, value);
}
else if (var == "itemColor1")
{
itemColor1 = stringToColor(value);
itemColor1 = stringToColor(options->palette, value);
}
else if (var == "itemColor2")
{
itemColor2 = stringToColor(value);
itemColor2 = stringToColor(options->palette, value);
}
else if (var == "tileset")
{
tileset = value;
if (options->palette == p_zxspectrum)
{
tileset = "standard.png";
}
else if (options->palette == p_zxarne)
{
tileset = "standard_zxarne.png";
}
}
else if (var == "roomUp")
@@ -437,7 +446,7 @@ bool Room::setEnemy(enemy_t *enemy, std::string var, std::string value)
else if (var == "color")
{
enemy->color = stringToColor(value);
enemy->color = stringToColor(options->palette, value);
}
else if (var == "[/enemy]")
@@ -746,7 +755,7 @@ tile_e Room::getTile(int index)
{
return t_passable;
}
// Las filas 18-20 es de tiles t_animated
else if ((tilemap[index] >= 18 * tilesetWidth) && (tilemap[index] < 21 * tilesetWidth))
{
@@ -810,7 +819,15 @@ bool Room::itemCollision(SDL_Rect &rect)
// Recarga la textura
void Room::reLoadTexture()
{
texture->reLoad();
if (options->palette == p_zxspectrum)
{
texture->loadFromFile(asset->get("standard.png"), renderer);
}
else if (options->palette == p_zxarne)
{
texture->loadFromFile(asset->get("standard_zxarne.png"), renderer);
}
// texture->reLoad();
fillMapTexture();
for (auto enemy : enemies)
{