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());
}
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);
}
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,
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>