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
|
service_menu.drop_shadow false
|
||||||
|
|
||||||
## --- INTRO ---
|
## --- INTRO ---
|
||||||
intro.bg_color 000000
|
intro.bg_color 543149
|
||||||
intro.card_color FFFFFF
|
intro.card_color CBDBFC
|
||||||
|
|
||||||
## --- DEBUG ---
|
## --- DEBUG ---
|
||||||
debug.color 00FFFF
|
debug.color 00FFFF
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ service_menu.bg_color 000000F0
|
|||||||
service_menu.drop_shadow false
|
service_menu.drop_shadow false
|
||||||
|
|
||||||
## --- INTRO ---
|
## --- INTRO ---
|
||||||
intro.bg_color 000000
|
intro.bg_color 543149
|
||||||
intro.card_color 543149
|
intro.card_color CBDBFC
|
||||||
|
|
||||||
## --- DEBUG ---
|
## --- DEBUG ---
|
||||||
debug.color 00FFFF
|
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
|
// Configura el fondo
|
||||||
tiled_bg_->setSpeed(0.3f);
|
tiled_bg_->setSpeed(0.3f);
|
||||||
tiled_bg_->setColor(Color(bg_color_, bg_color_, bg_color_));
|
tiled_bg_->setColor(bg_color_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba los eventos
|
// Comprueba los eventos
|
||||||
@@ -341,23 +341,37 @@ void Intro::initSprites()
|
|||||||
|
|
||||||
for (int i = 0; i < TOTAL_SPRITES; ++i)
|
for (int i = 0; i < TOTAL_SPRITES; ++i)
|
||||||
{
|
{
|
||||||
|
// Crea la textura
|
||||||
auto shadow_texture = std::make_shared<Texture>(Screen::get()->getRenderer());
|
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->createBlank(SHADOW_SPRITE_WIDTH, SHADOW_SPRITE_HEIGHT, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET);
|
||||||
shadow_texture->setBlendMode(SDL_BLENDMODE_BLEND);
|
shadow_texture->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||||
|
|
||||||
|
// Apuntamos el renderizador a la textura
|
||||||
auto temp = SDL_GetRenderTarget(Screen::get()->getRenderer());
|
auto temp = SDL_GetRenderTarget(Screen::get()->getRenderer());
|
||||||
shadow_texture->setAsRenderTarget(Screen::get()->getRenderer());
|
shadow_texture->setAsRenderTarget(Screen::get()->getRenderer());
|
||||||
|
|
||||||
auto color = param.intro.card_color;
|
// Limpia la textura
|
||||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), color.r, color.g, color.b, color.a);
|
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0, 0, 0, 0);
|
||||||
SDL_RenderClear(Screen::get()->getRenderer());
|
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};
|
SDL_FRect rect = {BORDER / 2, BORDER / 2, SPRITE_WIDTH, SPRITE_HEIGHT};
|
||||||
auto inner_texture = Resource::get()->getTexture(TEXTURE_LIST.at(i))->getSDLTexture();
|
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_RenderTexture(Screen::get()->getRenderer(), inner_texture, nullptr, &rect);
|
||||||
SDL_SetTextureBlendMode(inner_texture, SDL_BLENDMODE_NONE);
|
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);
|
SDL_SetRenderTarget(Screen::get()->getRenderer(), temp);
|
||||||
shadow_textures.push_back(shadow_texture);
|
shadow_textures.push_back(shadow_texture);
|
||||||
}
|
}
|
||||||
@@ -491,19 +505,19 @@ void Intro::updatePostState()
|
|||||||
tiled_bg_->stopGracefully();
|
tiled_bg_->stopGracefully();
|
||||||
|
|
||||||
// Modifica el color del fondo hasta llegar a blanco
|
// 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
|
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
|
// 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;
|
post_state_ = IntroPostState::END;
|
||||||
state_start_time_ = SDL_GetTicks();
|
state_start_time_ = SDL_GetTicks();
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "path_sprite.h" // Para PathSprite
|
#include "path_sprite.h" // Para PathSprite
|
||||||
#include "tiled_bg.h" // Para TiledBG
|
#include "tiled_bg.h" // Para TiledBG
|
||||||
#include "writer.h" // Para Writer
|
#include "writer.h" // Para Writer
|
||||||
|
#include "param.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Esta clase gestiona un estado del programa. Se encarga de mostrar la secuencia
|
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
|
IntroState state_ = IntroState::SCENES; // Estado principal de la intro
|
||||||
IntroPostState post_state_ = IntroPostState::STOP_BG; // Estado POST
|
IntroPostState post_state_ = IntroPostState::STOP_BG; // Estado POST
|
||||||
Uint32 state_start_time_; // Tiempo de inicio del estado actual
|
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 ---
|
// --- Métodos internos ---
|
||||||
void update(); // Actualiza las variables del objeto
|
void update(); // Actualiza las variables del objeto
|
||||||
|
|||||||
Reference in New Issue
Block a user