mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-24 08:32:34 +02:00
Fixes 1892 - properly handle animation of dying clones
This commit is contained in:
parent
bfd3aab78d
commit
a5c3ed080f
@ -150,7 +150,9 @@ CDefenceAnimation::CDefenceAnimation(StackAttackedInfo _attackedInfo, CBattleInt
|
||||
: CBattleStackAnimation(_owner, _attackedInfo.defender),
|
||||
attacker(_attackedInfo.attacker), rangedAttack(_attackedInfo.indirectAttack),
|
||||
killed(_attackedInfo.killed)
|
||||
{}
|
||||
{
|
||||
logAnim->debugStream() << "Created defence anim for " << _attackedInfo.defender->getName();
|
||||
}
|
||||
|
||||
bool CDefenceAnimation::init()
|
||||
{
|
||||
@ -364,7 +366,9 @@ bool CMeleeAttackAnimation::init()
|
||||
|
||||
CMeleeAttackAnimation::CMeleeAttackAnimation(CBattleInterface * _owner, const CStack * attacker, BattleHex _dest, const CStack * _attacked)
|
||||
: CAttackAnimation(_owner, attacker, _dest, _attacked)
|
||||
{}
|
||||
{
|
||||
logAnim->debugStream() << "Created melee attack anim for " << attacker->getName();
|
||||
}
|
||||
|
||||
void CMeleeAttackAnimation::endAnim()
|
||||
{
|
||||
@ -521,11 +525,14 @@ CMovementAnimation::CMovementAnimation(CBattleInterface *_owner, const CStack *_
|
||||
progress(0.0),
|
||||
nextHex(destTiles.front())
|
||||
{
|
||||
logAnim->debugStream() << "Created movement anim for " << stack->getName();
|
||||
}
|
||||
|
||||
CMovementEndAnimation::CMovementEndAnimation(CBattleInterface * _owner, const CStack * _stack, BattleHex destTile)
|
||||
: CBattleStackAnimation(_owner, _stack), destinationTile(destTile)
|
||||
{}
|
||||
{
|
||||
logAnim->debugStream() << "Created movement end anim for " << stack->getName();
|
||||
}
|
||||
|
||||
bool CMovementEndAnimation::init()
|
||||
{
|
||||
@ -562,7 +569,9 @@ void CMovementEndAnimation::endAnim()
|
||||
|
||||
CMovementStartAnimation::CMovementStartAnimation(CBattleInterface * _owner, const CStack * _stack)
|
||||
: CBattleStackAnimation(_owner, _stack)
|
||||
{}
|
||||
{
|
||||
logAnim->debugStream() << "Created movement start anim for " << stack->getName();
|
||||
}
|
||||
|
||||
bool CMovementStartAnimation::init()
|
||||
{
|
||||
@ -592,7 +601,9 @@ void CMovementStartAnimation::endAnim()
|
||||
|
||||
CReverseAnimation::CReverseAnimation(CBattleInterface * _owner, const CStack * stack, BattleHex dest, bool _priority)
|
||||
: CBattleStackAnimation(_owner, stack), hex(dest), priority(_priority)
|
||||
{}
|
||||
{
|
||||
logAnim->debugStream() << "Created reverse anim for " << stack->getName();
|
||||
}
|
||||
|
||||
bool CReverseAnimation::init()
|
||||
{
|
||||
@ -654,7 +665,9 @@ void CReverseAnimation::setupSecondPart()
|
||||
|
||||
CShootingAnimation::CShootingAnimation(CBattleInterface * _owner, const CStack * attacker, BattleHex _dest, const CStack * _attacked, bool _catapult, int _catapultDmg)
|
||||
: CAttackAnimation(_owner, attacker, _dest, _attacked), catapultDamage(_catapultDmg)
|
||||
{}
|
||||
{
|
||||
logAnim->debugStream() << "Created shooting anim for " << stack->getName();
|
||||
}
|
||||
|
||||
bool CShootingAnimation::init()
|
||||
{
|
||||
|
@ -1036,8 +1036,9 @@ void CBattleInterface::stacksAreAttacked(std::vector<StackAttackedInfo> attacked
|
||||
{
|
||||
for (auto & attackedInfo : attackedInfos)
|
||||
{
|
||||
if (!attackedInfo.cloneKilled) //FIXME: play dead animation for cloned creature before it vanishes
|
||||
//if (!attackedInfo.cloneKilled) //FIXME: play dead animation for cloned creature before it vanishes
|
||||
addNewAnim(new CDefenceAnimation(attackedInfo, this));
|
||||
|
||||
if (attackedInfo.rebirth)
|
||||
{
|
||||
displayEffect(50, attackedInfo.defender->position); //TODO: play reverse death animation
|
||||
@ -1052,12 +1053,6 @@ void CBattleInterface::stacksAreAttacked(std::vector<StackAttackedInfo> attacked
|
||||
killed += attackedInfo.amountKilled;
|
||||
damage += attackedInfo.dmg;
|
||||
}
|
||||
if (attackedInfos.front().cloneKilled) //FIXME: cloned stack is already removed
|
||||
return;
|
||||
if (targets > 1)
|
||||
printConsoleAttacked(attackedInfos.front().defender, damage, killed, attackedInfos.front().attacker, true); //creatures perish
|
||||
else
|
||||
printConsoleAttacked(attackedInfos.front().defender, damage, killed, attackedInfos.front().attacker, false);
|
||||
|
||||
for(auto & attackedInfo : attackedInfos)
|
||||
{
|
||||
@ -1066,6 +1061,15 @@ void CBattleInterface::stacksAreAttacked(std::vector<StackAttackedInfo> attacked
|
||||
if (attackedInfo.cloneKilled)
|
||||
stackRemoved(attackedInfo.defender->ID);
|
||||
}
|
||||
|
||||
/* if (attackedInfos.front().cloneKilled) //FIXME: cloned stack is already removed
|
||||
return;*/
|
||||
|
||||
if (targets > 1)
|
||||
printConsoleAttacked(attackedInfos.front().defender, damage, killed, attackedInfos.front().attacker, true); //creatures perish
|
||||
else
|
||||
printConsoleAttacked(attackedInfos.front().defender, damage, killed, attackedInfos.front().attacker, false);
|
||||
|
||||
}
|
||||
|
||||
void CBattleInterface::stackAttacking( const CStack * attacker, BattleHex dest, const CStack * attacked, bool shooting )
|
||||
|
Loading…
Reference in New Issue
Block a user