]> git.localhorst.tv Git - l2e.git/commitdiff
put animations in place
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Mon, 20 Aug 2012 21:56:22 +0000 (23:56 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Mon, 20 Aug 2012 21:56:22 +0000 (23:56 +0200)
src/battle/BattleState.cpp
src/battle/states/PerformAttacks.cpp

index bf2d2c1ff1c6d084cef55c91fdc6b7b038a588ad..fd4be082847813a5c41b16d1dd1155f54b64a572 100644 (file)
@@ -449,10 +449,8 @@ void BattleState::RenderMonsters(SDL_Surface *screen, const Vector<int> &offset)
        for (vector<Monster>::size_type i(0), end(monsters.size()); i < end; ++i) {
                if (MonsterPositionOccupied(i)) {
                        // TODO: better solution for running animations
-                       if (monsters[i].AttackAnimation() && monsters[i].AttackAnimation()->Running()) {
-                               monsters[i].AttackAnimation()->DrawCenter(screen, monsterPositions[i] + offset);
-                       } else if (monsters[i].SpellAnimation() && monsters[i].SpellAnimation()->Running()) {
-                               monsters[i].SpellAnimation()->DrawCenter(screen, monsterPositions[i] + offset);
+                       if (monsters[i].GetAnimation().Running()) {
+                               monsters[i].GetAnimation().DrawCenter(screen, monsterPositions[i] + offset);
                        } else {
                                monsters[i].Sprite()->DrawCenter(screen, monsterPositions[i] + offset);
                        }
@@ -463,10 +461,8 @@ void BattleState::RenderMonsters(SDL_Surface *screen, const Vector<int> &offset)
 void BattleState::RenderHeroes(SDL_Surface *screen, const Vector<int> &offset) {
        assert(screen);
        for (int i(0); i < numHeroes; ++i) {
-               if (heroes[i].AttackAnimation() && heroes[i].AttackAnimation()->Running()) {
-                       heroes[i].AttackAnimation()->DrawCenter(screen, heroesPositions[i] + offset);
-               } else if (heroes[i].SpellAnimation() && heroes[i].SpellAnimation()->Running()) {
-                       heroes[i].SpellAnimation()->DrawCenter(screen, heroesPositions[i] + offset);
+               if (heroes[i].GetAnimation().Running()) {
+                       heroes[i].GetAnimation().DrawCenter(screen, heroesPositions[i] + offset);
                } else {
                        int row(heroes[i].Health() > 0 ? 0 : 2);
                        heroes[i].Sprite()->DrawCenter(screen, heroesPositions[i] + offset, 1, row);
index 15c4feba5ab0633cd0acf638ebc1aa0ea2b28d3e..05227e6e4065f512aef1af9bb7cabfd053076bb2 100644 (file)
@@ -121,11 +121,17 @@ void PerformAttacks::HandleEvents(const Input &input) {
                                moveAnimation.Clear();
                                break;
                }
-               hero.SetAnimation(moveAnimation);
        }
 
        if (titleBarText) titleBarTimer = GraphicsTimers().StartCountdown(850);
-       if (moveAnimation.Valid()) moveAnimation.Start(*this);
+       if (moveAnimation.Valid()) {
+               moveAnimation.Start(*this);
+               if (battle->CurrentAttack().isMonster) {
+                       battle->MonsterAt(battle->CurrentAttack().index).SetAnimation(moveAnimation);
+               } else {
+                       battle->HeroAt(battle->CurrentAttack().index).SetAnimation(moveAnimation);
+               }
+       }
        if (targetAnimation.Valid()) {
                targetAnimationTimer = GraphicsTimers().StartCountdown(150);
        } else {