Mil arreglos de paletes, gifs i colors transparents

El gif del jugador de game over estava mal
This commit is contained in:
2025-03-08 20:04:43 +01:00
parent 7b3f82aa34
commit a14f6fcf6f
22 changed files with 61 additions and 193 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 995 B

After

Width:  |  Height:  |  Size: 1014 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -426,129 +426,13 @@ bool Director::setFileList()
Asset::get()->add(system_folder_ + "/stats.csv", AssetType::DATA, false, true); Asset::get()->add(system_folder_ + "/stats.csv", AssetType::DATA, false, true);
Asset::get()->add(system_folder_ + "/cheevos.bin", AssetType::DATA, false, true); Asset::get()->add(system_folder_ + "/cheevos.bin", AssetType::DATA, false, true);
// Habitaciones // Tilemaps y Rooms
Asset::get()->add(prefix + "/data/room/01.room", AssetType::ROOM); for (int i = 1; i <= 60; ++i)
Asset::get()->add(prefix + "/data/room/02.room", AssetType::ROOM); {
Asset::get()->add(prefix + "/data/room/03.room", AssetType::ROOM); std::string index = (i < 10 ? "0" : "") + std::to_string(i);
Asset::get()->add(prefix + "/data/room/04.room", AssetType::ROOM); Asset::get()->add(prefix + "/data/room/" + index + ".tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/05.room", AssetType::ROOM); Asset::get()->add(prefix + "/data/room/" + index + ".room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/06.room", AssetType::ROOM); }
Asset::get()->add(prefix + "/data/room/07.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/08.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/09.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/10.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/11.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/12.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/13.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/14.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/15.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/16.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/17.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/18.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/19.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/20.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/21.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/22.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/23.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/24.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/25.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/26.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/27.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/28.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/29.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/30.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/31.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/32.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/33.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/34.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/35.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/36.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/37.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/38.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/39.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/40.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/41.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/42.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/43.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/44.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/45.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/46.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/47.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/48.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/49.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/50.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/51.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/52.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/53.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/54.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/55.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/56.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/57.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/58.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/59.room", AssetType::ROOM);
Asset::get()->add(prefix + "/data/room/60.room", AssetType::ROOM);
// Tilemaps
Asset::get()->add(prefix + "/data/room/01.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/02.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/03.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/04.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/05.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/06.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/07.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/08.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/09.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/10.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/11.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/12.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/13.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/14.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/15.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/16.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/17.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/18.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/19.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/20.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/21.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/22.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/23.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/24.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/25.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/26.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/27.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/28.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/29.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/30.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/31.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/32.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/33.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/34.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/35.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/36.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/37.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/38.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/39.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/40.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/41.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/42.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/43.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/44.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/45.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/46.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/47.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/48.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/49.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/50.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/51.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/52.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/53.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/54.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/55.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/56.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/57.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/58.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/59.tmx", AssetType::TILEMAP);
Asset::get()->add(prefix + "/data/room/60.tmx", AssetType::TILEMAP);
// Tilesets // Tilesets
Asset::get()->add(prefix + "/data/tilesets/standard.gif", AssetType::BITMAP); Asset::get()->add(prefix + "/data/tilesets/standard.gif", AssetType::BITMAP);
@@ -693,32 +577,15 @@ bool Director::setFileList()
// Efectos de sonido // Efectos de sonido
Asset::get()->add(prefix + "/data/sound/item.wav", AssetType::SOUND); Asset::get()->add(prefix + "/data/sound/item.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/death.wav", AssetType::SOUND); Asset::get()->add(prefix + "/data/sound/death.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump1.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump2.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump3.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump4.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump5.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump6.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump7.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump8.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump9.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump10.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump11.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump12.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump13.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump14.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump15.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump16.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump17.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump18.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump19.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump20.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump21.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump22.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump23.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/jump24.wav", AssetType::SOUND);
Asset::get()->add(prefix + "/data/sound/notify.wav", AssetType::SOUND); Asset::get()->add(prefix + "/data/sound/notify.wav", AssetType::SOUND);
// Efectos de sonido para el salto
for (int i = 1; i <= 24; ++i)
{
std::string jump_index = std::to_string(i);
Asset::get()->add(prefix + "/data/sound/jump" + jump_index + ".wav", AssetType::SOUND);
}
// Logo // Logo
Asset::get()->add(prefix + "/data/logo/jailgames.gif", AssetType::BITMAP); Asset::get()->add(prefix + "/data/logo/jailgames.gif", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/logo/since_1998.gif", AssetType::BITMAP); Asset::get()->add(prefix + "/data/logo/since_1998.gif", AssetType::BITMAP);
@@ -728,7 +595,6 @@ bool Director::setFileList()
Asset::get()->add(prefix + "/data/loading/loading_screen_color.gif", AssetType::BITMAP); Asset::get()->add(prefix + "/data/loading/loading_screen_color.gif", AssetType::BITMAP);
// Title // Title
Asset::get()->add(prefix + "/data/title/title_loading.gif", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/title/title_logo.gif", AssetType::BITMAP); Asset::get()->add(prefix + "/data/title/title_logo.gif", AssetType::BITMAP);
// Ending // Ending

View File

@@ -72,6 +72,7 @@ void Ending::update()
// Actualiza el volumen de la musica // Actualiza el volumen de la musica
updateMusicVolume(); updateMusicVolume();
// Actualiza el objeto Screen
Screen::get()->update(); Screen::get()->update();
} }
} }
@@ -241,6 +242,7 @@ void Ending::iniPics()
// Crea la texture // Crea la texture
sp.image_surface = Resource::get()->getSurface(pic.caption); sp.image_surface = Resource::get()->getSurface(pic.caption);
sp.image_surface->setTransparentColor();
const int WIDTH = sp.image_surface->getWidth(); const int WIDTH = sp.image_surface->getWidth();
const int HEIGHT = sp.image_surface->getHeight(); const int HEIGHT = sp.image_surface->getHeight();

