]> git.localhorst.tv Git - l2e.git/commitdiff
interpret Monster's meleeAnimation property
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Wed, 29 Aug 2012 21:32:48 +0000 (23:32 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Wed, 29 Aug 2012 21:32:48 +0000 (23:32 +0200)
src/loader/Interpreter.cpp
test-data/test.l2s

index 0ff877688d1231c8794b371319444547234f629c..65db6a00400bccb30329fa40e3325d97a6ca33cc 100644 (file)
@@ -268,9 +268,10 @@ void Interpreter::ReadObject(const Definition &dfn) {
                ReadMonster(monsters.back(), *dfn.GetProperties());
                parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, MONSTER, monsters.size() - 1)));
        } else if (dfn.TypeName() == "Sprite") {
+               int index(sprites.size());
                sprites.push_back(Sprite());
                ReadSprite(sprites.back(), *dfn.GetProperties());
-               parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, SPRITE, sprites.size() - 1)));
+               parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, SPRITE, index)));
        } else {
                throw Error("unhandled object type: " + dfn.TypeName());
        }
@@ -368,6 +369,8 @@ void Interpreter::ReadMonster(Monster &m, const PropertyList &props) {
                        m.SetStats(stats);
                } else if (i->first == "attackAnimation") {
                        m.SetAttackAnimation(GetAnimation(*i->second));
+               } else if (i->first == "meleeAnimation") {
+                       m.SetMeleeAnimation(GetAnimation(*i->second));
                } else {
                        throw Error("unknown Monster property: " + i->first);
                }
index 31c4ace27abea7f986edc6222c8c28d566d4b40e..74e71cd9908a49182533114dfa41048cc6c376c5 100644 (file)
@@ -1,14 +1,17 @@
 Number frameTime 33
 Number twoFramesTime 66
-Number fiveFramesTime 165
+Number fourFramesTime 132
+Number fiveFramesTime 165 // darn, i really need to implement expressions
+
+Sprite lizardSprite {
+       // using pathes relative to project root until path resolution is implemented
+       image: "test-data/monster.png",
+       size: <64,64>
+}
 
 export Monster lizard {
        name: "Lizard",
-       sprite: Sprite {
-               // using pathes relative to project root until path resolution is implemented
-               image: "test-data/monster.png",
-               size: <64,64>
-       },
+       sprite: lizardSprite,
        level: 1,
        maxHealth: 8,
        health: 8,
@@ -21,7 +24,18 @@ export Monster lizard {
                gut:  6,
                mgr:  6
        },
-       attackAnimation: SimpleAnimation {
+       attackAnimation: ComplexAnimation {
+               sprite: lizardSprite,
+               frametime: fourFramesTime,
+               repeat: false,
+               frames: [
+                       { column: 0, row: 1, disposition: < 0, 16> },
+                       { column: 0, row: 0, disposition: < 0, 16> },
+                       { column: 0, row: 1, disposition: < 0, 16> },
+                       { column: 0, row: 0, disposition: < 0, 16> }
+               ]
+       },
+       meleeAnimation: SimpleAnimation {
                sprite: Sprite {
                        image: "test-data/attack-monster.png",
                        size: <96,64>