forked from jaildesigner-jailgames/jaildoctors_dilemma
Implementado el cambio de paleta durante el juego
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user