Trabajando en el ending
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -138,7 +138,14 @@ void Sprite::setSpriteClip(SDL_Rect rect)
|
|||||||
// Establece el valor de la variable
|
// Establece el valor de la variable
|
||||||
void Sprite::setSpriteClip(int x, int y, int w, int h)
|
void Sprite::setSpriteClip(int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
|
if (w == -1 || h == -1)
|
||||||
|
{
|
||||||
|
spriteClip = {x, y, this->w, this->h};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
spriteClip = {x, y, w, h};
|
spriteClip = {x, y, w, h};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Obten el valor de la variable
|
// Obten el valor de la variable
|
||||||
|
|||||||
@@ -199,3 +199,9 @@ bool Texture::reLoad()
|
|||||||
{
|
{
|
||||||
return loadFromFile(path, renderer);
|
return loadFromFile(path, renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Obtiene la textura
|
||||||
|
SDL_Texture *Texture::getSDLTexture()
|
||||||
|
{
|
||||||
|
return texture;
|
||||||
|
}
|
||||||
@@ -58,6 +58,9 @@ public:
|
|||||||
|
|
||||||
// Recarga la textura
|
// Recarga la textura
|
||||||
bool reLoad();
|
bool reLoad();
|
||||||
|
|
||||||
|
// Obtiene la textura
|
||||||
|
SDL_Texture *getSDLTexture();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -69,6 +69,14 @@ Ending::~Ending()
|
|||||||
delete sprite;
|
delete sprite;
|
||||||
SDL_DestroyTexture(canvasTexture);
|
SDL_DestroyTexture(canvasTexture);
|
||||||
SDL_DestroyTexture(coverTexture);
|
SDL_DestroyTexture(coverTexture);
|
||||||
|
|
||||||
|
for (auto st : spriteTexts)
|
||||||
|
{
|
||||||
|
delete st.coverTexture;
|
||||||
|
delete st.sprite;
|
||||||
|
delete st.texture;
|
||||||
|
}
|
||||||
|
spriteTexts.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza el objeto
|
// Actualiza el objeto
|
||||||
@@ -100,13 +108,26 @@ void Ending::render()
|
|||||||
screen->start();
|
screen->start();
|
||||||
|
|
||||||
// Limpia la pantalla
|
// Limpia la pantalla
|
||||||
screen->clean();
|
screen->clean(stringToColor(options->palette, "green"));
|
||||||
|
|
||||||
// Dibuja la canvasTexture
|
// Dibuja la canvasTexture
|
||||||
SDL_RenderCopy(renderer, canvasTexture, nullptr, nullptr);
|
// SDL_RenderCopy(renderer, canvasTexture, nullptr, nullptr);
|
||||||
|
|
||||||
// Dibuja la coverTexture
|
// Dibuja la coverTexture
|
||||||
renderCoverTexture();
|
// renderCoverTexture();
|
||||||
|
|
||||||
|
if (scene == 0)
|
||||||
|
{
|
||||||
|
spriteTexts.at(0).sprite->render();
|
||||||
|
spriteTexts.at(1).sprite->render();
|
||||||
|
spriteTexts.at(2).sprite->render();
|
||||||
|
spriteTexts.at(3).sprite->render();
|
||||||
|
|
||||||
|
spriteTexts.at(0).coverSprite->render();
|
||||||
|
spriteTexts.at(1).coverSprite->render();
|
||||||
|
spriteTexts.at(2).coverSprite->render();
|
||||||
|
spriteTexts.at(3).coverSprite->render();
|
||||||
|
}
|
||||||
|
|
||||||
// Vuelca el contenido del renderizador en pantalla
|
// Vuelca el contenido del renderizador en pantalla
|
||||||
screen->blit();
|
screen->blit();
|
||||||
@@ -239,14 +260,54 @@ void Ending::iniTexts()
|
|||||||
endingTexture_t st;
|
endingTexture_t st;
|
||||||
const int width = text->lenght(t.caption, 1) + 2 + 2;
|
const int width = text->lenght(t.caption, 1) + 2 + 2;
|
||||||
const int height = text->getCharacterSize() + 2 + 2;
|
const int height = text->getCharacterSize() + 2 + 2;
|
||||||
const color_t c = stringToColor(options->palette, "black");
|
color_t c = stringToColor(options->palette, "black");
|
||||||
|
|
||||||
|
// Crea la texture
|
||||||
st.texture = new Texture(renderer);
|
st.texture = new Texture(renderer);
|
||||||
st.texture->createBlank(renderer, width, height, SDL_TEXTUREACCESS_TARGET);
|
st.texture->createBlank(renderer, width, height, SDL_TEXTUREACCESS_TARGET);
|
||||||
st.texture->setAsRenderTarget(renderer);
|
st.texture->setAsRenderTarget(renderer);
|
||||||
st.texture->setBlendMode(SDL_BLENDMODE_BLEND);
|
st.texture->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||||
text->writeDX(TXT_STROKE, 2, 2, t.caption, 1, c, 2, c);
|
text->writeDX(TXT_STROKE, 2, 2, t.caption, 1, c, 2, c);
|
||||||
|
|
||||||
|
// Crea el sprite
|
||||||
st.sprite = new Sprite({0, 0, st.texture->getWidth(), st.texture->getHeight()}, st.texture, renderer);
|
st.sprite = new Sprite({0, 0, st.texture->getWidth(), st.texture->getHeight()}, st.texture, renderer);
|
||||||
st.sprite->setPos({(GAMECANVAS_WIDTH - st.texture->getWidth()) / 2, t.pos});
|
st.sprite->setPos({(GAMECANVAS_WIDTH - st.texture->getWidth()) / 2, t.pos});
|
||||||
|
|
||||||
|
// Crea la coverTexture
|
||||||
|
st.coverTexture = new Texture(renderer);
|
||||||
|
st.coverTexture->createBlank(renderer, width, height + 8, SDL_TEXTUREACCESS_TARGET);
|
||||||
|
st.coverTexture->setAsRenderTarget(renderer);
|
||||||
|
st.coverTexture->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||||
|
|
||||||
|
// Rellena la coverTexture con color transparente
|
||||||
|
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
|
||||||
|
SDL_RenderClear(renderer);
|
||||||
|
|
||||||
|
// Los primeros 8 pixels crea una malla
|
||||||
|
c = stringToColor(options->palette, "red");
|
||||||
|
SDL_SetRenderDrawColor(renderer, c.r, c.g, c.b, 0xFF);
|
||||||
|
for (int i = 0; i < width; i += 2)
|
||||||
|
{
|
||||||
|
SDL_RenderDrawPoint(renderer, i, 0);
|
||||||
|
SDL_RenderDrawPoint(renderer, i, 2);
|
||||||
|
SDL_RenderDrawPoint(renderer, i, 4);
|
||||||
|
SDL_RenderDrawPoint(renderer, i, 6);
|
||||||
|
|
||||||
|
SDL_RenderDrawPoint(renderer, i + 1, 5);
|
||||||
|
SDL_RenderDrawPoint(renderer, i + 1, 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
// El resto se rellena de color sólido
|
||||||
|
SDL_Rect rect = {0, 8, width, height};
|
||||||
|
c = stringToColor(options->palette, "cyan");
|
||||||
|
SDL_SetRenderDrawColor(renderer, c.r, c.g, c.b, 0xFF);
|
||||||
|
SDL_RenderFillRect(renderer, &rect);
|
||||||
|
|
||||||
|
// Crea el sprite
|
||||||
|
st.coverSprite = new Sprite({0, 0, st.coverTexture->getWidth(), st.coverTexture->getHeight() - 8}, st.coverTexture, renderer);
|
||||||
|
st.coverSprite->setPos({(GAMECANVAS_WIDTH - st.coverTexture->getWidth()) / 2, t.pos});
|
||||||
|
st.coverSprite->setSpriteClip(0, 8, -1, -1);
|
||||||
|
|
||||||
spriteTexts.push_back(st);
|
spriteTexts.push_back(st);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -439,6 +500,19 @@ void Ending::updateCounter()
|
|||||||
if (counterEnabled)
|
if (counterEnabled)
|
||||||
{
|
{
|
||||||
counter++;
|
counter++;
|
||||||
|
|
||||||
|
{
|
||||||
|
/*for (auto st : spriteTexts)
|
||||||
|
{
|
||||||
|
const int height = st.sprite->getHeight() + 8;
|
||||||
|
const int width = st.sprite->getWidth();
|
||||||
|
const int offset = std::min(counter / 8, height / 2);
|
||||||
|
SDL_Rect srcRect = {0, 0, width, height - (offset * 2)};
|
||||||
|
SDL_Rect dstRect = {0, (offset * 2) - 8, width, height - (offset * 2)};
|
||||||
|
st.texture->setAsRenderTarget(renderer);
|
||||||
|
SDL_RenderCopy(renderer, st.coverTexture->getSDLTexture(), &srcRect, &dstRect);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ private:
|
|||||||
{
|
{
|
||||||
Texture *texture;
|
Texture *texture;
|
||||||
Sprite *sprite;
|
Sprite *sprite;
|
||||||
|
Texture *coverTexture;
|
||||||
|
Sprite *coverSprite;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct textAndPos_t
|
struct textAndPos_t
|
||||||
|
|||||||
Reference in New Issue
Block a user