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

@@ -1,7 +1,7 @@
#include "demo.h"
// Constructor
Demo::Demo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Debug *debug)
Demo::Demo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, Debug *debug)
{
// Inicia algunas variables
board.iniClock = SDL_GetTicks();
@@ -19,11 +19,12 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Debug *debug)
this->asset = asset;
this->screen = screen;
this->debug = debug;
this->options = options;
// Crea los objetos
itemTracker = new ItemTracker();
scoreboard = new ScoreBoard(renderer, asset, &board);
room = new Room(asset->get(currentRoom), renderer, screen, asset, itemTracker, &board.items, debug);
scoreboard = new ScoreBoard(renderer, asset, options, &board);
room = new Room(asset->get(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug);
eventHandler = new SDL_Event();
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
@@ -35,7 +36,7 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Debug *debug)
board.items = 0;
board.rooms = 1;
const color_t c = room->getBorderColor();
board.color = (c.r + c.g + c.b == 0) ? stringToColor("white") : c; // Si el color es negro lo cambia a blanco
board.color = (c.r + c.g + c.b == 0) ? stringToColor(options->palette, "white") : c; // Si el color es negro lo cambia a blanco
board.music = !debug->getEnabled();
@@ -63,7 +64,7 @@ void Demo::checkEventHandler()
if (eventHandler->type == SDL_QUIT)
{
section.name = SECTION_PROG_QUIT;
screen->setBorderColor(stringToColor("black"));
screen->setBorderColor(stringToColor(options->palette, "black"));
break;
}
else if ((eventHandler->type == SDL_KEYDOWN) and (eventHandler->key.repeat == 0))
@@ -163,7 +164,7 @@ void Demo::renderRoomName()
{
// Texto en el centro de la pantalla
SDL_Rect rect = {0, 16 * BLOCK, PLAY_AREA_WIDTH, BLOCK * 2};
color_t color = stringToColor("white");
color_t color = stringToColor(options->palette, "white");
SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, 0xFF);
SDL_RenderFillRect(renderer, &rect);
@@ -191,11 +192,11 @@ bool Demo::changeRoom(std::string file)
room = nullptr;
// Crea un objeto habitación nuevo a partir del fichero
room = new Room(asset->get(file), renderer, screen, asset, itemTracker, &board.items, debug);
room = new Room(asset->get(file), renderer, screen, asset, options, itemTracker, &board.items, debug);
// Actualiza el marcador
const color_t c = room->getBorderColor(); // Pone el color del marcador
board.color = (c.r + c.g + c.b == 0) ? stringToColor("white") : c; // Si el color es negro lo cambia a blanco
const color_t c = room->getBorderColor(); // Pone el color del marcador
board.color = (c.r + c.g + c.b == 0) ? stringToColor(options->palette, "white") : c; // Si el color es negro lo cambia a blanco
return true;
}