Treballant en la intro
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 52 KiB |
@@ -268,7 +268,8 @@ void Intro::run()
|
||||
// Inicializa las imagens
|
||||
void Intro::initSprites()
|
||||
{
|
||||
const std::array<std::string, 6> BITMAP_LIST = {
|
||||
// Listado de imagenes a usar
|
||||
const std::array<std::string, 6> TEXTURE_LIST = {
|
||||
"intro1.png",
|
||||
"intro2.png",
|
||||
"intro3.png",
|
||||
@@ -276,62 +277,86 @@ void Intro::initSprites()
|
||||
"intro5.png",
|
||||
"intro6.png"};
|
||||
|
||||
auto texture = Resource::get()->getTexture(BITMAP_LIST.front());
|
||||
const int BITMAP_WIDTH = texture->getWidth();
|
||||
const int BITMAP_HEIGHT = texture->getHeight();
|
||||
const int X_DEST = param.game.game_area.center_x - BITMAP_WIDTH / 2;
|
||||
const int Y_DEST = param.game.game_area.first_quarter_y - (BITMAP_HEIGHT / 4);
|
||||
// Constantes
|
||||
auto texture = Resource::get()->getTexture(TEXTURE_LIST.front());
|
||||
const int SPRITE_WIDTH = texture->getWidth();
|
||||
const int SPRITE_HEIGHT = texture->getHeight();
|
||||
const int X_DEST = param.game.game_area.center_x - SPRITE_WIDTH / 2;
|
||||
const int Y_DEST = param.game.game_area.first_quarter_y - (SPRITE_HEIGHT / 4);
|
||||
|
||||
// Inicializa los bitmaps de la intro
|
||||
constexpr int TOTAL_BITMAPS = 6;
|
||||
for (int i = 0; i < TOTAL_BITMAPS; ++i)
|
||||
// Inicializa los sprites de la intro
|
||||
constexpr int TOTAL_SPRITES = 6;
|
||||
for (int i = 0; i < TOTAL_SPRITES; ++i)
|
||||
{
|
||||
auto sprite = std::make_unique<PathSprite>(Resource::get()->getTexture(BITMAP_LIST.at(i)));
|
||||
sprite->setWidth(BITMAP_WIDTH);
|
||||
sprite->setHeight(BITMAP_HEIGHT);
|
||||
sprite->setSpriteClip(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT);
|
||||
auto sprite = std::make_unique<PathSprite>(Resource::get()->getTexture(TEXTURE_LIST.at(i)));
|
||||
sprite->setWidth(SPRITE_WIDTH);
|
||||
sprite->setHeight(SPRITE_HEIGHT);
|
||||
sprite->setSpriteClip(0, 0, SPRITE_WIDTH, SPRITE_HEIGHT);
|
||||
sprites_.push_back(std::move(sprite));
|
||||
}
|
||||
|
||||
constexpr int BORDER = 4;
|
||||
sprites_.at(0)->addPath(-BITMAP_WIDTH - BORDER, X_DEST, PathType::HORIZONTAL, Y_DEST, 100, easeInOutExpo, 0);
|
||||
sprites_.at(0)->addPath(-SPRITE_WIDTH, X_DEST, PathType::HORIZONTAL, Y_DEST, 100, easeInOutExpo, 0);
|
||||
sprites_.at(1)->addPath(param.game.width, X_DEST, PathType::HORIZONTAL, Y_DEST, 100, easeOutBounce, 0);
|
||||
sprites_.at(2)->addPath(-BITMAP_HEIGHT, Y_DEST, PathType::VERTICAL, X_DEST, 40, easeOutQuint, 0);
|
||||
sprites_.at(2)->addPath(-SPRITE_HEIGHT, Y_DEST, PathType::VERTICAL, X_DEST, 40, easeOutQuint, 0);
|
||||
sprites_.at(3)->addPath(param.game.height, Y_DEST, PathType::VERTICAL, X_DEST, 800, easeOutQuint, 0);
|
||||
sprites_.at(4)->addPath(-BITMAP_HEIGHT, Y_DEST, PathType::VERTICAL, X_DEST, 70, easeOutElastic, 0);
|
||||
sprites_.at(4)->addPath(-SPRITE_HEIGHT, Y_DEST, PathType::VERTICAL, X_DEST, 70, easeOutElastic, 0);
|
||||
sprites_.at(5)->addPath(param.game.width, X_DEST, PathType::HORIZONTAL, Y_DEST, 400, easeOutQuint, 0);
|
||||
|
||||
// Crea la textura para la sombra
|
||||
const int S_BITMAP_WIDTH = BITMAP_WIDTH + BORDER;
|
||||
const int S_BITMAP_HEIGHT = BITMAP_HEIGHT + BORDER;
|
||||
// Constantes
|
||||
const int BORDER = 4;
|
||||
const int SHADOW_SPRITE_WIDTH = SPRITE_WIDTH + BORDER;
|
||||
const int SHADOW_SPRITE_HEIGHT = SPRITE_HEIGHT + BORDER;
|
||||
const int S_X_DEST = X_DEST - BORDER / 2;
|
||||
const int S_Y_DEST = Y_DEST - BORDER / 2;;
|
||||
const int S_Y_DEST = Y_DEST - BORDER / 2;
|
||||
;
|
||||
|
||||
auto shadow_texture = std::make_shared<Texture>(Screen::get()->getRenderer());
|
||||
shadow_texture->createBlank(S_BITMAP_WIDTH, S_BITMAP_HEIGHT, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET);
|
||||
shadow_texture->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||
auto temp = SDL_GetRenderTarget(Screen::get()->getRenderer());
|
||||
shadow_texture->setAsRenderTarget(Screen::get()->getRenderer());
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0x54, 0x31, 0x49, 0xFF);
|
||||
SDL_RenderClear(Screen::get()->getRenderer());
|
||||
SDL_SetRenderTarget(Screen::get()->getRenderer(), temp);
|
||||
// Crea las texturas para las sombras
|
||||
std::vector<std::shared_ptr<Texture>> shadow_textures;
|
||||
|
||||
for (int i = 0; i < TOTAL_SPRITES; ++i)
|
||||
{
|
||||
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);
|
||||
|
||||
auto temp = SDL_GetRenderTarget(Screen::get()->getRenderer());
|
||||
shadow_texture->setAsRenderTarget(Screen::get()->getRenderer());
|
||||
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0xFF, 0x00, 0x00, 0xFF);
|
||||
SDL_RenderClear(Screen::get()->getRenderer());
|
||||
|
||||
SDL_Rect rect = {BORDER / 2, BORDER / 2, SPRITE_WIDTH, SPRITE_HEIGHT};
|
||||
auto texture = Resource::get()->getTexture(TEXTURE_LIST.at(i))->getSDLTexture();
|
||||
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_MOD);
|
||||
//SDL_SetTextureAlphaMod(texture, 128);
|
||||
SDL_RenderCopy(Screen::get()->getRenderer(), texture, nullptr, &rect);
|
||||
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_NONE);
|
||||
|
||||
// SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0x54, 0x31, 0x49, 0xFF);
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0xFF, 0xFF, 0xFF, 192);
|
||||
//SDL_RenderFillRect(Screen::get()->getRenderer(), &rect);
|
||||
|
||||
SDL_SetRenderTarget(Screen::get()->getRenderer(), temp);
|
||||
|
||||
shadow_textures.push_back(shadow_texture);
|
||||
}
|
||||
|
||||
// Inicializa los sprites para la sombra
|
||||
for (int i = 0; i < TOTAL_BITMAPS; ++i)
|
||||
for (int i = 0; i < TOTAL_SPRITES; ++i)
|
||||
{
|
||||
auto sprite = std::make_unique<PathSprite>(shadow_texture);
|
||||
sprite->setWidth(S_BITMAP_WIDTH);
|
||||
sprite->setHeight(S_BITMAP_HEIGHT);
|
||||
sprite->setSpriteClip(0, 0, S_BITMAP_WIDTH, S_BITMAP_HEIGHT);
|
||||
auto sprite = std::make_unique<PathSprite>(shadow_textures.at(i));
|
||||
sprite->setWidth(SHADOW_SPRITE_WIDTH);
|
||||
sprite->setHeight(SHADOW_SPRITE_HEIGHT);
|
||||
sprite->setSpriteClip(0, 0, SHADOW_SPRITE_WIDTH, SHADOW_SPRITE_HEIGHT);
|
||||
shadow_sprites_.push_back(std::move(sprite));
|
||||
}
|
||||
|
||||
shadow_sprites_.at(0)->addPath(param.game.height, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 100, easeInOutExpo, 0);
|
||||
shadow_sprites_.at(1)->addPath(-S_BITMAP_HEIGHT, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 100, easeOutBounce, 0);
|
||||
shadow_sprites_.at(2)->addPath(-S_BITMAP_WIDTH, S_X_DEST, PathType::HORIZONTAL, S_Y_DEST, 40, easeOutQuint, 0);
|
||||
shadow_sprites_.at(1)->addPath(-SHADOW_SPRITE_HEIGHT, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 100, easeOutBounce, 0);
|
||||
shadow_sprites_.at(2)->addPath(-SHADOW_SPRITE_WIDTH, S_X_DEST, PathType::HORIZONTAL, S_Y_DEST, 40, easeOutQuint, 0);
|
||||
shadow_sprites_.at(3)->addPath(param.game.width, S_X_DEST, PathType::HORIZONTAL, S_Y_DEST, 800, easeOutQuint, 0);
|
||||
shadow_sprites_.at(4)->addPath(param.game.height, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 70, easeOutElastic, 0);
|
||||
shadow_sprites_.at(5)->addPath(-S_BITMAP_HEIGHT, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 400, easeOutQuint, 0);
|
||||
shadow_sprites_.at(5)->addPath(-SHADOW_SPRITE_HEIGHT, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 400, easeOutQuint, 0);
|
||||
}
|
||||
|
||||
// Inicializa los textos
|
||||
|
||||
Reference in New Issue
Block a user