From c9a31afec60a5085e0a3dbd26c15db397730a768 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 8 Jun 2016 14:30:28 +0300 Subject: Add strong typed bool IsWeapon. --- src/CMakeLists.txt | 1 + src/Makefile.am | 1 + src/actormanager.cpp | 2 +- src/being/being.cpp | 20 +++++++++---------- src/being/being.h | 5 +++-- src/enums/simpletypes/isweapon.h | 33 +++++++++++++++++++++++++++++++ src/net/ea/beingrecv.cpp | 2 +- src/net/ea/beingrecv.h | 3 ++- src/net/eathena/beingrecv.cpp | 30 +++++++++++++++++++++------- src/net/eathena/charserverrecv.cpp | 6 +++++- src/net/tmwa/beingrecv.cpp | 40 ++++++++++++++++++++++++++++++-------- src/net/tmwa/charserverrecv.cpp | 6 +++++- 12 files changed, 117 insertions(+), 32 deletions(-) create mode 100644 src/enums/simpletypes/isweapon.h (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6984556c4..54f6c9dfb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1227,6 +1227,7 @@ SET(SRCS enums/simpletypes/ignorerecord.h enums/simpletypes/intdefines.h enums/simpletypes/issell.h + enums/simpletypes/isweapon.h enums/simpletypes/itemcolor.h enums/simpletypes/keep.h enums/simpletypes/mainconfig.h diff --git a/src/Makefile.am b/src/Makefile.am index b262d71ba..3018e0668 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -684,6 +684,7 @@ SRC += events/actionevent.h \ enums/simpletypes/ignorerecord.h \ enums/simpletypes/intdefines.h \ enums/simpletypes/issell.h \ + enums/simpletypes/isweapon.h \ enums/simpletypes/itemcolor.h \ enums/simpletypes/keep.h \ enums/simpletypes/mainconfig.h \ diff --git a/src/actormanager.cpp b/src/actormanager.cpp index 82be50ea8..0cfd9571d 100644 --- a/src/actormanager.cpp +++ b/src/actormanager.cpp @@ -2038,7 +2038,7 @@ Being *ActorManager::cloneBeing(const Being *const srcBeing, { const int spriteId = srcBeing->getSpriteID(slot); const ItemColor color = srcBeing->getSpriteColor(slot); - dstBeing->setSprite(slot, spriteId, "", color, false); + dstBeing->setSprite(slot, spriteId, "", color, IsWeapon_false); } const int hairSlot = charServerHandler->hairSprite(); const int hairStyle = -srcBeing->getSpriteID(hairSlot); diff --git a/src/being/being.cpp b/src/being/being.cpp index cec64c269..1a6e14fc4 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -2468,7 +2468,7 @@ void Being::updateSprite(const unsigned int slot, const int id, const std::string &restrict color, const ItemColor colorId, - const bool isWeapon, + const IsWeapon isWeapon, const bool isTempSprite) restrict2 { if (!charServerHandler || slot >= charServerHandler->maxSprite()) @@ -2486,7 +2486,7 @@ void Being::setSprite(const unsigned int slot, const int id, std::string color, const ItemColor colorId, - const bool isWeapon, + const IsWeapon isWeapon, const bool isTempSprite) restrict2 { if (!charServerHandler || slot >= charServerHandler->maxSprite()) @@ -2514,7 +2514,7 @@ void Being::setSprite(const unsigned int slot, removeSprite(slot); mSpriteDraw[slot] = 0; - if (isWeapon) + if (isWeapon == IsWeapon_true) mEquippedWeapon = nullptr; const int id1 = mSpriteIDs[slot]; if (id1) @@ -2567,7 +2567,7 @@ void Being::setSprite(const unsigned int slot, addItemParticles(id, info.getDisplay()); - if (isWeapon) + if (isWeapon == IsWeapon_true) mEquippedWeapon = &ItemDB::get(id); setAction(mAction, 0); @@ -3376,7 +3376,7 @@ void Being::recalcSpritesOrder() restrict2 setSprite(remSprite, repIt->second, mSpriteColors[remSprite], ItemColor_one, - false, + IsWeapon_false, true); } else @@ -3385,7 +3385,7 @@ void Being::recalcSpritesOrder() restrict2 ItemDB::get(repIt->second) .getDyeColorsString(mHairColor), ItemColor_one, - false, + IsWeapon_false, true); } updatedSprite[remSprite] = true; @@ -3409,7 +3409,7 @@ void Being::recalcSpritesOrder() restrict2 setSprite(slot2, repIt->second, mSpriteColors[slot2], ItemColor_one, - false, + IsWeapon_false, true); } else @@ -3419,7 +3419,7 @@ void Being::recalcSpritesOrder() restrict2 .getDyeColorsString( mHairColor), ItemColor_one, - false, + IsWeapon_false, true); } updatedSprite[slot2] = true; @@ -3566,7 +3566,7 @@ void Being::recalcSpritesOrder() restrict2 id, mSpriteColors[slot], ItemColor_one, - false, + IsWeapon_false, true); } } @@ -3583,7 +3583,7 @@ void Being::recalcSpritesOrder() restrict2 id, mSpriteColors[slot], ItemColor_one, - false, + IsWeapon_false, true); } } diff --git a/src/being/being.h b/src/being/being.h index 296038876..ad31cd144 100644 --- a/src/being/being.h +++ b/src/being/being.h @@ -28,6 +28,7 @@ #include "enums/gui/usercolorid.h" +#include "enums/simpletypes/isweapon.h" #include "enums/simpletypes/move.h" #include "resources/beinginfo.h" @@ -321,14 +322,14 @@ class Being notfinal : public ActorSprite, const int id, std::string color = "", const ItemColor colorId = ItemColor_one, - const bool isWeapon = false, + const IsWeapon isWeapon = IsWeapon_false, const bool isTempSprite = false) restrict2; void updateSprite(const unsigned int slot, const int id, const std::string &restrict color = "", const ItemColor colorId = ItemColor_one, - const bool isWeapon = false, + const IsWeapon isWeapon = IsWeapon_false, const bool isTempSprite = false) restrict2; void setSpriteID(const unsigned int slot, diff --git a/src/enums/simpletypes/isweapon.h b/src/enums/simpletypes/isweapon.h new file mode 100644 index 000000000..69cf3053e --- /dev/null +++ b/src/enums/simpletypes/isweapon.h @@ -0,0 +1,33 @@ +/* + * The ManaPlus Client + * Copyright (C) 2015-2016 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 . + */ + +#ifndef ENUMS_SIMPLETYPES_ISWEAPON_H +#define ENUMS_SIMPLETYPES_ISWEAPON_H + +#include "enums/simpletypes/booldefines.h" + +PRAGMA6(GCC diagnostic push) +PRAGMA6(GCC diagnostic ignored "-Wunused-const-variable") + +defBoolEnum(IsWeapon); + +PRAGMA6(GCC diagnostic pop) + +#endif // ENUMS_SIMPLETYPES_ISWEAPON_H diff --git a/src/net/ea/beingrecv.cpp b/src/net/ea/beingrecv.cpp index 7b8d74328..154243258 100644 --- a/src/net/ea/beingrecv.cpp +++ b/src/net/ea/beingrecv.cpp @@ -547,7 +547,7 @@ void BeingRecv::setSprite(Being *const being, const int id, const std::string &color, const ItemColor colorId, - const bool isWeapon, + const IsWeapon isWeapon, const bool isTempSprite) { if (!being) diff --git a/src/net/ea/beingrecv.h b/src/net/ea/beingrecv.h index 9c98ba12e..f68d87880 100644 --- a/src/net/ea/beingrecv.h +++ b/src/net/ea/beingrecv.h @@ -24,6 +24,7 @@ #define NET_EA_BEINGRECV_H #include "enums/simpletypes/beingid.h" +#include "enums/simpletypes/isweapon.h" #include "enums/simpletypes/itemcolor.h" #include @@ -57,7 +58,7 @@ namespace Ea const int id, const std::string &color = "", const ItemColor colorId = ItemColor_one, - const bool isWeapon = false, + const IsWeapon isWeapon = IsWeapon_false, const bool isTempSprite = false); } // namespace BeingRecv } // namespace Ea diff --git a/src/net/eathena/beingrecv.cpp b/src/net/eathena/beingrecv.cpp index 5d4c59d00..07779147a 100644 --- a/src/net/eathena/beingrecv.cpp +++ b/src/net/eathena/beingrecv.cpp @@ -160,7 +160,11 @@ void BeingRecv::processBeingChangeLookContinue(const Net::MessageIn &msg, dstBeing->setSpriteID(SPRITE_HAIR_COLOR, id * -1); break; case 2: // LOOK_WEAPON Weapon ID in id, Shield ID in id2 - dstBeing->setSprite(SPRITE_BODY, id, "", itemColor, true); + dstBeing->setSprite(SPRITE_BODY, + id, + "", + itemColor, + IsWeapon_true); dstBeing->setSprite(SPRITE_FLOOR, id2); if (localPlayer) localPlayer->imitateOutfit(dstBeing, SPRITE_FLOOR); @@ -399,8 +403,12 @@ void BeingRecv::processBeingVisible(Net::MessageIn &msg) Ea::BeingRecv::setSprite(dstBeing, SPRITE_CLOTHES_COLOR, headTop); Ea::BeingRecv::setSprite(dstBeing, SPRITE_HAIR, shoes); Ea::BeingRecv::setSprite(dstBeing, SPRITE_SHOES, gloves); - Ea::BeingRecv::setSprite(dstBeing, SPRITE_BODY, weapon, "", - ItemColor_one, true); + Ea::BeingRecv::setSprite(dstBeing, + SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); // Ea::BeingRecv::setSprite(dstBeing, SPRITE_FLOOR, shield); } else if (dstBeing->getType() == ActorType::Npc @@ -601,8 +609,12 @@ void BeingRecv::processBeingMove(Net::MessageIn &msg) Ea::BeingRecv::setSprite(dstBeing, SPRITE_CLOTHES_COLOR, headTop); Ea::BeingRecv::setSprite(dstBeing, SPRITE_HAIR, shoes); Ea::BeingRecv::setSprite(dstBeing, SPRITE_SHOES, gloves); - Ea::BeingRecv::setSprite(dstBeing, SPRITE_BODY, weapon, "", - ItemColor_one, true); + Ea::BeingRecv::setSprite(dstBeing, + SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); } // Ea::BeingRecv::setSprite(dstBeing, SPRITE_FLOOR, shield); } @@ -801,8 +813,12 @@ void BeingRecv::processBeingSpawn(Net::MessageIn &msg) Ea::BeingRecv::setSprite(dstBeing, SPRITE_CLOTHES_COLOR, headTop); Ea::BeingRecv::setSprite(dstBeing, SPRITE_HAIR, shoes); Ea::BeingRecv::setSprite(dstBeing, SPRITE_SHOES, gloves); - Ea::BeingRecv::setSprite(dstBeing, SPRITE_BODY, weapon, "", - ItemColor_one, true); + Ea::BeingRecv::setSprite(dstBeing, + SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); // Ea::BeingRecv::setSprite(dstBeing, SPRITE_FLOOR, shield); } else if (dstBeing->getType() == ActorType::Npc diff --git a/src/net/eathena/charserverrecv.cpp b/src/net/eathena/charserverrecv.cpp index fcf90acc9..598602355 100644 --- a/src/net/eathena/charserverrecv.cpp +++ b/src/net/eathena/charserverrecv.cpp @@ -129,7 +129,11 @@ void CharServerRecv::readPlayerData(Net::MessageIn &msg, const int option A_UNUSED = (msg.readInt16("weapon") | 1) ^ 1; const int weapon = 0; - tempPlayer->setSprite(SPRITE_BODY, weapon, "", ItemColor_one, true); + tempPlayer->setSprite(SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); data.mAttributes[Attributes::LEVEL] = msg.readInt16("level"); diff --git a/src/net/tmwa/beingrecv.cpp b/src/net/tmwa/beingrecv.cpp index cb5eefd92..5eec60985 100644 --- a/src/net/tmwa/beingrecv.cpp +++ b/src/net/tmwa/beingrecv.cpp @@ -143,7 +143,11 @@ void BeingRecv::processBeingChangeLookContinue(const Net::MessageIn &msg, break; } case 2: // Weapon ID in id, Shield ID in id2 - dstBeing->setSprite(SPRITE_BODY, id, "", ItemColor_one, true); + dstBeing->setSprite(SPRITE_BODY, + id, + "", + ItemColor_one, + IsWeapon_true); dstBeing->setSprite(SPRITE_FLOOR, id2); localPlayer->imitateOutfit(dstBeing, SPRITE_FLOOR); break; @@ -311,7 +315,11 @@ void BeingRecv::processPlayerUpdate1(Net::MessageIn &msg) if (!disguiseId) { // Set these after the gender, as the sprites may be gender-specific - dstBeing->updateSprite(SPRITE_BODY, weapon, "", ItemColor_one, true); + dstBeing->updateSprite(SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); dstBeing->updateSprite(SPRITE_FLOOR, shield); dstBeing->updateSprite(SPRITE_WEAPON, headBottom); dstBeing->updateSprite(SPRITE_HEAD_BOTTOM, headMid); @@ -453,7 +461,11 @@ void BeingRecv::processPlayerUpdate2(Net::MessageIn &msg) if (!disguiseId) { // Set these after the gender, as the sprites may be gender-specific - dstBeing->updateSprite(SPRITE_BODY, weapon, "", ItemColor_one, true); + dstBeing->updateSprite(SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); dstBeing->updateSprite(SPRITE_FLOOR, shield); dstBeing->updateSprite(SPRITE_WEAPON, headBottom); dstBeing->updateSprite(SPRITE_HEAD_BOTTOM, headMid); @@ -595,7 +607,11 @@ void BeingRecv::processPlayerMove(Net::MessageIn &msg) if (!disguiseId) { // Set these after the gender, as the sprites may be gender-specific - dstBeing->updateSprite(SPRITE_BODY, weapon, "", ItemColor_one, true); + dstBeing->updateSprite(SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); dstBeing->updateSprite(SPRITE_FLOOR, shield); dstBeing->updateSprite(SPRITE_WEAPON, headBottom); dstBeing->updateSprite(SPRITE_HEAD_BOTTOM, headMid); @@ -844,8 +860,12 @@ void BeingRecv::processBeingVisible(Net::MessageIn &msg) Ea::BeingRecv::setSprite(dstBeing, SPRITE_CLOTHES_COLOR, headTop); Ea::BeingRecv::setSprite(dstBeing, SPRITE_HAIR, shoes); Ea::BeingRecv::setSprite(dstBeing, SPRITE_SHOES, gloves); - Ea::BeingRecv::setSprite(dstBeing, SPRITE_BODY, weapon, "", - ItemColor_one, true); + Ea::BeingRecv::setSprite(dstBeing, + SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); Ea::BeingRecv::setSprite(dstBeing, SPRITE_FLOOR, shield); } else if (dstBeing->getType() == ActorType::Npc @@ -1057,8 +1077,12 @@ void BeingRecv::processBeingMove(Net::MessageIn &msg) Ea::BeingRecv::setSprite(dstBeing, SPRITE_CLOTHES_COLOR, headTop); Ea::BeingRecv::setSprite(dstBeing, SPRITE_HAIR, shoes); Ea::BeingRecv::setSprite(dstBeing, SPRITE_SHOES, gloves); - Ea::BeingRecv::setSprite(dstBeing, SPRITE_BODY, weapon, "", - ItemColor_one, true); + Ea::BeingRecv::setSprite(dstBeing, + SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); Ea::BeingRecv::setSprite(dstBeing, SPRITE_FLOOR, shield); } else if (dstBeing->getType() == ActorType::Npc diff --git a/src/net/tmwa/charserverrecv.cpp b/src/net/tmwa/charserverrecv.cpp index 428693678..18c0ab791 100644 --- a/src/net/tmwa/charserverrecv.cpp +++ b/src/net/tmwa/charserverrecv.cpp @@ -104,7 +104,11 @@ void CharServerRecv::readPlayerData(Net::MessageIn &msg, const uint16_t look = msg.readUInt8("look"); tempPlayer->setSubtype(fromInt(race, BeingTypeId), look); const uint16_t weapon = msg.readInt16("weapon"); - tempPlayer->setSprite(SPRITE_BODY, weapon, "", ItemColor_one, true); + tempPlayer->setSprite(SPRITE_BODY, + weapon, + "", + ItemColor_one, + IsWeapon_true); data.mAttributes[Attributes::LEVEL] = msg.readInt16("level"); -- cgit v1.2.3-60-g2f50