X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fbattle%2Fstates%2FPerformAttacks.cpp;h=10fb8bb11294c6f0f517d1def1efd528cbd86cbb;hb=d4609ba1798d82cce128b5985d60cb212b760246;hp=6baa1dae0fe700d64d70bab13141d7d857179a0c;hpb=a01c2f05b5a6493d7fe097eb15e5337a095992ae;p=l2e.git diff --git a/src/battle/states/PerformAttacks.cpp b/src/battle/states/PerformAttacks.cpp index 6baa1da..10fb8bb 100644 --- a/src/battle/states/PerformAttacks.cpp +++ b/src/battle/states/PerformAttacks.cpp @@ -39,6 +39,7 @@ void PerformAttacks::EnterState(Application &c, SDL_Surface *screen) { } void PerformAttacks::ExitState(Application &c, SDL_Surface *screen) { + battle->ClearAllAttacks(); ctrl = 0; } @@ -60,9 +61,9 @@ void PerformAttacks::HandleEvents(const Input &input) { CheckAnimations(); if (HasAnimationsRunning()) return; ResetAnimation(); + battle->ApplyDamage(); battle->NextAttack(); if (battle->AttacksFinished()) { - battle->ClearAllAttacks(); ctrl->PopState(); return; } @@ -70,9 +71,11 @@ void PerformAttacks::HandleEvents(const Input &input) { battle->CalculateDamage(); if (battle->CurrentAttack().isMonster) { - const Monster &monster(battle->MonsterAt(battle->CurrentAttack().index)); + Monster &monster(battle->MonsterAt(battle->CurrentAttack().index)); titleBarText = monster.Name(); - moveAnimation = 0; + moveAnimation = monster.AttackAnimation(); + targetAnimation = monster.MeleeAnimation(); + // TODO: add number animations } else { Hero &hero(battle->HeroAt(battle->CurrentAttack().index)); const AttackChoice &ac(battle->AttackChoiceAt(battle->CurrentAttack().index)); @@ -226,8 +229,7 @@ void PerformAttacks::RenderNumbers(SDL_Surface *screen, const Vector &offse void PerformAttacks::RenderTargetAnimation(SDL_Surface *screen, const geometry::Vector &offset) const { if (!targetAnimation || !targetAnimation->Running()) return; - if (battle->CurrentAttack().isMonster) return; // no monsters for now - const TargetSelection &ts(battle->AttackChoiceAt(battle->CurrentAttack().index).Selection()); + const TargetSelection &ts(battle->CurrentAttackAttackChoice().Selection()); const vector > &positions(ts.TargetsHeroes() ? battle->HeroesPositions() : battle->MonsterPositions()); for (vector >::size_type i(0), end(positions.size()); i < end; ++i) { if (ts.IsSelected(i)) {