Skip to content
Snippets Groups Projects
Commit a22343b9 authored by Frederik's avatar Frederik
Browse files

Implement Explosion on unit death

parent dc09feea
Branches
No related tags found
1 merge request!59Implement Explosion on unit death
......@@ -9,7 +9,6 @@
* @authors Lorenz Diel
*/
namespace advanced_wars
{
......@@ -200,6 +199,9 @@ void CombatEngine::handleAttack(std::pair<int, int> tilePos, Level& level)
// attacking->attack(defending);
if (attacking->getHealth() <= 0)
{
level.addEffect(Effect(
attacking.get()->getXPosition(), attacking.get()->getYPosition(),
EffectId::LAND_EXPLOSION, false));
level.removeUnit(selectedUnit);
}
else
......@@ -208,6 +210,9 @@ void CombatEngine::handleAttack(std::pair<int, int> tilePos, Level& level)
}
if (defending->getHealth() <= 0)
{
level.addEffect(Effect(
defending.get()->getXPosition(), defending.get()->getYPosition(),
EffectId::LAND_EXPLOSION, false));
level.removeUnit(targetedUnit);
}
level.setSelectedUnit(-1);
......
......@@ -25,18 +25,18 @@ void Effect::render(Engine& engine, int scale)
m_start = engine.getStage();
}
int step =
engine.getStage() % spritesheet->getEffectTextures().at(static_cast<int>(m_id)).second;
int step = (engine.getStage() - m_start) %
spritesheet->getEffectTextures().at(static_cast<int>(m_id)).second;
SDL_Rect src;
src.x = step * spritesheet->getEffectWidth() + step * spritesheet->getEffectHeight();
src.x = step * spritesheet->getEffectWidth();
src.y = 0;
src.w = spritesheet->getEffectWidth();
src.h = spritesheet->getEffectHeight();
SDL_Rect dest;
dest.x = (m_x * spritesheet->getTileWidth() * scale) - 8;
dest.y = (m_y * spritesheet->getTileHeight() * scale) - 8;
dest.x = (m_x * spritesheet->getTileWidth() * scale) - 8 * scale;
dest.y = (m_y * spritesheet->getTileHeight() * scale) - 16 * scale;
dest.w = spritesheet->getEffectWidth() * scale;
dest.h = spritesheet->getEffectHeight() * scale;
......@@ -47,8 +47,13 @@ void Effect::render(Engine& engine, int scale)
bool Effect::isFinished(Engine& engine)
{
return engine.getStage() - m_start >
engine.getSpritesheet()->getEffectTextures().at(static_cast<int>(m_id)).second &&
if (m_start == 0)
{
return false;
}
return (engine.getStage() - m_start >
engine.getSpritesheet()->getEffectTextures().at(static_cast<int>(m_id)).second) &&
!m_repeat;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment