]> git.localhorst.tv Git - l2e.git/commitdiff
added monster's attack animation
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 19 Aug 2012 19:51:56 +0000 (21:51 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 19 Aug 2012 19:56:33 +0000 (21:56 +0200)
src/battle/Monster.h
src/main.cpp
test-data/monster.png

index 50a18076d357dff9fc9050caee4fd078c809c1ee..e4d787e741e87856be256f9f626554b78d49263b 100644 (file)
 
 #include <SDL.h>
 
-namespace graphics { class Sprite; }
+namespace common { class Item; }
+namespace graphics {
+       class Animation;
+       class Sprite;
+}
 
 namespace battle {
 
@@ -42,12 +46,17 @@ public:
        Uint16 ExpReward() const { return expReward; }
        Uint16 GoldReward() const { return goldReward; }
 
-       const /* Item */ void *DropItem() const { return dropItem; }
+       const common::Item *DropItem() const { return dropItem; }
        Uint8 DropChance() const { return dropChance; }
 
        const /* Script */ void *AttackScript() { return attackScript; }
        const /* Script */ void *DefenseScript() { return defenseScript; }
 
+       graphics::Animation *AttackAnimation() { return attackAnimation; }
+       const graphics::Animation *AttackAnimation() const { return attackAnimation; }
+       graphics::Animation *SpellAnimation() { return spellAnimation; }
+       const graphics::Animation *SpellAnimation() const { return spellAnimation; }
+
 // temporary setters until loader is implemented
 public:
        void SetName(const char *n) { name = n; }
@@ -60,13 +69,19 @@ public:
        void SetStats(const Stats &s) { stats = s; }
        void SetReward(Uint16 exp, Uint16 gold) { expReward = exp; goldReward = gold; }
 
+       void SetAttackAnimation(graphics::Animation *a) { attackAnimation = a; }
+       void SetSpellAnimation(graphics::Animation *a) { spellAnimation = a; }
+
 private:
        const char *name;
        graphics::Sprite *sprite;
-       /* Item */ void *dropItem;
+       common::Item *dropItem;
        /* Script */ void *attackScript;
        /* Script */ void *defenseScript;
 
+       graphics::Animation *attackAnimation;
+       graphics::Animation *spellAnimation;
+
        Uint16 maxHealth, health;
        Uint16 maxMana, mana;
 
index 987a985cc74083e76a29953a357b490ea12947fe..1781e5fdc9b1b60b7e68b5bbe5bb749670a43fed 100644 (file)
@@ -89,15 +89,20 @@ int main(int argc, char **argv) {
                heroesLayout.AddPosition(Point<Uint8>(160, 152));
 
                SDL_Surface *monsterImg(IMG_Load("test-data/monster.png"));
-               Sprite dummySprite(monsterImg, 64, 64);
+               Sprite monsterSprite(monsterImg, 64, 64);
                Monster monster;
                monster.SetName("Lizard");
-               monster.SetSprite(&dummySprite);
+               monster.SetSprite(&monsterSprite);
                monster.SetLevel(1);
                monster.SetMaxHealth(8);
                monster.SetHealth(8);
                monster.SetStats(Stats(14, 6, 6, 6, 6, 6, 6));
                monster.SetReward(3, 5);
+               ComplexAnimation monsterAttackAnimation(&monsterSprite, 120);
+               monsterAttackAnimation.AddFrame(0, 1, Vector<int>(16, 0));
+               monsterAttackAnimation.AddFrame(0, 0, Vector<int>(16, 0));
+               monsterAttackAnimation.AddFrame(0, 1, Vector<int>(16, 0));
+               monster.SetAttackAnimation(&monsterAttackAnimation);
 
                SDL_Surface *maximImg(IMG_Load("test-data/maxim.png"));
                Sprite maximSprite(maximImg, 64, 64);
index 94391020a60216841857d4717f52f5d9a430c643..0484303f5f679c6db4832756f5d52474a94d8bff 100644 (file)
Binary files a/test-data/monster.png and b/test-data/monster.png differ