fix: corregido error al dibujar texturas desde gif. Faltaba activar el blendmode

añadidas mas paletas para el jugador1
cambiada la manera de representar la inmunidad para el jugador
This commit is contained in:
2024-07-25 12:48:36 +02:00
parent 1a00a08300
commit 466e572841
6 changed files with 18 additions and 26 deletions

BIN
data/gfx/player1_pal2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

BIN
data/gfx/player1_pal3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

View File

@@ -38,7 +38,8 @@ Texture::Texture(SDL_Renderer *renderer, std::string path, bool verbose)
surface = loadSurface(path.c_str());
addPalette(path.c_str());
setPaletteColor(0, 0, 0x00000000);
createBlank(renderer, width, height);
createBlank(renderer, width, height, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING);
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
flipSurface();
}
}
@@ -76,7 +77,7 @@ bool Texture::loadFromFile(std::string path, SDL_Renderer *renderer, bool verbos
if (req_format == STBI_rgb)
{
depth = 24;
pitch = 3 * width; // 3 bytes por pixel * pixels per linea
pitch = 3 * width; // 3 bytes por pixel * pixels por linea
pixel_format = SDL_PIXELFORMAT_RGB24;
}
else

View File

@@ -365,6 +365,8 @@ bool Director::setFileList()
asset->add(prefix + "/data/gfx/player1.gif", t_bitmap);
asset->add(prefix + "/data/gfx/player1_pal1.gif", t_bitmap);
asset->add(prefix + "/data/gfx/player1_pal2.gif", t_bitmap);
asset->add(prefix + "/data/gfx/player1_pal3.gif", t_bitmap);
asset->add(prefix + "/data/gfx/player2.gif", t_bitmap);
asset->add(prefix + "/data/gfx/player.ani", t_data);
asset->add(prefix + "/data/gfx/player1_power.gif", t_bitmap);

View File

@@ -455,6 +455,8 @@ void Game::loadMedia()
// Texturas - Player1
Texture *player1 = new Texture(renderer, asset->get("player1.gif"));
player1->addPalette(asset->get("player1_pal1.gif"));
player1->addPalette(asset->get("player1_pal2.gif"));
player1->addPalette(asset->get("player1_pal3.gif"));
player1Textures.push_back(player1);
Texture *player1Power = new Texture(renderer, asset->get("player1_power.gif"));

View File

@@ -155,32 +155,12 @@ void Player::move()
// Pinta el jugador en pantalla
void Player::render()
{
if (isAlive())
{
if (invulnerable)
{
if ((invulnerableCounter % 6) > 2)
{
if (powerUp)
{
powerSprite->render();
}
playerSprite->render();
}
}
else
{
if (powerUp)
{
powerSprite->render();
}
playerSprite->render();
}
}
else
{
playerSprite->render();
}
}
// Establece el estado del jugador cuando camina
@@ -302,6 +282,10 @@ void Player::update()
updateCooldown();
updatePowerUpCounter();
updateInvulnerableCounter();
if (invulnerable)
{
invulnerableCounter % 8 > 3 ? playerSprite->getTexture()->setPalette(coffees) : playerSprite->getTexture()->setPalette(3);
}
}
// Obtiene la puntuación del jugador
@@ -407,6 +391,7 @@ void Player::updateInvulnerableCounter()
{
invulnerable = false;
invulnerableCounter = PLAYER_INVULNERABLE_COUNTER;
playerSprite->getTexture()->setPalette(0);
}
}
}
@@ -464,6 +449,7 @@ void Player::giveExtraHit()
{
coffees++;
}
playerSprite->getTexture()->setPalette(coffees);
}
// Quita el toque extra al jugador
@@ -481,6 +467,7 @@ void Player::removeExtraHit()
invulnerable = true;
invulnerableCounter = PLAYER_INVULNERABLE_COUNTER;
playerSprite->getTexture()->setPalette(coffees);
}
// Habilita la entrada de ordenes