summaryrefslogtreecommitdiff
path: root/src/net/equipmenthandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/equipmenthandler.cpp')
-rw-r--r--src/net/equipmenthandler.cpp214
1 files changed, 0 insertions, 214 deletions
diff --git a/src/net/equipmenthandler.cpp b/src/net/equipmenthandler.cpp
deleted file mode 100644
index c0072a45..00000000
--- a/src/net/equipmenthandler.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * The Mana World
- * Copyright 2004 The Mana World Development Team
- *
- * This file is part of The Mana World.
- *
- * The Mana World 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.
- *
- * The Mana World 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 The Mana World; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * $Id$
- */
-
-#include "equipmenthandler.h"
-
-#include "messagein.h"
-#include "protocol.h"
-
-#include "../being.h"
-#include "../beingmanager.h"
-#include "../equipment.h"
-#include "../item.h"
-#include "../localplayer.h"
-#include "../log.h"
-
-#include "../gui/chat.h"
-
-EquipmentHandler::EquipmentHandler()
-{
- static const Uint16 _messages[] = {
- SMSG_PLAYER_EQUIPMENT,
- SMSG_PLAYER_EQUIP,
- 0x01d7,
- SMSG_PLAYER_UNEQUIP,
- SMSG_PLAYER_ARROW_EQUIP,
- SMSG_PLAYER_ATTACK_RANGE,
- 0
- };
- handledMessages = _messages;
-}
-
-void EquipmentHandler::handleMessage(MessageIn &msg)
-{
- Sint32 itemCount;
- Sint16 index, equipPoint, itemId;
- Sint8 type;
- int mask, position;
- Being *being;
- Item *item;
-
- switch (msg.getId())
- {
- case SMSG_PLAYER_EQUIPMENT:
- msg.readShort(); // length
- itemCount = (msg.getLength() - 4) / 20;
-
- for (int loop = 0; loop < itemCount; loop++)
- {
- index = msg.readShort();
- itemId = msg.readShort();
- msg.readByte(); // type
- msg.readByte(); // identify flag
- msg.readShort(); // equip type
- equipPoint = msg.readShort();
- msg.readByte(); // attribute
- msg.readByte(); // refine
-
- player_node->addInvItem(index, itemId, 1, true);
-
- if (equipPoint)
- {
- mask = 1;
- position = 0;
- while (!(equipPoint & mask))
- {
- mask <<= 1;
- position++;
- }
- item = player_node->getInvItem(index);
- player_node->mEquipment->setEquipment(position, item);
- }
- }
- break;
-
- case SMSG_PLAYER_EQUIP:
- index = msg.readShort();
- equipPoint = msg.readShort();
- type = msg.readByte();
-
- logger->log("Equipping: %i %i %i", index, equipPoint, type);
-
- if (!type) {
- chatWindow->chatLog("Unable to equip.", BY_SERVER);
- break;
- }
-
- if (!equipPoint) {
- // No point given, no point in searching
- break;
- }
-
- // Unequip any existing equipped item in this position
- mask = 1;
- position = 0;
- while (!(equipPoint & mask)) {
- mask <<= 1;
- position++;
- }
- logger->log("Position %i", position);
- item = player_node->mEquipment->getEquipment(position);
- if (item) {
- item->setEquipped(false);
- }
-
- item = player_node->getInvItem(index);
- player_node->mEquipment->setEquipment(position, item);
- player_node->setWeaponById(item->getId());
- break;
-
- case 0x01d7:
- // Equipment related
- being = beingManager->findBeing(msg.readLong());
- msg.readByte(); // equip point
- itemId = msg.readShort();
- msg.readShort(); // item id 2
-
- if (!being)
- break;
-
- being->setWeaponById(itemId);
- break;
-
- case SMSG_PLAYER_UNEQUIP:
- index = msg.readShort();
- equipPoint = msg.readShort();
- type = msg.readByte();
-
- if (!type) {
- chatWindow->chatLog("Unable to unequip.", BY_SERVER);
- break;
- }
-
- if (!equipPoint) {
- // No point given, no point in searching
- break;
- }
-
- mask = 1;
- position = 0;
- while (!(equipPoint & mask)) {
- mask <<= 1;
- position++;
- }
-
- item = player_node->getInvItem(index);
-
- if (!item)
- break;
-
- item->setEquipped(false);
-
- switch (item->getId()) {
- case 529:
- case 1199:
- player_node->mEquipment->setArrows(NULL);
- break;
- case 521:
- case 522:
- case 530:
- case 536:
- case 1200:
- case 1201:
- player_node->setWeapon(0);
- // TODO: Why this break? Shouldn't a weapon be
- // unequipped in inventory too?
- break;
- default:
- player_node->mEquipment->removeEquipment(position);
- break;
- }
- logger->log("Unequipping: %i %i(%i) %i",
- index, equipPoint, type, position);
- break;
-
- case SMSG_PLAYER_ATTACK_RANGE:
- player_node->setAttackRange(msg.readShort());
- break;
-
- case SMSG_PLAYER_ARROW_EQUIP:
- itemId = msg.readShort();
-
- if (itemId <= 1)
- break;
-
- item = player_node->getInvItem(itemId);
- if (!item)
- break;
-
- item->setEquipped(true);
- player_node->mEquipment->setArrows(item);
- logger->log("Arrows equipped: %i", itemId);
- break;
- }
-}