From 390e5da0f9ecc4407aa7d4bcba1af5730db56271 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 May 2015 20:59:14 +0300 Subject: Convert AttackType enum into strong typed enum. --- src/being/being.cpp | 6 +++--- src/being/being.h | 6 +++--- src/enums/being/attacktype.h | 40 ++++++++++++++++++++-------------------- src/net/ea/beinghandler.cpp | 11 ++++++----- src/net/eathena/beinghandler.cpp | 5 +++-- 5 files changed, 35 insertions(+), 33 deletions(-) diff --git a/src/being/being.cpp b/src/being/being.cpp index 1362c904a..947e98fb6 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -587,7 +587,7 @@ void Being::setSpeech(const std::string &text, const std::string &channel, void Being::takeDamage(Being *const attacker, const int amount, - const AttackType::Type type, + const AttackTypeT type, const int attackId, const int level) { @@ -770,7 +770,7 @@ void Being::takeDamage(Being *const attacker, } int Being::getHitEffect(const Being *const attacker, - const AttackType::Type type, + const AttackTypeT type, const int attackId, const int level) const { @@ -850,7 +850,7 @@ int Being::getHitEffect(const Being *const attacker, return hitEffectId; } -int Being::getDefaultEffectId(const AttackType::Type &type) +int Being::getDefaultEffectId(const AttackTypeT &type) { if (type == AttackType::MISS) return paths.getIntValue("missEffectId"); diff --git a/src/being/being.h b/src/being/being.h index b1639f250..83ca7785a 100644 --- a/src/being/being.h +++ b/src/being/being.h @@ -189,7 +189,7 @@ class Being notfinal : public ActorSprite, */ void takeDamage(Being *const attacker, const int damage, - const AttackType::Type type, + const AttackTypeT type, const int attackId = 1, const int level = 1); @@ -793,7 +793,7 @@ class Being notfinal : public ActorSprite, void recalcSpritesOrder(); int getHitEffect(const Being *const attacker, - const AttackType::Type type, + const AttackTypeT type, const int attackId, const int level) const A_WARN_UNUSED; @@ -938,7 +938,7 @@ class Being notfinal : public ActorSprite, void createSpeechBubble(); - static int getDefaultEffectId(const AttackType::Type &type); + static int getDefaultEffectId(const AttackTypeT &type); BeingInfo *mInfo; AnimatedSprite *mEmotionSprite; diff --git a/src/enums/being/attacktype.h b/src/enums/being/attacktype.h index d04f88ed9..f9424ebd4 100644 --- a/src/enums/being/attacktype.h +++ b/src/enums/being/attacktype.h @@ -23,26 +23,26 @@ #ifndef ENUMS_BEING_ATTACKTYPE_H #define ENUMS_BEING_ATTACKTYPE_H -namespace AttackType +#include "enums/simpletypes/enumdefines.h" + +enumStart(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 - SKILLMISS // pseudo value for skill miss attacks - }; -} // namespace 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, + MISS = 0xffff, // pseudo value for miss attacks + SKILLMISS // pseudo value for skill miss attacks +} +enumEnd(AttackType); #endif // ENUMS_BEING_ATTACKTYPE_H diff --git a/src/net/ea/beinghandler.cpp b/src/net/ea/beinghandler.cpp index ba1d21fbd..a80a9d4f6 100644 --- a/src/net/ea/beinghandler.cpp +++ b/src/net/ea/beinghandler.cpp @@ -178,7 +178,8 @@ void BeingHandler::processBeingAction(Net::MessageIn &msg) msg.readInt32("dst speed"); const int param1 = msg.readInt16("param1"); msg.readInt16("param 2"); - const uint8_t type = msg.readUInt8("type"); + const AttackTypeT type = static_cast( + msg.readUInt8("type")); msg.readInt16("param 3"); switch (type) @@ -201,17 +202,17 @@ void BeingHandler::processBeingAction(Net::MessageIn &msg) { // level not present, using 1 dstBeing->takeDamage(srcBeing, param1, - static_cast(type), 1); + static_cast(type), 1); } break; - case 0x01: // dead or pickup? + case AttackType::PICKUP: break; // tmw server can send here garbage? // if (srcBeing) // srcBeing->setAction(BeingAction::DEAD, 0); - case 0x02: // Sit + case AttackType::SIT: if (srcBeing) { srcBeing->setAction(BeingAction::SIT, 0); @@ -224,7 +225,7 @@ void BeingHandler::processBeingAction(Net::MessageIn &msg) } break; - case 0x03: // Stand up + case AttackType::STAND: if (srcBeing) { srcBeing->setAction(BeingAction::STAND, 0); diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp index 99866bfbf..79354e34c 100644 --- a/src/net/eathena/beinghandler.cpp +++ b/src/net/eathena/beinghandler.cpp @@ -1280,7 +1280,8 @@ void BeingHandler::processBeingAction2(Net::MessageIn &msg) msg.readInt32("dst speed"); const int param1 = msg.readInt32("damage"); msg.readInt16("count"); - const uint8_t type = msg.readUInt8("action"); + const AttackTypeT type = static_cast( + msg.readUInt8("action")); msg.readInt32("left damage"); switch (type) @@ -1307,7 +1308,7 @@ void BeingHandler::processBeingAction2(Net::MessageIn &msg) { // level not present, using 1 dstBeing->takeDamage(srcBeing, param1, - static_cast(type), 1); + static_cast(type), 1); } break; -- cgit v1.2.3-60-g2f50