diff --git a/data/config/param_320x256.txt b/data/config/param_320x256.txt index a2c80ce..b424293 100644 --- a/data/config/param_320x256.txt +++ b/data/config/param_320x256.txt @@ -40,7 +40,7 @@ title.press_start_position 180 # Posición Y del texto "Press Start" title.title_duration 800 # Duración de la pantalla de título (frames) title.arcade_edition_position 123 # Posición Y del subtítulo "Arcade Edition" title.title_c_c_position 80 # Posición Y del título principal -title.bg_color 988db3 # Color de fondo en la sección titulo +title.bg_color 39393F # Color de fondo en la sección titulo ## --- BACKGROUND --- background.attenuate_color FFFFFF00 # Color de atenuación del fondo (RGBA hexadecimal) @@ -76,7 +76,7 @@ service_menu.bg_color 000F00F5 # Color de fondo del menú de servicio ( service_menu.drop_shadow false # ¿El menú de servicio tiene sombra? ## --- INTRO --- -intro.bg_color dbdb82 # Color de fondo de la intro +intro.bg_color 39393F # Color de fondo de la intro intro.card_color CBDBFC # Color de las tarjetas en la intro intro.shadow_color 00000080 # Color de la sombra de las tarjetas en la intro intro.text_distance_from_bottom 48 # Posicion del texto diff --git a/source/director.cpp b/source/director.cpp index 8cfd353..5ec053e 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -49,7 +49,7 @@ Director::Director(int argc, const char *argv[]) Section::name = Section::Name::GAME; Section::options = Section::Options::GAME_PLAY_1P; #elif DEBUG - Section::name = Section::Name::INTRO; + Section::name = Section::Name::CREDITS; Section::options = Section::Options::GAME_PLAY_1P; #else // NORMAL GAME Section::name = Section::Name::LOGO; diff --git a/source/sections/credits.cpp b/source/sections/credits.cpp index 5443f2c..a429cf4 100644 --- a/source/sections/credits.cpp +++ b/source/sections/credits.cpp @@ -169,35 +169,39 @@ void Credits::fillTextTexture() SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0, 0, 0, 0); SDL_RenderClear(Screen::get()->getRenderer()); - const std::array TEXTS = { + const std::array TEXTS = { Lang::getText("[CREDITS] PROGRAMMED_AND_DESIGNED_BY"), Lang::getText("[CREDITS] PIXELART_DRAWN_BY"), Lang::getText("[CREDITS] MUSIC_COMPOSED_BY"), Lang::getText("[CREDITS] SOUND_EFFECTS"), "JAILDESIGNER", - "JAILDOCTOR (INTRO)", + "JAILDOCTOR", "ERIC MATYAS (SOUNDIMAGE.ORG)", "WWW.THEMOTIONMONKEY.CO.UK", "WWW.KENNEY.NL", - "JAILDOCTOR"}; + "JAILDOCTOR", + "JAILDESIGNER"}; const int SPACE_POST_TITLE = 3 + text->getCharacterSize(); const int SPACE_PRE_TITLE = text->getCharacterSize() * 4; - const int TEXTS_HEIGHT = 1 * text->getCharacterSize() + 7 * SPACE_POST_TITLE + 3 * SPACE_PRE_TITLE; + const int TEXTS_HEIGHT = 1 * text->getCharacterSize() + 8 * SPACE_POST_TITLE + 3 * SPACE_PRE_TITLE; credits_rect_dst_.h = credits_rect_src_.h = TEXTS_HEIGHT; int y = (param.game.height - TEXTS_HEIGHT) / 2; + // PROGRAMMED_AND_DESIGNED_BY y = 0; text_grad->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(0), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); y += SPACE_POST_TITLE; text->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(4), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); + // PIXELART_DRAWN_BY y += SPACE_PRE_TITLE; text_grad->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(1), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); y += SPACE_POST_TITLE; text->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(4), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); + // MUSIC_COMPOSED_BY y += SPACE_PRE_TITLE; text_grad->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(2), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); @@ -206,6 +210,7 @@ void Credits::fillTextTexture() y += SPACE_POST_TITLE; text->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(6), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); + // SOUND_EFFECTS y += SPACE_PRE_TITLE; text_grad->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(3), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); y += SPACE_POST_TITLE; @@ -214,6 +219,8 @@ void Credits::fillTextTexture() text->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(8), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); y += SPACE_POST_TITLE; text->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(9), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); + y += SPACE_POST_TITLE; + text->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, y, TEXTS.at(10), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); // Mini logo y += SPACE_PRE_TITLE; @@ -267,7 +274,9 @@ void Credits::fillCanvas() SDL_RenderFillRect(Screen::get()->getRenderer(), &right_black_rect_); // Dibuja el rectangulo rojo - SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0xFF, 0, 0, 0xFF); + // SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0xFF, 0, 0, 0xFF); + const Color color = color_.lighten(); + SDL_SetRenderDrawColor(Screen::get()->getRenderer(), color.r, color.g, color.b, 0xFF); SDL_RenderRect(Screen::get()->getRenderer(), &red_rect); // Si el mini_logo está en su destino, lo dibuja encima de lo anterior @@ -490,15 +499,18 @@ void Credits::resetVolume() // Cambia el color del fondo void Credits::cycleColors() { - constexpr int UPPER_LIMIT = 255; // Límite superior - constexpr int LOWER_LIMIT = 80; // Límite inferior + // constexpr int UPPER_LIMIT = 255; // Límite superior + // constexpr int LOWER_LIMIT = 80; // Límite inferior + + constexpr int UPPER_LIMIT = 140; // Límite superior + constexpr int LOWER_LIMIT = 30; // Límite inferior static float r = static_cast(UPPER_LIMIT); static float g = static_cast(LOWER_LIMIT); static float b = static_cast(LOWER_LIMIT); static float stepR = -0.5f; // Paso flotante para transiciones suaves static float stepG = 0.3f; - static float stepB = 0.7f; + static float stepB = 0.1f; // Ajustar valores de R r += stepR; @@ -522,7 +534,8 @@ void Credits::cycleColors() } // Aplicar el color, redondeando a enteros antes de usar - tiled_bg_->setColor(Color(static_cast(r), static_cast(g), static_cast(b))); + color_ = Color(static_cast(r), static_cast(g), static_cast(b)); + tiled_bg_->setColor(color_); } // Actualza los jugadores diff --git a/source/sections/credits.h b/source/sections/credits.h index da13fed..19e42d0 100644 --- a/source/sections/credits.h +++ b/source/sections/credits.h @@ -55,6 +55,7 @@ private: // --- Diseño y posicionamiento --- float black_bars_size_ = (param.game.game_area.rect.h - PLAY_AREA_HEIGHT) / 2; // Tamaño de las barras negras int mini_logo_final_pos_ = 0; // Posición final del minilogo + Color color_; // Color usado para los efectos // --- Control de audio --- int initial_volume_ = Options::audio.music.volume; // Volumen inicial diff --git a/source/sections/instructions.cpp b/source/sections/instructions.cpp index ebe402a..71aefe5 100644 --- a/source/sections/instructions.cpp +++ b/source/sections/instructions.cpp @@ -40,6 +40,7 @@ Instructions::Instructions() view_ = param.game.game_area.rect; // Inicializa objetos + tiled_bg_->setColor(param.title.bg_color); fade_->setColor(param.fade.color); fade_->setType(FadeType::FULLSCREEN); fade_->setPostDuration(param.fade.post_duration); diff --git a/source/sections/intro.cpp b/source/sections/intro.cpp index 85026c7..37a0e80 100644 --- a/source/sections/intro.cpp +++ b/source/sections/intro.cpp @@ -24,6 +24,8 @@ #include "writer.h" // Para Writer #include "input.h" +#include // Para std::hex, std::setw, std::setfill + // Constructor Intro::Intro() : tiled_bg_(std::make_unique(param.game.game_area.rect, TiledBGMode::DIAGONAL)) @@ -49,46 +51,70 @@ void Intro::checkEvents() SDL_Event event; while (SDL_PollEvent(&event)) { +#ifdef DEBUG if (event.type == SDL_EVENT_KEY_DOWN && event.key.repeat == 1) { - static Color color = Color(128, 128, 128); + static Color color = param.intro.bg_color; switch (event.key.key) { case SDLK_A: - ++color.r; - if (color.r > 255) - color.r = 0; + if (color.r < 255) + ++color.r; break; case SDLK_Z: - --color.r; - if (color.r < 0) - color.r =255; + if (color.r > 0) + --color.r; break; case SDLK_S: - ++color.g; + if (color.g < 255) + ++color.g; break; case SDLK_X: - --color.g; + if (color.g > 0) + --color.g; break; case SDLK_D: - ++color.b; + if (color.b < 255) + ++color.b; break; case SDLK_C: - --color.b; + if (color.b > 0) + --color.b; + + case SDLK_F: + if (color.r < 255) + ++color.r; + if (color.g < 255) + ++color.g; + if (color.b < 255) + ++color.b; + break; + + case SDLK_V: + if (color.r > 0) + --color.r; + if (color.g > 0) + --color.g; + if (color.b > 0) + --color.b; break; default: break; } tiled_bg_->setColor(color); - std::cout << (int)color.r << "," << (int)color.g << "," << (int)color.b << std::endl; + std::cout << "#" + << std::hex << std::setw(2) << std::setfill('0') << (int)color.r + << std::setw(2) << std::setfill('0') << (int)color.g + << std::setw(2) << std::setfill('0') << (int)color.b + << std::endl; } - +#endif GlobalEvents::check(event); } }