View File

@@ -440,7 +440,7 @@ void Game::renderBlackScreen()
{ {
if (black_screen_) if (black_screen_)
{ {
auto const color = static_cast<Uint8>(PaletteColor::BRIGHT_BLACK); auto const color = static_cast<Uint8>(PaletteColor::BLACK);
Screen::get()->setRendererSurface(); Screen::get()->setRendererSurface();
Screen::get()->clearSurface(color); Screen::get()->clearSurface(color);
Screen::get()->setBorderColor(color); Screen::get()->setBorderColor(color);
@@ -451,13 +451,13 @@ void Game::renderBlackScreen()
void Game::setScoreBoardColor() void Game::setScoreBoardColor()
{ {
// Obtiene el color del borde // Obtiene el color del borde
const Uint8 colorBorder = room_->getBorderColor(); const Uint8 BORDER_COLOR = room_->getBorderColor();
const bool isBlack = colorBorder == stringToColor("black"); const bool IS_BLACK = BORDER_COLOR == static_cast<Uint8>(PaletteColor::BLACK);
const bool isBrightBlack = colorBorder == stringToColor("bright_black"); const bool IS_BRIGHT_BLACK = BORDER_COLOR == static_cast<Uint8>(PaletteColor::BRIGHT_BLACK);
// Si el color del borde es negro o negro brillante cambia el texto del marcador a blanco // Si el color del borde es negro o negro brillante cambia el texto del marcador a blanco
board_->color = isBlack || isBrightBlack ? stringToColor("white") : colorBorder; board_->color = IS_BLACK || IS_BRIGHT_BLACK ? static_cast<Uint8>(PaletteColor::WHITE) : BORDER_COLOR;
} }
// Comprueba si ha finalizado el juego // Comprueba si ha finalizado el juego

View File

@@ -30,6 +30,8 @@ GameOver::GameOver()
tv_sprite_->setPosX(GAMECANVAS_CENTER_X - tv_sprite_->getWidth() - 10); tv_sprite_->setPosX(GAMECANVAS_CENTER_X - tv_sprite_->getWidth() - 10);
tv_sprite_->setPosY(30); tv_sprite_->setPosY(30);
Screen::get()->setBorderColor(static_cast<Uint8>(PaletteColor::BLACK));
// Inicializa el vector de colores // Inicializa el vector de colores
const std::vector<std::string> COLORS = {"white", "yellow", "cyan", "green", "magenta", "red", "blue", "black"}; const std::vector<std::string> COLORS = {"white", "yellow", "cyan", "green", "magenta", "red", "blue", "black"};
for (const auto &color : COLORS) for (const auto &color : COLORS)
@@ -61,6 +63,7 @@ void GameOver::update()
player_sprite_->update(); player_sprite_->update();
tv_sprite_->update(); tv_sprite_->update();
// Actualiza el objeto Screen
Screen::get()->update(); Screen::get()->update();
} }
} }
@@ -71,7 +74,7 @@ void GameOver::render()
constexpr int Y = 32; constexpr int Y = 32;
Screen::get()->start(); Screen::get()->start();
Screen::get()->clearSurface(1); Screen::get()->clearSurface(static_cast<Uint8>(PaletteColor::BLACK));
auto text = Resource::get()->getText("smb2"); auto text = Resource::get()->getText("smb2");
@@ -84,10 +87,10 @@ void GameOver::render()
renderSprites(); renderSprites();
// Escribe el texto con las habitaciones y los items // Escribe el texto con las habitaciones y los items
const std::string itemsTxt = std::to_string(options.stats.items / 100) + std::to_string((options.stats.items % 100) / 10) + std::to_string(options.stats.items % 10); const std::string ITEMS_TEXT = std::to_string(options.stats.items / 100) + std::to_string((options.stats.items % 100) / 10) + std::to_string(options.stats.items % 10);
const std::string roomsTxt = std::to_string(options.stats.rooms / 100) + std::to_string((options.stats.rooms % 100) / 10) + std::to_string(options.stats.rooms % 10); const std::string ROOMS_TEXT = std::to_string(options.stats.rooms / 100) + std::to_string((options.stats.rooms % 100) / 10) + std::to_string(options.stats.rooms % 10);
text->writeDX(TEXT_CENTER | TEXT_COLOR, GAMECANVAS_CENTER_X, Y + 80, "ITEMS: " + itemsTxt, 1, color_); text->writeDX(TEXT_CENTER | TEXT_COLOR, GAMECANVAS_CENTER_X, Y + 80, "ITEMS: " + ITEMS_TEXT, 1, color_);
text->writeDX(TEXT_CENTER | TEXT_COLOR, GAMECANVAS_CENTER_X, Y + 90, "ROOMS: " + roomsTxt, 1, color_); text->writeDX(TEXT_CENTER | TEXT_COLOR, GAMECANVAS_CENTER_X, Y + 90, "ROOMS: " + ROOMS_TEXT, 1, color_);
// Escribe el texto con "Tu peor pesadilla" // Escribe el texto con "Tu peor pesadilla"
text->writeDX(TEXT_CENTER | TEXT_COLOR, GAMECANVAS_CENTER_X, Y + 110, "YOUR WORST NIGHTMARE IS", 1, color_); text->writeDX(TEXT_CENTER | TEXT_COLOR, GAMECANVAS_CENTER_X, Y + 110, "YOUR WORST NIGHTMARE IS", 1, color_);
@@ -131,15 +134,15 @@ void GameOver::updateColor()
if (counter_ < half) if (counter_ < half)
{ {
const float step = std::min(counter_, COUNTER_FADE_LENGHT_) / (float)COUNTER_FADE_LENGHT_; const float STEP = std::min(counter_, COUNTER_FADE_LENGHT_) / (float)COUNTER_FADE_LENGHT_;
const int index = (colors_.size() - 1) - int((colors_.size() - 1) * step); const int INDEX = (colors_.size() - 1) - int((colors_.size() - 1) * STEP);
color_ = colors_[index]; color_ = colors_[INDEX];
} }
else else
{ {
const float step = std::min(std::max(counter_, COUNTER_INIT_FADE_) - COUNTER_INIT_FADE_, COUNTER_FADE_LENGHT_) / (float)COUNTER_FADE_LENGHT_; const float STEP = std::min(std::max(counter_, COUNTER_INIT_FADE_) - COUNTER_INIT_FADE_, COUNTER_FADE_LENGHT_) / (float)COUNTER_FADE_LENGHT_;
const int index = (colors_.size() - 1) * step; const int INDEX = (colors_.size() - 1) * STEP;
color_ = colors_[index]; color_ = colors_[INDEX];
} }
} }

