diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-11-23 16:45:46 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-11-23 16:45:46 +0300 |
commit | d20744c0ff83572dc209389df900826b7d088546 (patch) | |
tree | b6a91790f6c52d016e57cfdba687251c1f01409f | |
parent | a22d7bce703101ba3ae15cb5b8545381dfe863c4 (diff) | |
download | mv-d20744c0ff83572dc209389df900826b7d088546.tar.gz mv-d20744c0ff83572dc209389df900826b7d088546.tar.bz2 mv-d20744c0ff83572dc209389df900826b7d088546.tar.xz mv-d20744c0ff83572dc209389df900826b7d088546.zip |
Add support for additional slots in net code.
Now projectile slot depend on server.
-rw-r--r-- | src/being/localplayer.cpp | 2 | ||||
-rw-r--r-- | src/equipment.h | 2 | ||||
-rw-r--r-- | src/gui/windows/equipmentwindow.cpp | 7 | ||||
-rw-r--r-- | src/gui/windows/statuswindow.cpp | 5 | ||||
-rw-r--r-- | src/net/ea/eaprotocol.h | 7 | ||||
-rw-r--r-- | src/net/ea/inventoryhandler.cpp | 4 | ||||
-rw-r--r-- | src/net/eathena/inventoryhandler.cpp | 2 | ||||
-rw-r--r-- | src/net/eathena/inventoryhandler.h | 3 | ||||
-rw-r--r-- | src/net/inventoryhandler.h | 2 | ||||
-rw-r--r-- | src/net/tmwa/inventoryhandler.h | 3 | ||||
-rw-r--r-- | src/resources/equipmentslots.h | 7 |
11 files changed, 34 insertions, 10 deletions
diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp index 60518842d..935b64c70 100644 --- a/src/being/localplayer.cpp +++ b/src/being/localplayer.cpp @@ -2944,7 +2944,7 @@ void LocalPlayer::imitateOutfit(const Being *const player, const int equipmentSlot = inventoryHandler ->convertFromServerSlot(sprite); // logger->log("equipmentSlot: " + toString(equipmentSlot)); - if (equipmentSlot == ItemSlot::PROJECTILE_SLOT) + if (equipmentSlot == inventoryHandler->getProjectileSlot()) return; const Item *const item = PlayerInfo::getEquipment(equipmentSlot); diff --git a/src/equipment.h b/src/equipment.h index 1adc69136..d9210a2fe 100644 --- a/src/equipment.h +++ b/src/equipment.h @@ -23,7 +23,7 @@ #ifndef EQUIPMENT_H #define EQUIPMENT_H -static const int EQUIPMENT_SIZE = 22; +static const int EQUIPMENT_SIZE = 27; #include "localconsts.h" diff --git a/src/gui/windows/equipmentwindow.cpp b/src/gui/windows/equipmentwindow.cpp index e37d623d6..a78052404 100644 --- a/src/gui/windows/equipmentwindow.cpp +++ b/src/gui/windows/equipmentwindow.cpp @@ -53,11 +53,13 @@ #include "utils/dtor.h" #include "utils/gettext.h" +#include "net/inventoryhandler.h" + #include "debug.h" EquipmentWindow *equipmentWindow = nullptr; EquipmentWindow *beingEquipmentWindow = nullptr; -static const int BOX_COUNT = 22; +static const int BOX_COUNT = 27; std::map<std::string, int> EquipmentWindow::mSlotNames; EquipmentWindow::EquipmentWindow(Equipment *const equipment, @@ -241,6 +243,7 @@ void EquipmentWindow::draw(Graphics *graphics) } i = 0; + const int projSlot = inventoryHandler->getProjectileSlot(); for (std::vector<EquipmentBox*>::const_iterator it = boxes.begin(), it_end = boxes.end(); it != it_end; ++ it, ++ i) { @@ -258,7 +261,7 @@ void EquipmentWindow::draw(Graphics *graphics) // with maximum opacity graphics->drawImage(image, box->x + mItemPadding, box->y + mItemPadding); - if (i == ItemSlot::PROJECTILE_SLOT) + if (i == projSlot) { graphics->setColorAll(mLabelsColor, mLabelsColor2); const std::string str = toString(item->getQuantity()); diff --git a/src/gui/windows/statuswindow.cpp b/src/gui/windows/statuswindow.cpp index 9d979f27f..8803654c8 100644 --- a/src/gui/windows/statuswindow.cpp +++ b/src/gui/windows/statuswindow.cpp @@ -50,8 +50,9 @@ #include "gui/widgets/vertcontainer.h" #include "gui/widgets/windowcontainer.h" -#include "net/playerhandler.h" #include "net/gamehandler.h" +#include "net/inventoryhandler.h" +#include "net/playerhandler.h" #include "utils/delete2.h" #include "utils/gettext.h" @@ -585,7 +586,7 @@ void StatusWindow::updateArrowsBar(ProgressBar *const bar) return; const Item *const item = equipmentWindow->getEquipment( - Equipment::EQUIP_PROJECTILE_SLOT); + inventoryHandler->getProjectileSlot()); if (item && item->getQuantity() > 0) bar->setText(toString(item->getQuantity())); diff --git a/src/net/ea/eaprotocol.h b/src/net/ea/eaprotocol.h index 46677f25a..89d8dd791 100644 --- a/src/net/ea/eaprotocol.h +++ b/src/net/ea/eaprotocol.h @@ -92,6 +92,13 @@ enum EA_SPRITE_EVOL3, EA_SPRITE_EVOL4, EA_SPRITE_EVOL5, + EA_SPRITE_EVOL6, + EA_SPRITE_EVOL7, + EA_SPRITE_EVOL8, + EA_SPRITE_EVOL9, + EA_SPRITE_EVOL10, + EA_SPRITE_EVOL11, + EA_SPRITE_EVOL12, EA_SPRITE_VECTOREND }; diff --git a/src/net/ea/inventoryhandler.cpp b/src/net/ea/inventoryhandler.cpp index 074459841..1f6d0e2a2 100644 --- a/src/net/ea/inventoryhandler.cpp +++ b/src/net/ea/inventoryhandler.cpp @@ -147,7 +147,7 @@ int InventoryHandler::getSlot(const int eAthenaSlot) return Equipment::EQUIP_VECTOREND; if (eAthenaSlot & 0x8000) - return Equipment::EQUIP_PROJECTILE_SLOT; + return inventoryHandler->getProjectileSlot(); unsigned int mask = 1; int position = 0; @@ -327,7 +327,7 @@ void InventoryHandler::processPlayerArrowEquip(Net::MessageIn &msg) return; index -= INVENTORY_OFFSET; - mEquips.setEquipment(Equipment::EQUIP_PROJECTILE_SLOT, index); + mEquips.setEquipment(inventoryHandler->getProjectileSlot(), index); ArrowsListener::distributeEvent(); BLOCK_END("InventoryHandler::processPlayerArrowEquip") } diff --git a/src/net/eathena/inventoryhandler.cpp b/src/net/eathena/inventoryhandler.cpp index af08fa1b2..384ca86b2 100644 --- a/src/net/eathena/inventoryhandler.cpp +++ b/src/net/eathena/inventoryhandler.cpp @@ -57,7 +57,7 @@ const Equipment::Slot EQUIP_CONVERT[] = Equipment::EQUIP_FIGHT1_SLOT, // 10 SPRITE_WEAPON Equipment::EQUIP_FIGHT2_SLOT, // 11 SPRITE_SHIELD Equipment::EQUIP_EVOL_RING2_SLOT, // 12 - Equipment::EQUIP_EVOL_RING2_SLOT, // 13 SPRITE_EVOL2 + Equipment::EQUIP_PROJECTILE_SLOT, // 13 SPRITE_EVOL2 Equipment::EQUIP_COSTUME_ROBE_SLOT, // 14 SPRITE_EVOL3 Equipment::EQUIP_MISSING1_SLOT, // 15 SPRITE_EVOL4 }; diff --git a/src/net/eathena/inventoryhandler.h b/src/net/eathena/inventoryhandler.h index 272d3a82b..794f9ca7a 100644 --- a/src/net/eathena/inventoryhandler.h +++ b/src/net/eathena/inventoryhandler.h @@ -71,6 +71,9 @@ class InventoryHandler final : public MessageHandler, int convertFromServerSlot(const int serverSlot) const override final A_WARN_UNUSED; + int getProjectileSlot() const override final + { return 23; } + protected: static void processPlayerEquipment(Net::MessageIn &msg); diff --git a/src/net/inventoryhandler.h b/src/net/inventoryhandler.h index ec822531a..13b2c847f 100644 --- a/src/net/inventoryhandler.h +++ b/src/net/inventoryhandler.h @@ -84,6 +84,8 @@ class InventoryHandler notfinal const bool favorite) const = 0; virtual void selectEgg(const Item *const item) const = 0; + + virtual int getProjectileSlot() const = 0; }; } // namespace Net diff --git a/src/net/tmwa/inventoryhandler.h b/src/net/tmwa/inventoryhandler.h index 84f6dd974..d8caf7a84 100644 --- a/src/net/tmwa/inventoryhandler.h +++ b/src/net/tmwa/inventoryhandler.h @@ -71,6 +71,9 @@ class InventoryHandler final : public MessageHandler, int convertFromServerSlot(const int serverSlot) const override final A_WARN_UNUSED; + int getProjectileSlot() const override final + { return 10; } + protected: static void processPlayerEquipment(Net::MessageIn &msg); diff --git a/src/resources/equipmentslots.h b/src/resources/equipmentslots.h index 31373a8e4..6b7db61c4 100644 --- a/src/resources/equipmentslots.h +++ b/src/resources/equipmentslots.h @@ -85,7 +85,12 @@ static const EquipmentSlotMap equipmentSlots[] = {"slot18", 18}, {"slot19", 19}, {"slot20", 20}, - {"slot21", 21} + {"slot21", 21}, + {"slot22", 22}, + {"slot23", 23}, + {"slot24", 24}, + {"slot25", 25}, + {"slot26", 26} }; #endif // RESOURCES_EQUIPMENTSLOTS_H |