示例#1
0
        // Picks this item and adds it to the target inventory specified as a parameter
        public virtual void Pick(string targetInventoryName)
        {
            FindTargetInventory(targetInventoryName);
            if (_targetInventory == null)
            {
                return;
            }

            if (!Pickable())
            {
                PickFail();
                return;
            }

            DetermineMaxQuantity();
            if (!Application.isPlaying)
            {
                _targetInventory.AddItem(Item, 1);
            }
            else
            {
                InventoryEvent.Trigger(InventoryEventType.Pick, null, Item.TargetInventoryName, Item, _pickedQuantity, 0);
            }
            if (Item.Pick())
            {
                Quantity = Quantity - _pickedQuantity;
                PickSuccess();
                DisableObjectIfNeeded();
            }
        }
示例#2
0
 /// <summary>
 /// Unequip this item if possible.
 /// </summary>
 public virtual void UnEquip()
 {
     if (!SlotEnabled)
     {
         return;
     }
     InventoryEvent.Trigger(InventoryEventType.UnEquipRequest, this, ParentInventoryDisplay.TargetInventoryName, ParentInventoryDisplay.TargetInventory.Content[Index], 0, Index);
 }
示例#3
0
 /// <summary>
 /// When that slot gets selected (via a mouse over or a touch), triggers an event for other classes to act on
 /// </summary>
 /// <param name="eventData">Event data.</param>
 public override void OnSelect(BaseEventData eventData)
 {
     base.OnSelect(eventData);
     if (ParentInventoryDisplay != null)
     {
         InventoryItem item = ParentInventoryDisplay.TargetInventory.Content[Index];
         InventoryEvent.Trigger(InventoryEventType.Select, this, ParentInventoryDisplay.TargetInventoryName, item, 0, Index);
     }
 }
示例#4
0
 /// <summary>
 /// When that slot gets clicked, triggers an event for other classes to act on
 /// </summary>
 public virtual void SlotClicked()
 {
     if (ParentInventoryDisplay != null)
     {
         InventoryItem item = ParentInventoryDisplay.TargetInventory.Content[Index];
         InventoryEvent.Trigger(InventoryEventType.Click, this, ParentInventoryDisplay.TargetInventoryName, item, 0, Index);
         // if we're currently moving an object
         if (ParentInventoryDisplay.CurrentlyBeingMovedItemIndex != -1)
         {
             Move();
         }
     }
 }
示例#5
0
 /// <summary>
 /// Drops this item.
 /// </summary>
 public virtual void Drop()
 {
     if (!SlotEnabled)
     {
         return;
     }
     if (InventoryItem.IsNull(ParentInventoryDisplay.TargetInventory.Content[Index]))
     {
         InventoryEvent.Trigger(InventoryEventType.Error, this, ParentInventoryDisplay.TargetInventoryName, null, 0, Index);
         return;
     }
     if (ParentInventoryDisplay.TargetInventory.Content[Index].Drop())
     {
         ParentInventoryDisplay.CurrentlyBeingMovedItemIndex = -1;
         InventoryEvent.Trigger(InventoryEventType.Drop, this, ParentInventoryDisplay.TargetInventoryName, ParentInventoryDisplay.TargetInventory.Content[Index], 0, Index);
     }
 }
示例#6
0
 /// <summary>
 /// Selects the item in this slot for a movement, or moves the currently selected one to that slot
 /// This will also swap both objects if possible
 /// </summary>
 public virtual void Move()
 {
     if (!SlotEnabled)
     {
         return;
     }
     // if we're not already moving an object
     if (ParentInventoryDisplay.CurrentlyBeingMovedItemIndex == -1)
     {
         // if the slot we're on is empty, we do nothing
         if (InventoryItem.IsNull(ParentInventoryDisplay.TargetInventory.Content[Index]))
         {
             InventoryEvent.Trigger(InventoryEventType.Error, this, ParentInventoryDisplay.TargetInventoryName, null, 0, Index);
             return;
         }
         if (ParentInventoryDisplay.TargetInventory.Content[Index].CanMoveObject)
         {
             // we change the background image
             GetComponent <Image>().sprite = ParentInventoryDisplay.MovedSlotImage;
             ParentInventoryDisplay.CurrentlyBeingMovedItemIndex = Index;
         }
     }
     // if we ARE moving an object
     else
     {
         // we move the object to a new slot.
         if (!ParentInventoryDisplay.TargetInventory.MoveItem(ParentInventoryDisplay.CurrentlyBeingMovedItemIndex, Index))
         {
             // if the move couldn't be made (non empty destination slot for example), we play a sound
             InventoryEvent.Trigger(InventoryEventType.Error, this, ParentInventoryDisplay.TargetInventoryName, null, 0, Index);
         }
         else
         {
             // if the move could be made, we reset our currentlyBeingMoved pointer
             ParentInventoryDisplay.CurrentlyBeingMovedItemIndex = -1;
             InventoryEvent.Trigger(InventoryEventType.Move, this, ParentInventoryDisplay.TargetInventoryName, ParentInventoryDisplay.TargetInventory.Content[Index], 0, Index);
         }
     }
 }