Intro: les tarjetes tenen ara el borde redó
Intro: el fondo pot ser de color, no soles blanc i negre Intro: intro4.png pintava a Bal1 deixant un pixel per pintar en la zona de baix Intro: modificat el blend mode de les tarjetes
This commit is contained in:
@@ -66,8 +66,8 @@ service_menu.bg_color 000000F0
|
||||
service_menu.drop_shadow false
|
||||
|
||||
## --- INTRO ---
|
||||
intro.bg_color 000000
|
||||
intro.card_color FFFFFF
|
||||
intro.bg_color 543149
|
||||
intro.card_color CBDBFC
|
||||
|
||||
## --- DEBUG ---
|
||||
debug.color 00FFFF
|
||||
|
||||
@@ -66,8 +66,8 @@ service_menu.bg_color 000000F0
|
||||
service_menu.drop_shadow false
|
||||
|
||||
## --- INTRO ---
|
||||
intro.bg_color 000000
|
||||
intro.card_color 543149
|
||||
intro.bg_color 543149
|
||||
intro.card_color CBDBFC
|
||||
|
||||
## --- DEBUG ---
|
||||
debug.color 00FFFF
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
@@ -39,7 +39,7 @@ Intro::Intro()
|
||||
|
||||
// Configura el fondo
|
||||
tiled_bg_->setSpeed(0.3f);
|
||||
tiled_bg_->setColor(Color(bg_color_, bg_color_, bg_color_));
|
||||
tiled_bg_->setColor(bg_color_);
|
||||
}
|
||||
|
||||
// Comprueba los eventos
|
||||
@@ -341,23 +341,37 @@ void Intro::initSprites()
|
||||
|
||||
for (int i = 0; i < TOTAL_SPRITES; ++i)
|
||||
{
|
||||
// Crea la textura
|
||||
auto shadow_texture = std::make_shared<Texture>(Screen::get()->getRenderer());
|
||||
shadow_texture->createBlank(SHADOW_SPRITE_WIDTH, SHADOW_SPRITE_HEIGHT, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET);
|
||||
shadow_texture->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||
|
||||
// Apuntamos el renderizador a la textura
|
||||
auto temp = SDL_GetRenderTarget(Screen::get()->getRenderer());
|
||||
shadow_texture->setAsRenderTarget(Screen::get()->getRenderer());
|
||||
|
||||
auto color = param.intro.card_color;
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), color.r, color.g, color.b, color.a);
|
||||
// Limpia la textura
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0, 0, 0, 0);
|
||||
SDL_RenderClear(Screen::get()->getRenderer());
|
||||
|
||||
// Pone color en el marco y el fondo de la textura
|
||||
auto color = param.intro.card_color;
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), color.r, color.g, color.b, color.a);
|
||||
SDL_FRect rect1 = {1, 0, SHADOW_SPRITE_WIDTH - 2, SHADOW_SPRITE_HEIGHT};
|
||||
SDL_FRect rect2 = {0, 1, SHADOW_SPRITE_WIDTH, SHADOW_SPRITE_HEIGHT - 2};
|
||||
SDL_RenderFillRect(Screen::get()->getRenderer(), &rect1);
|
||||
SDL_RenderFillRect(Screen::get()->getRenderer(), &rect2);
|
||||
|
||||
// Copia la textura con el dibujo sobre la textura de color aplicando blend modes
|
||||
SDL_FRect rect = {BORDER / 2, BORDER / 2, SPRITE_WIDTH, SPRITE_HEIGHT};
|
||||
auto inner_texture = Resource::get()->getTexture(TEXTURE_LIST.at(i))->getSDLTexture();
|
||||
SDL_SetTextureBlendMode(inner_texture, SDL_BLENDMODE_MOD);
|
||||
SDL_SetTextureBlendMode(inner_texture, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetTextureAlphaMod(inner_texture, 64);
|
||||
SDL_RenderTexture(Screen::get()->getRenderer(), inner_texture, nullptr, &rect);
|
||||
SDL_SetTextureBlendMode(inner_texture, SDL_BLENDMODE_NONE);
|
||||
SDL_SetTextureAlphaMod(inner_texture, 255);
|
||||
|
||||
// Deja el renderizador como estaba y añade la textura a la lista
|
||||
SDL_SetRenderTarget(Screen::get()->getRenderer(), temp);
|
||||
shadow_textures.push_back(shadow_texture);
|
||||
}
|
||||
@@ -491,19 +505,19 @@ void Intro::updatePostState()
|
||||
tiled_bg_->stopGracefully();
|
||||
|
||||
// Modifica el color del fondo hasta llegar a blanco
|
||||
if (bg_color_ <= 253) // Garantiza que no se exceda de 255 al incrementar de 2 en 2
|
||||
if (bg_color_.r <= 253 || bg_color_.g <= 253 || bg_color_.b <= 253) // Garantiza que no se exceda de 255 al incrementar de 2 en 2
|
||||
{
|
||||
bg_color_ += 2;
|
||||
bg_color_ = bg_color_.lighten(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_color_ = 255; // Asegura que bg_color_ no exceda el límite máximo
|
||||
bg_color_ = Color(255, 255, 255); // Asegura que bg_color_ no exceda el límite máximo
|
||||
}
|
||||
tiled_bg_->setColor(Color(bg_color_, bg_color_, bg_color_));
|
||||
tiled_bg_->setColor(bg_color_);
|
||||
}
|
||||
|
||||
// Cambia de estado si el fondo se ha detenido y recuperado el color
|
||||
if (tiled_bg_->isStopped() && bg_color_ == 255)
|
||||
if (tiled_bg_->isStopped() && bg_color_.r == 255 && bg_color_.g == 255 && bg_color_.b == 255)
|
||||
{
|
||||
post_state_ = IntroPostState::END;
|
||||
state_start_time_ = SDL_GetTicks();
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "path_sprite.h" // Para PathSprite
|
||||
#include "tiled_bg.h" // Para TiledBG
|
||||
#include "writer.h" // Para Writer
|
||||
#include "param.h"
|
||||
|
||||
/*
|
||||
Esta clase gestiona un estado del programa. Se encarga de mostrar la secuencia
|
||||
@@ -51,7 +52,7 @@ private:
|
||||
IntroState state_ = IntroState::SCENES; // Estado principal de la intro
|
||||
IntroPostState post_state_ = IntroPostState::STOP_BG; // Estado POST
|
||||
Uint32 state_start_time_; // Tiempo de inicio del estado actual
|
||||
Uint8 bg_color_ = 112; // Color de fondo
|
||||
Color bg_color_ = param.intro.bg_color; // Color de fondo
|
||||
|
||||
// --- Métodos internos ---
|
||||
void update(); // Actualiza las variables del objeto
|
||||
|
||||
Reference in New Issue
Block a user