View File

@@ -25,7 +25,7 @@ LoadingScreen::LoadingScreen()
screen_surface_(std::make_shared<Surface>(options.game.width, options.game.height)) screen_surface_(std::make_shared<Surface>(options.game.width, options.game.height))
{ {
// Configura la superficie donde se van a pintar los sprites // Configura la superficie donde se van a pintar los sprites
screen_surface_->clear(stringToColor("white")); screen_surface_->clear(static_cast<Uint8>(PaletteColor::WHITE));
// Inicializa variables // Inicializa variables
options.section.section = Section::LOADING_SCREEN; options.section.section = Section::LOADING_SCREEN;

View File

@@ -237,7 +237,7 @@ void Notifier::show(std::vector<std::string> texts, NotificationText text_is, Ui
{ {
n.surface->clear(bg_color_); n.surface->clear(bg_color_);
SDL_Rect rect = {0, 0, n.surface->getWidth(), n.surface->getHeight()}; SDL_Rect rect = {0, 0, n.surface->getWidth(), n.surface->getHeight()};
n.surface->drawRectBorder(&rect, static_cast<Uint8>(PaletteColor::RED)); n.surface->drawRectBorder(&rect, static_cast<Uint8>(PaletteColor::CYAN));
} }
// Dibuja el icono de la notificación // Dibuja el icono de la notificación

View File

@@ -81,7 +81,7 @@ constexpr Subsection DEFAULT_SUBSECTION = Subsection::LOGO_TO_INTRO;
constexpr ControlScheme DEFAULT_CONTROL_SCHEME = ControlScheme::CURSOR; // Control por defecto constexpr ControlScheme DEFAULT_CONTROL_SCHEME = ControlScheme::CURSOR; // Control por defecto
constexpr NotificationPosition DEFAULT_NOTIFICATION_POSITION = NotificationPosition::UPPER_LEFT; // Posición de las notificaciones por defecto constexpr NotificationPosition DEFAULT_NOTIFICATION_POSITION = NotificationPosition::UPPER_LEFT; // Posición de las notificaciones por defecto
constexpr bool DEFAULT_NOTIFICATION_SOUND = true; // Sonido de las notificaciones por defecto constexpr bool DEFAULT_NOTIFICATION_SOUND = true; // Sonido de las notificaciones por defecto
const Uint8 DEFAULT_NOTIFICATION_COLOR = static_cast<Uint8>(PaletteColor::BLACK); // Color de las notificaciones por defecto const Uint8 DEFAULT_NOTIFICATION_COLOR = static_cast<Uint8>(PaletteColor::BLUE); // Color de las notificaciones por defecto
constexpr bool DEFAULT_CONSOLE = false; // Consola desactivada por defecto constexpr bool DEFAULT_CONSOLE = false; // Consola desactivada por defecto
constexpr const char *DEFAULT_VERSION = "1.10"; // Versión por defecto constexpr const char *DEFAULT_VERSION = "1.10"; // Versión por defecto

View File

@@ -257,6 +257,15 @@ void Resource::loadSurfaces()
surfaces_.back().surface->setTransparentColor(0); surfaces_.back().surface->setTransparentColor(0);
updateLoadingProgress(); updateLoadingProgress();
} }
// Reconfigura el color transparente de algunas surfaces
getSurface("loading_screen_color.gif")->setTransparentColor();
getSurface("ending1.gif")->setTransparentColor();
getSurface("ending2.gif")->setTransparentColor();
getSurface("ending3.gif")->setTransparentColor();
getSurface("ending4.gif")->setTransparentColor();
getSurface("ending5.gif")->setTransparentColor();
getSurface("standard.gif")->setTransparentColor(16);
} }
// Carga las paletas // Carga las paletas

