From df812e5ee220a9c62dfa67804bc62d9fe98a9dda Mon Sep 17 00:00:00 2001 From: Stefan Dombrowski Date: Tue, 14 Feb 2012 22:36:54 +0100 Subject: Omit equipping of non-existing items Reviewed-by: Ablu and Bjorn --- src/net/tmwa/inventoryhandler.h | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/net') diff --git a/src/net/tmwa/inventoryhandler.h b/src/net/tmwa/inventoryhandler.h index bbb58b15..88ab953d 100644 --- a/src/net/tmwa/inventoryhandler.h +++ b/src/net/tmwa/inventoryhandler.h @@ -23,8 +23,9 @@ #define NET_TA_INVENTORYHANDLER_H #include "equipment.h" -#include "inventory.h" #include "eventlistener.h" +#include "inventory.h" +#include "log.h" #include "playerinfo.h" #include "gui/inventorywindow.h" @@ -104,16 +105,24 @@ class EquipBackend : public Equipment::Backend void setEquipment(int index, int inventoryIndex) { Inventory *inventory = PlayerInfo::getInventory(); + Item *newItem = inventory->getItem(inventoryIndex); - // Unequip existing item - if (Item *item = inventory->getItem(mEquipment[index])) - item->setEquipped(false); + if (!newItem && inventoryIndex >= 0) + { + logger->log("EquipBackend: Warning, trying to equip " + "non-existing item from inventory index %i at " + "equipment slot %i.", inventoryIndex, index); + return; + } - mEquipment[index] = inventoryIndex; + // Unequip existing item + if (Item *oldItem = inventory->getItem(mEquipment[index])) + oldItem->setEquipped(false); - if (Item *item = inventory->getItem(inventoryIndex)) - item->setEquipped(true); + if (newItem) + newItem->setEquipped(true); + mEquipment[index] = inventoryIndex; inventoryWindow->updateButtons(); } -- cgit v1.2.3-70-g09d2