diff options
-rw-r--r-- | src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/being/being.cpp | 32 | ||||
-rw-r--r-- | src/being/being.h | 26 | ||||
-rw-r--r-- | src/enums/being/attacktype.h | 46 | ||||
-rw-r--r-- | src/net/ea/beinghandler.cpp | 14 | ||||
-rw-r--r-- | src/net/eathena/beinghandler.cpp | 28 |
7 files changed, 89 insertions, 59 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 89bdd6b38..2654f94bc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -807,6 +807,7 @@ SET(SRCS being/actorsprite.cpp being/actorsprite.h enums/being/actortype.h + enums/being/attacktype.h enums/being/attributes.h listeners/actorspritelistener.h listeners/arrowslistener.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 0658cf8c2..a0ec51227 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -929,6 +929,7 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ being/actorsprite.cpp \ being/actorsprite.h \ enums/being/actortype.h \ + enums/being/attacktype.h \ enums/being/attributes.h \ listeners/actorspritelistener.h \ listeners/arrowslistener.cpp \ diff --git a/src/being/being.cpp b/src/being/being.cpp index 1ef37c15a..1ca4cb700 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -554,7 +554,7 @@ void Being::setSpeech(const std::string &text, const std::string &channel, } void Being::takeDamage(Being *const attacker, const int amount, - const AttackType type, const int attackId) + const AttackType::Type type, const int attackId) { if (!userPalette || !attacker) return; @@ -563,17 +563,17 @@ void Being::takeDamage(Being *const attacker, const int amount, Font *font = nullptr; // TRANSLATORS: hit or miss message in attacks - const std::string damage = amount ? toString(amount) : type == FLEE ? - _("dodge") : _("miss"); + const std::string damage = amount ? toString(amount) + : type == AttackType::FLEE ? _("dodge") : _("miss"); const Color *color; if (gui) font = gui->getInfoParticleFont(); // Selecting the right color - if (type == CRITICAL || type == FLEE) + if (type == AttackType::CRITICAL || type == AttackType::FLEE) { - if (type == CRITICAL) + if (type == AttackType::CRITICAL) attacker->setCriticalHit(amount); if (attacker == localPlayer) @@ -655,7 +655,7 @@ void Being::takeDamage(Being *const attacker, const int amount, BLOCK_END("Being::takeDamage1") BLOCK_START("Being::takeDamage2") - if (type != SKILL) + if (type != AttackType::SKILL) attacker->updateHit(amount); if (amount > 0) @@ -707,7 +707,7 @@ void Being::takeDamage(Being *const attacker, const int amount, if (effectManager) { const int hitEffectId = getHitEffect(attacker, - MISS, attackId); + AttackType::MISS, attackId); if (hitEffectId >= 0) effectManager->trigger(hitEffectId, this); } @@ -716,7 +716,7 @@ void Being::takeDamage(Being *const attacker, const int amount, } int Being::getHitEffect(const Being *const attacker, - const AttackType type, const int attackId) const + const AttackType::Type type, const int attackId) const { if (!effectManager) return 0; @@ -725,7 +725,7 @@ int Being::getHitEffect(const Being *const attacker, // Init the particle effect path based on current // weapon or default. int hitEffectId = 0; - if (type != SKILL) + if (type != AttackType::SKILL) { if (attacker) { @@ -733,9 +733,9 @@ int Being::getHitEffect(const Being *const attacker, = attacker->getEquippedWeapon(); if (attackerWeapon && attacker->getType() == ActorType::Player) { - if (type == MISS) + if (type == AttackType::MISS) hitEffectId = attackerWeapon->getMissEffectId(); - else if (type != CRITICAL) + else if (type != AttackType::CRITICAL) hitEffectId = attackerWeapon->getHitEffectId(); else hitEffectId = attackerWeapon->getCriticalHitEffectId(); @@ -748,9 +748,9 @@ int Being::getHitEffect(const Being *const attacker, const Attack *const atk = info->getAttack(attackId); if (atk) { - if (type == MISS) + if (type == AttackType::MISS) hitEffectId = atk->mMissEffectId; - else if (type != CRITICAL) + else if (type != AttackType::CRITICAL) hitEffectId = atk->mHitEffectId; else hitEffectId = atk->mCriticalHitEffectId; @@ -780,11 +780,11 @@ int Being::getHitEffect(const Being *const attacker, return hitEffectId; } -int Being::getDefaultEffectId(const AttackType &type) +int Being::getDefaultEffectId(const AttackType::Type &type) { - if (type == MISS) + if (type == AttackType::MISS) return paths.getIntValue("missEffectId"); - else if (type != CRITICAL) + else if (type != AttackType::CRITICAL) return paths.getIntValue("hitEffectId"); else return paths.getIntValue("criticalHitEffectId"); diff --git a/src/being/being.h b/src/being/being.h index 6b8a4dd52..fab70ff8f 100644 --- a/src/being/being.h +++ b/src/being/being.h @@ -29,6 +29,7 @@ #include "being/actorsprite.h" +#include "enums/being/attacktype.h" #include "enums/being/beingaction.h" #include "enums/being/beingdirection.h" #include "enums/being/gender.h" @@ -90,25 +91,6 @@ class Being notfinal : public ActorSprite, friend class BeingEquipBackend; friend class LocalPlayer; - enum AttackType - { - HIT = 0, - PICKUP = 1, - SIT = 2, - STAND = 3, - REFLECT = 4, - SPLASH = 5, - SKILL = 6, - REPEATE = 7, - MULTI = 8, - MULTI_REFLECT = 9, - CRITICAL = 10, - FLEE = 11, - TOUCH_SKILL = 12, -// SKILL = 0xff, - MISS = 0xffff // pseudo value for miss attacks - }; - enum Reachable { REACH_UNKNOWN = 0, @@ -221,7 +203,7 @@ class Being notfinal : public ActorSprite, * @param id skill id */ void takeDamage(Being *const attacker, const int damage, - const AttackType type, const int attackId = 1); + const AttackType::Type type, const int attackId = 1); /** * Handles an attack of another being by this being. @@ -823,7 +805,7 @@ class Being notfinal : public ActorSprite, void recalcSpritesOrder(); int getHitEffect(const Being *const attacker, - const AttackType type, + const AttackType::Type type, const int attackId) const A_WARN_UNUSED; Cursor::Cursor getHoverCursor() const A_WARN_UNUSED @@ -942,7 +924,7 @@ class Being notfinal : public ActorSprite, void createSpeechBubble(); - static int getDefaultEffectId(const AttackType &type); + static int getDefaultEffectId(const AttackType::Type &type); BeingInfo *mInfo; AnimatedSprite *mEmotionSprite; diff --git a/src/enums/being/attacktype.h b/src/enums/being/attacktype.h new file mode 100644 index 000000000..c040d66f9 --- /dev/null +++ b/src/enums/being/attacktype.h @@ -0,0 +1,46 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef ENUMS_BEING_ATTACKTYPE_H +#define ENUMS_BEING_ATTACKTYPE_H + +namespace AttackType +{ + enum Type + { + HIT = 0, + PICKUP = 1, + SIT = 2, + STAND = 3, + REFLECT = 4, + SPLASH = 5, + SKILL = 6, + REPEATE = 7, + MULTI = 8, + MULTI_REFLECT = 9, + CRITICAL = 10, + FLEE = 11, + TOUCH_SKILL = 12, + MISS = 0xffff // pseudo value for miss attacks + }; +} +#endif // ENUMS_BEING_ATTACKTYPE_H diff --git a/src/net/ea/beinghandler.cpp b/src/net/ea/beinghandler.cpp index 3c22ac62d..54f13472e 100644 --- a/src/net/ea/beinghandler.cpp +++ b/src/net/ea/beinghandler.cpp @@ -162,7 +162,7 @@ void BeingHandler::processSkillDamage(Net::MessageIn &msg) if (srcBeing) srcBeing->handleSkill(dstBeing, param1, id, level); if (dstBeing) - dstBeing->takeDamage(srcBeing, param1, Being::SKILL, id); + dstBeing->takeDamage(srcBeing, param1, AttackType::SKILL, id); BLOCK_END("BeingHandler::processSkillDamage") } @@ -190,11 +190,11 @@ void BeingHandler::processBeingAction(Net::MessageIn &msg) switch (type) { - case Being::HIT: // Damage - case Being::CRITICAL: // Critical Damage - case Being::MULTI: // Critical Damage - case Being::REFLECT: // Reflected Damage - case Being::FLEE: // Lucky Dodge + case AttackType::HIT: // Damage + case AttackType::CRITICAL: // Critical Damage + case AttackType::MULTI: // Critical Damage + case AttackType::REFLECT: // Reflected Damage + case AttackType::FLEE: // Lucky Dodge if (srcBeing) { if (srcSpeed && srcBeing->getType() == ActorType::Player) @@ -207,7 +207,7 @@ void BeingHandler::processBeingAction(Net::MessageIn &msg) if (dstBeing) { dstBeing->takeDamage(srcBeing, param1, - static_cast<Being::AttackType>(type)); + static_cast<AttackType::Type>(type)); } break; diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp index f8d0c8954..ab8700227 100644 --- a/src/net/eathena/beinghandler.cpp +++ b/src/net/eathena/beinghandler.cpp @@ -1111,15 +1111,15 @@ void BeingHandler::processBeingAction2(Net::MessageIn &msg) switch (type) { - case Being::HIT: // Damage - case Being::CRITICAL: // Critical Damage - case Being::MULTI: // Critical Damage - case Being::MULTI_REFLECT: - case Being::REFLECT: // Reflected Damage - case Being::FLEE: // Lucky Dodge - case Being::SPLASH: - case Being::SKILL: - case Being::REPEATE: + case AttackType::HIT: // Damage + case AttackType::CRITICAL: // Critical Damage + case AttackType::MULTI: // Critical Damage + case AttackType::MULTI_REFLECT: + case AttackType::REFLECT: // Reflected Damage + case AttackType::FLEE: // Lucky Dodge + case AttackType::SPLASH: + case AttackType::SKILL: + case AttackType::REPEATE: if (srcBeing) { if (srcSpeed && srcBeing->getType() == ActorType::Player) @@ -1132,17 +1132,17 @@ void BeingHandler::processBeingAction2(Net::MessageIn &msg) if (dstBeing) { dstBeing->takeDamage(srcBeing, param1, - static_cast<Being::AttackType>(type)); + static_cast<AttackType::Type>(type)); } break; - case Being::PICKUP: + case AttackType::PICKUP: break; - case Being::TOUCH_SKILL: + case AttackType::TOUCH_SKILL: break; - case Being::SIT: + case AttackType::SIT: if (srcBeing) { srcBeing->setAction(BeingAction::SIT, 0); @@ -1155,7 +1155,7 @@ void BeingHandler::processBeingAction2(Net::MessageIn &msg) } break; - case Being::STAND: + case AttackType::STAND: if (srcBeing) { srcBeing->setAction(BeingAction::STAND, 0); |