View File

@@ -487,28 +487,15 @@ void Room::fillMapTexture()
// Tiled pone los tiles vacios del mapa como cero y empieza a contar de 1 a n. // Tiled pone los tiles vacios del mapa como cero y empieza a contar de 1 a n.
// Al cargar el mapa en memoria, se resta uno, por tanto los tiles vacios son -1 // Al cargar el mapa en memoria, se resta uno, por tanto los tiles vacios son -1
// Tampoco hay que dibujar los tiles animados que estan en la fila 19 (indices) // Tampoco hay que dibujar los tiles animados que estan en la fila 19 (indices)
const int index = (y * MAP_WIDTH_) + x; const int INDEX = (y * MAP_WIDTH_) + x;
const bool a = (tile_map_[index] >= 18 * tile_set_width_) && (tile_map_[index] < 19 * tile_set_width_); const bool A = (tile_map_[INDEX] >= 18 * tile_set_width_) && (tile_map_[INDEX] < 19 * tile_set_width_);
const bool b = tile_map_[index] > -1; const bool B = tile_map_[INDEX] > -1;
if (b && !a) if (B && !A)
{ {
clip.x = (tile_map_[index] % tile_set_width_) * TILE_SIZE_; clip.x = (tile_map_[INDEX] % tile_set_width_) * TILE_SIZE_;
clip.y = (tile_map_[index] / tile_set_width_) * TILE_SIZE_; clip.y = (tile_map_[INDEX] / tile_set_width_) * TILE_SIZE_;
surface_->render(x * TILE_SIZE_, y * TILE_SIZE_, &clip); surface_->render(x * TILE_SIZE_, y * TILE_SIZE_, &clip);
#ifdef DEBUG
/*if (Debug::get()->getEnabled())
{
if (clip.x != -TILE_SIZE_)
{
clip.x = x * TILE_SIZE_;
clip.y = y * TILE_SIZE_;
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 64, 64, 64, 224);
SDL_RenderFillRect(Screen::get()->getRenderer(), &clip);
}
}*/
#endif
} }
} }

