forked from jaildesigner-jailgames/jaildoctors_dilemma
Implementado el cambio de paleta durante el juego
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#include "game.h"
|
||||
|
||||
// Constructor
|
||||
Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Debug *debug)
|
||||
Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, Input *input, Debug *debug)
|
||||
{
|
||||
// Inicia algunas variables
|
||||
board.iniClock = SDL_GetTicks();
|
||||
@@ -14,6 +14,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
|
||||
this->screen = screen;
|
||||
this->input = input;
|
||||
this->debug = debug;
|
||||
this->options = options;
|
||||
|
||||
// ****
|
||||
// this->debug->setEnabled(true);
|
||||
@@ -24,11 +25,11 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
|
||||
// ****
|
||||
|
||||
// Crea los objetos
|
||||
scoreboard = new ScoreBoard(renderer, asset, &board);
|
||||
scoreboard = new ScoreBoard(renderer, asset, options, &board);
|
||||
itemTracker = new ItemTracker();
|
||||
roomTracker = new RoomTracker();
|
||||
room = new Room(asset->get(currentRoom), renderer, screen, asset, itemTracker, &board.items, debug);
|
||||
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, input, room, debug);
|
||||
room = new Room(asset->get(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug);
|
||||
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, options, input, room, debug);
|
||||
eventHandler = new SDL_Event();
|
||||
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
|
||||
music = JA_LoadMusic(asset->get("game.ogg").c_str());
|
||||
@@ -42,7 +43,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
|
||||
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
|
||||
roomTracker->addRoom(currentRoom);
|
||||
paused = false;
|
||||
blackScreen = false;
|
||||
@@ -82,7 +83,7 @@ void Game::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))
|
||||
@@ -152,6 +153,18 @@ void Game::checkEventHandler()
|
||||
reLoadTextures();
|
||||
break;
|
||||
|
||||
case SDL_SCANCODE_F5:
|
||||
if (options->palette == p_zxspectrum)
|
||||
{
|
||||
options->palette = p_zxarne;
|
||||
}
|
||||
else
|
||||
{
|
||||
options->palette = p_zxspectrum;
|
||||
}
|
||||
reLoadTextures();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -273,7 +286,7 @@ void Game::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);
|
||||
|
||||
@@ -293,11 +306,11 @@ bool Game::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
|
||||
if (roomTracker->addRoom(file))
|
||||
{ // Incrementa el contador de habitaciones visitadas
|
||||
board.rooms++;
|
||||
@@ -382,8 +395,8 @@ void Game::killPlayer()
|
||||
setBlackScreen();
|
||||
|
||||
// Crea la nueva habitación y el nuevo jugador
|
||||
room = new Room(asset->get(currentRoom), renderer, screen, asset, itemTracker, &board.items, debug);
|
||||
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, input, room, debug);
|
||||
room = new Room(asset->get(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug);
|
||||
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, options, input, room, debug);
|
||||
|
||||
room->pause();
|
||||
player->pause();
|
||||
@@ -428,6 +441,6 @@ void Game::renderBlackScreen()
|
||||
if (blackScreen)
|
||||
{
|
||||
screen->clean();
|
||||
screen->setBorderColor(stringToColor("black"));
|
||||
screen->setBorderColor(stringToColor(options->palette, "black"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user