diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-10-05 21:33:44 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-10-05 21:33:44 +0300 |
commit | e6d7fca349c28eaf98d643325dc99dd9d3a53568 (patch) | |
tree | 84ac779d45a0094dde45d9a05039db41d568adbf /src/resources | |
parent | a48638c5e9bfc04876661ea938eed4a3ab9e5c42 (diff) | |
download | manaplus-e6d7fca349c28eaf98d643325dc99dd9d3a53568.tar.gz manaplus-e6d7fca349c28eaf98d643325dc99dd9d3a53568.tar.bz2 manaplus-e6d7fca349c28eaf98d643325dc99dd9d3a53568.tar.xz manaplus-e6d7fca349c28eaf98d643325dc99dd9d3a53568.zip |
first part for adding mobs particle effects.
Based on mana commit b35aef2d924f03d85eb44a2465be5a745444eafd
by Yohann Ferreira
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/beinginfo.cpp | 11 | ||||
-rw-r--r-- | src/resources/beinginfo.h | 22 | ||||
-rw-r--r-- | src/resources/monsterdb.cpp | 12 |
3 files changed, 22 insertions, 23 deletions
diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp index 5ffdb887d..992a43b5b 100644 --- a/src/resources/beinginfo.cpp +++ b/src/resources/beinginfo.cpp @@ -30,7 +30,7 @@ #include "debug.h" BeingInfo *BeingInfo::unknown = nullptr; -Attack *BeingInfo::empty = new Attack(SpriteAction::ATTACK, "", ""); +Attack *BeingInfo::empty = new Attack(SpriteAction::ATTACK, -1, std::string()); BeingInfo::BeingInfo() : mName(_("unnamed")), @@ -106,21 +106,20 @@ const std::string &BeingInfo::getSound(const SoundEvent event) const i->second->at(rand() % i->second->size()); } -const Attack *BeingInfo::getAttack(const int type) const +const Attack *BeingInfo::getAttack(const int id) const { - const Attacks::const_iterator i = mAttacks.find(type); + const Attacks::const_iterator i = mAttacks.find(id); return (i == mAttacks.end()) ? empty : (*i).second; } -void BeingInfo::addAttack(const int id, std::string action, - const std::string &particleEffect, +void BeingInfo::addAttack(const int id, std::string action, const int effectId, const std::string &missileParticle) { if (mAttacks[id]) delete mAttacks[id]; - mAttacks[id] = new Attack(action, particleEffect, missileParticle); + mAttacks[id] = new Attack(action, effectId, missileParticle); } void BeingInfo::clear() diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h index ccd9ccf21..ceaed6c40 100644 --- a/src/resources/beinginfo.h +++ b/src/resources/beinginfo.h @@ -30,15 +30,15 @@ struct Attack final { - std::string action; - std::string particleEffect; - std::string missileParticle; - - Attack(std::string action0, std::string particleEffect0, - std::string missileParticle0) : - action(action0), - particleEffect(particleEffect0), - missileParticle(missileParticle0) + std::string mAction; + int mEffectId; + std::string mMissileParticle; + + Attack(const std::string &action, const int effectId, + const std::string &missileParticle) : + mAction(action), + mEffectId(effectId), + mMissileParticle(missileParticle) { } }; @@ -101,10 +101,10 @@ class BeingInfo final const std::string &getSound(const SoundEvent event) const; void addAttack(const int id, std::string action, - const std::string &particleEffect, + const int effectId, const std::string &missileParticle); - const Attack *getAttack(const int type) const; + const Attack *getAttack(const int id) const; void setWalkMask(const unsigned char mask) { mWalkMask = mask; } diff --git a/src/resources/monsterdb.cpp b/src/resources/monsterdb.cpp index a7976b97d..f6352d8ec 100644 --- a/src/resources/monsterdb.cpp +++ b/src/resources/monsterdb.cpp @@ -190,15 +190,15 @@ void MonsterDB::load() else if (xmlNameEqual(spriteNode, "attack")) { const int id = XML::getProperty(spriteNode, "id", 0); - const std::string particleEffect = XML::getProperty( - spriteNode, "particle-effect", ""); - const std::string spriteAction = XML::getProperty(spriteNode, - "action", - "attack"); + const int effectId = XML::getProperty( + spriteNode, "effect-id", -1); + const std::string spriteAction = XML::getProperty( + spriteNode, "action", "attack"); + const std::string missileParticle = XML::getProperty( spriteNode, "missile-particle", ""); currentInfo->addAttack(id, spriteAction, - particleEffect, missileParticle); + effectId, missileParticle); } else if (xmlNameEqual(spriteNode, "particlefx")) { |