View File

@@ -6,6 +6,7 @@
#include <numeric> #include <numeric>
#include <memory> #include <memory>
#include <string> #include <string>
#include "utils.h"
// Alias // Alias
using Palette = std::array<Uint32, 256>; using Palette = std::array<Uint32, 256>;
@@ -137,7 +138,7 @@ public:
// Color transparente // Color transparente
Uint8 getTransparentColor() const { return transparent_color_; } Uint8 getTransparentColor() const { return transparent_color_; }
void setTransparentColor(Uint8 color) { transparent_color_ = color; } void setTransparentColor(Uint8 color = static_cast<Uint8>(PaletteColor::TRANSPARENT)) { transparent_color_ = color; }
// Paleta // Paleta
void setPalette(const std::array<Uint32, 256> &palette) { palette_ = palette; } void setPalette(const std::array<Uint32, 256> &palette) { palette_ = palette; }

View File

@@ -23,9 +23,9 @@
// Constructor // Constructor
Title::Title() Title::Title()
: title_logo_surface_(Resource::get()->getSurface("title_logo.gif")), : title_logo_surface_(Resource::get()->getSurface("title_logo.gif")),
title_logo_sprite_(std::make_shared<SSprite>(title_logo_surface_, 0, 0, title_logo_surface_->getWidth(), title_logo_surface_->getHeight())), title_logo_sprite_(std::make_shared<SSprite>(title_logo_surface_, 29, 9, title_logo_surface_->getWidth(), title_logo_surface_->getHeight())),
loading_screen_surface_(Resource::get()->getSurface("title_loading.gif")), loading_screen_surface_(Resource::get()->getSurface("loading_screen_color.gif")),
loading_screen_sprite_(std::make_shared<SSprite>(loading_screen_surface_, 0, options.game.height - loading_screen_surface_->getHeight(), loading_screen_surface_->getWidth(), loading_screen_surface_->getHeight())), loading_screen_sprite_(std::make_shared<SSprite>(loading_screen_surface_, 0, 0, loading_screen_surface_->getWidth(), loading_screen_surface_->getHeight())),
bg_surface_(std::make_shared<Surface>(options.game.width, options.game.height)) bg_surface_(std::make_shared<Surface>(options.game.width, options.game.height))
{ {
// Inicializa variables // Inicializa variables