Exemplo n.º 1
0
        /// <summary>
        /// Handles a request to move an item within the inventory.
        /// This covers moving items within the backpack, from equipment
        /// slot to backpack and from backpack to equipment slot
        /// </summary>
        public void HandleInventoryRequestMoveMessage(InventoryRequestMoveMessage request)
        {
            // Request to equip item from backpack
            if (request.Field1.Field1 != 0)
            {
                System.Diagnostics.Debug.Assert(Contains(request.Field0) || isItemEquipped(request.Field0), "Request to equip unknown item");

                // TODO find out swapping items, so no equipping when the slot is occupied
                if (request.Field1.Field1 < EquipmentSlots && this.equipment[request.Field1.Field1] == 0)
                {
                    Logger.Debug("Equip Item {0}", request.AsText());
                    RemoveItem(request.Field0);
                    EquipItem(request.Field0, request.Field1.Field1);
                             
                    AcceptMoveRequest(request.Field0, request.Field1);
                    RefreshVisual(request.Field1.Field0);
                }
            }

            // Request to move an item (from backpack or equipmentslot)
            else
            {
                if (FreeSpace(request.Field0, request.Field1.Field3, request.Field1.Field2))
                {
                    if (isItemEquipped(request.Field0))
                    {
                        Logger.Debug("Unequip item {0}", request.AsText());
                        UnequipItem(request.Field0);
                        RefreshVisual(request.Field1.Field0);
                    }
                    else
                    {
                        RemoveItem(request.Field0);
                    }
                    AddItem(request.Field0, request.Field1.Field3, request.Field1.Field2);
                    AcceptMoveRequest(request.Field0, request.Field1);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Handles a request to move an item within the inventory.
        /// This covers moving items within the backpack, from equipment
        /// slot to backpack and from backpack to equipment slot
        /// </summary>
        public void HandleInventoryRequestMoveMessage(InventoryRequestMoveMessage request)
        {
            Item item = _owner.World.GetItem(request.ItemID);
            // Request to equip item from backpack
            if (request.Location.EquipmentSlot != 0)
            {
                System.Diagnostics.Debug.Assert(Contains(request.ItemID) || IsItemEquipped(request.ItemID), "Request to equip unknown item");

                // TODO find out swapping items, so no equipping when the slot is occupied
                if (request.Location.EquipmentSlot < EquipmentSlots && this._equipment[request.Location.EquipmentSlot] == 0)
                {
                    Logger.Debug("Equip Item {0}", request.AsText());
                    RemoveItem(item);
                    EquipItem(item, request.Location.EquipmentSlot);
                    AcceptMoveRequest(item);
                    RefreshVisual(_owner.DynamicID);
                }
            }

            // Request to move an item (from backpack or equipmentslot)
            else
            {
                if (FreeSpace(item, request.Location.Row, request.Location.Column))
                {
                    if (IsItemEquipped(item))
                    {
                        Logger.Debug("Unequip item {0}", request.AsText());
                        UnequipItem(item); // Unequip the item
                        RefreshVisual(_owner.DynamicID); // Refresh the visual equipment for the player
                    }
                    else
                    {
                        RemoveItem(item);
                    }
                    AddItem(item, request.Location.Row, request.Location.Column);
                    AcceptMoveRequest(item);
                }
            }
        }