diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-11-14 18:02:03 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-11-14 18:02:03 +0300 |
commit | 4edbdf124303f0e7c229f43a5054755e112ff6b4 (patch) | |
tree | 54d355cb568b07108c08db0f712c072d60c1a7ce | |
parent | 15424641cca695650f4b56c37711c12c81cf2c32 (diff) | |
download | mv-4edbdf124303f0e7c229f43a5054755e112ff6b4.tar.gz mv-4edbdf124303f0e7c229f43a5054755e112ff6b4.tar.bz2 mv-4edbdf124303f0e7c229f43a5054755e112ff6b4.tar.xz mv-4edbdf124303f0e7c229f43a5054755e112ff6b4.zip |
Fix attack sprite actions. Add ride attack action.
-rw-r--r-- | src/being/being.cpp | 7 | ||||
-rw-r--r-- | src/being/being.h | 8 | ||||
-rw-r--r-- | src/resources/attack.h | 15 | ||||
-rw-r--r-- | src/resources/beingcommon.cpp | 15 | ||||
-rw-r--r-- | src/resources/beinginfo.cpp | 19 | ||||
-rw-r--r-- | src/resources/beinginfo.h | 1 |
6 files changed, 50 insertions, 15 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp index dd06c918d..5a4da79fc 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -1309,7 +1309,7 @@ std::string Being::getMoveAction() const std::string Being::getWeaponAttackAction(const ItemInfo *const weapon) const { if (!weapon) - return SpriteAction::ATTACK; + return getAttackAction(); if (mHorseId != 0) return weapon->getRideAttackAction(); @@ -1327,8 +1327,10 @@ std::string Being::getWeaponAttackAction(const ItemInfo *const weapon) const std::string Being::getAttackAction(const Attack *const attack1) const { if (!attack1) - return SpriteAction::ATTACK; + return getAttackAction(); + if (mHorseId != 0) + return attack1->mRideAction; if (mMap) { const unsigned char mask = mMap->getBlockMask(mX, mY); @@ -1356,6 +1358,7 @@ std::string Being::getAttackAction(const Attack *const attack1) const return SpriteAction::action; \ } +getSpriteAction(Attack, ATTACK) getSpriteAction(Dead, DEAD) getSpriteAction(Spawn, SPAWN) getSpriteAction(Cast, CAST) diff --git a/src/being/being.h b/src/being/being.h index 9c9fd6ade..a31f39be5 100644 --- a/src/being/being.h +++ b/src/being/being.h @@ -607,9 +607,13 @@ class Being notfinal : public ActorSprite, std::string getSpawnAction() const A_WARN_UNUSED; - std::string getWeaponAttackAction(const ItemInfo *const weapon) const; + std::string getWeaponAttackAction(const ItemInfo *const weapon) const + A_WARN_UNUSED; - std::string getAttackAction(const Attack *const attack) const; + std::string getAttackAction() const A_WARN_UNUSED; + + std::string getAttackAction(const Attack *const attack) const + A_WARN_UNUSED; /** * Whether or not this player is a GM. diff --git a/src/resources/attack.h b/src/resources/attack.h index d904b40b5..578818db6 100644 --- a/src/resources/attack.h +++ b/src/resources/attack.h @@ -32,19 +32,26 @@ struct Attack final std::string mAction; std::string mSkyAction; std::string mWaterAction; + std::string mRideAction; int mEffectId; int mHitEffectId; int mCriticalHitEffectId; int mMissEffectId; std::string mMissileParticle; - Attack(const std::string &action, const std::string &skyAction, - const std::string &waterAction, const int effectId, - const int hitEffectId, const int criticalHitEffectId, - const int missEffectId, const std::string &missileParticle) : + Attack(const std::string &action, + const std::string &skyAction, + const std::string &waterAction, + const std::string &rideAction, + const int effectId, + const int hitEffectId, + const int criticalHitEffectId, + const int missEffectId, + const std::string &missileParticle) : mAction(action), mSkyAction(skyAction), mWaterAction(waterAction), + mRideAction(rideAction), mEffectId(effectId), mHitEffectId(hitEffectId), mCriticalHitEffectId(criticalHitEffectId), diff --git a/src/resources/beingcommon.cpp b/src/resources/beingcommon.cpp index 6c64a162d..3025e658c 100644 --- a/src/resources/beingcommon.cpp +++ b/src/resources/beingcommon.cpp @@ -188,13 +188,22 @@ bool BeingCommon::readObjectNodes(XmlNodePtrConst &spriteNode, "skyaction", "skyattack"); const std::string waterSpriteAction = XML::getProperty(spriteNode, "wateraction", "waterattack"); + const std::string rideSpriteAction = XML::getProperty(spriteNode, + "rideaction", "rideattack"); const std::string missileParticle = XML::getProperty(spriteNode, "missile-particle", ""); - currentInfo->addAttack(attackId, spriteAction, skySpriteAction, - waterSpriteAction, effectId, hitEffectId, - criticalHitEffectId, missEffectId, missileParticle); + currentInfo->addAttack(attackId, + spriteAction, + skySpriteAction, + waterSpriteAction, + rideSpriteAction, + effectId, + hitEffectId, + criticalHitEffectId, + missEffectId, + missileParticle); return true; } else if (xmlNameEqual(spriteNode, "particlefx")) diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp index 79969e71e..b857335ba 100644 --- a/src/resources/beinginfo.cpp +++ b/src/resources/beinginfo.cpp @@ -41,8 +41,11 @@ BeingInfo *BeingInfo::unknown = nullptr; Attack *BeingInfo::empty = new Attack(SpriteAction::ATTACK, - SpriteAction::ATTACKSKY, SpriteAction::ATTACKWATER, - -1, -1, -1, -1, std::string()); + SpriteAction::ATTACKSKY, + SpriteAction::ATTACKWATER, + SpriteAction::ATTACKRIDE, + -1, -1, -1, -1, + std::string()); BeingInfo::BeingInfo() : mDisplay(), @@ -169,6 +172,7 @@ void BeingInfo::addAttack(const int id, const std::string &action, const std::string &skyAction, const std::string &waterAction, + const std::string &rideAction, const int effectId, const int hitEffectId, const int criticalHitEffectId, @@ -176,8 +180,15 @@ void BeingInfo::addAttack(const int id, const std::string &missileParticle) { delete mAttacks[id]; - mAttacks[id] = new Attack(action, skyAction, waterAction, effectId, - hitEffectId, criticalHitEffectId, missEffectId, missileParticle); + mAttacks[id] = new Attack(action, + skyAction, + waterAction, + rideAction, + effectId, + hitEffectId, + criticalHitEffectId, + missEffectId, + missileParticle); } void BeingInfo::clear() diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h index a4ee2a750..6a84723a3 100644 --- a/src/resources/beinginfo.h +++ b/src/resources/beinginfo.h @@ -102,6 +102,7 @@ class BeingInfo final const std::string &action, const std::string &skyAttack, const std::string &waterAttack, + const std::string &rideAttack, const int effectId, const int hitEffectId, const int criticalHitEffectId, |