/// <summary>
 /// When pressing the equip/use button, we determine which of the two methods to call
 /// </summary>
 public virtual void EquipOrUse()
 {
     if (CurrentlySelectedInventorySlot.Equippable())
     {
         CurrentlySelectedInventorySlot.Equip();
     }
     if (CurrentlySelectedInventorySlot.Usable())
     {
         CurrentlySelectedInventorySlot.Use();
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// When pressing the equip/use button, we determine which of the two methods to call
 /// </summary>
 public virtual void EquipOrUse()
 {
     if (CurrentlySelectedInventorySlot.Equippable())
     {
         CurrentlySelectedInventorySlot.Equip();
     }
     if (CurrentlySelectedInventorySlot.Usable())
     {
         //CurrentlySelectedInventorySlot.Use();
         MMInventoryEvent.Trigger(MMInventoryEventType.PickTarget, CurrentlySelectedInventorySlot,
                                  TargetInventoryDisplay.TargetInventoryName, TargetInventoryDisplay.TargetInventory.Content[CurrentlySelectedInventorySlot.Index], 0, 0);
         CloseInventory();
     }
 }
 /// <summary>
 /// Triggers the selected slot's drop method
 /// </summary>
 public virtual void Drop()
 {
     CurrentlySelectedInventorySlot.Drop();
 }
 /// <summary>
 /// Triggers the selected slot's move method
 /// </summary>
 public virtual void Move()
 {
     CurrentlySelectedInventorySlot.Move();
 }
 public virtual void UnEquip()
 {
     CurrentlySelectedInventorySlot.UnEquip();
 }
 public virtual void Use()
 {
     CurrentlySelectedInventorySlot.Use();
 }
        /// <summary>
        /// Handles the inventory related inputs and acts on them.
        /// </summary>
        protected virtual void HandleInventoryInput()
        {
            // if we don't have a current inventory display, we do nothing and exit
            if (_currentInventoryDisplay == null)
            {
                return;
            }

            // if the user presses the 'toggle inventory' key
            if (Input.GetKeyDown(ToggleInvKey) || Input.GetKeyDown(ToggleInvAltKey))
            {
                // if the inventory is not open
                if (!InventoryOpen)
                {
                    OpenInventory();
                }
                // if it's open
                else
                {
                    CloseInventory();
                }
            }

            // if we've only authorized input when open, and if the inventory is currently closed, we do nothing and exit
            if (InputOnlyWhenOpen && !InventoryOpen)
            {
                return;
            }

            // previous inventory panel
            if (Input.GetKeyDown(PrevInvKey) || Input.GetKeyDown(PrevInvAltKey))
            {
                if (_currentInventoryDisplay.GoToInventory(-1) != null)
                {
                    _currentInventoryDisplay = _currentInventoryDisplay.GoToInventory(-1);
                }
            }

            // next inventory panel
            if (Input.GetKeyDown(NextInvKey) || Input.GetKeyDown(NextInvAltKey))
            {
                if (_currentInventoryDisplay.GoToInventory(1) != null)
                {
                    _currentInventoryDisplay = _currentInventoryDisplay.GoToInventory(1);
                }
            }

            // move
            if (Input.GetKeyDown(MoveKey) || Input.GetKeyDown(MoveAltKey))
            {
                if (CurrentlySelectedInventorySlot != null)
                {
                    CurrentlySelectedInventorySlot.Move();
                }
            }

            // equip or use
            if (Input.GetKeyDown(EquipOrUseKey) || Input.GetKeyDown(EquipOrUseAltKey))
            {
                EquipOrUse();
            }

            // equip
            if (Input.GetKeyDown(EquipKey) || Input.GetKeyDown(EquipAltKey))
            {
                if (CurrentlySelectedInventorySlot != null)
                {
                    CurrentlySelectedInventorySlot.Equip();
                }
            }

            // use
            if (Input.GetKeyDown(UseKey) || Input.GetKeyDown(UseAltKey))
            {
                if (CurrentlySelectedInventorySlot != null)
                {
                    CurrentlySelectedInventorySlot.Use();
                }
            }

            // drop
            if (Input.GetKeyDown(DropKey) || Input.GetKeyDown(DropAltKey))
            {
                if (CurrentlySelectedInventorySlot != null)
                {
                    CurrentlySelectedInventorySlot.Drop();
                }
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Handles the inventory related inputs and acts on them.
        /// </summary>
        protected override void HandleInventoryInput()
        {
            // if the user presses the 'toggle inventory' key
            if (Input.GetKeyDown(ToggleInventoryKey) || Input.GetKeyDown(ToggleInventoryAltKey))
            {
                // if the inventory is not open
                if (!InventoryOpen)
                {
                    _isPressed = false;
                    OpenInventory();
                }
                // if it's open
                else
                {
                    _isPressed = true;
                    CloseInventory();
                    _isPressed = false;
                }
            }

            // if we've only authorized input when open, and if the inventory is currently closed, we do nothing and exit
            if (InputOnlyWhenOpen && !InventoryOpen)
            {
                return;
            }

            // vendor increase quantity
            if (Input.GetKeyDown(IncreaseQuantityKey) || Input.GetKeyDown(IncreaseQuantityAltKey))
            {
                IncreaseQuantity();
            }

            // vendor decrease quantity
            if (Input.GetKeyDown(DecreaseQuantityKey) || Input.GetKeyDown(DecreaseQuantityAltKey))
            {
                DecreaseQuantity();
            }

            // vendor sell
            if (Input.GetKeyDown(SellKey) || Input.GetKeyDown(SellAltKey))
            {
                SellItem();
            }

            // vendor buy
            if (Input.GetKeyDown(BuyKey) || Input.GetKeyDown(BuyAltKey))
            {
                BuyItem();
            }

            // vendor toggle inventory
            if (Input.GetKeyDown(ToggleVendorKey) || Input.GetKeyDown(ToggleVendorAltKey))
            {
                Vendor   openedVendor = null;
                Vendor[] vendors      = FindObjectsOfType <Vendor>();
                foreach (Vendor vendor in vendors)
                {
                    if (vendor.enabled && vendor.isOpen)
                    {
                        openedVendor = vendor;
                    }
                }
                if (openedVendor != null && openedVendor.canRollBackItems)
                {
                    if (openedVendor.isVendorRollBackOpen)
                    {
                        OpenVendorInventory();
                    }
                    else
                    {
                        OpenRollBackVendorInventory();
                    }
                }
            }

            // previous inventory panel
            if (Input.GetKeyDown(PrevInvKey) || Input.GetKeyDown(PrevInvAltKey))
            {
                if (_currentInventoryDisplay.GoToInventory(-1) != null)
                {
                    _currentInventoryDisplay = _currentInventoryDisplay.GoToInventory(-1);
                }
            }

            // next inventory panel
            if (Input.GetKeyDown(NextInvKey) || Input.GetKeyDown(NextInvAltKey))
            {
                if (_currentInventoryDisplay.GoToInventory(1) != null)
                {
                    _currentInventoryDisplay = _currentInventoryDisplay.GoToInventory(1);
                }
            }

            // move
            if (Input.GetKeyDown(MoveKey) || Input.GetKeyDown(MoveAltKey))
            {
                if (!_inVendor && CurrentlySelectedInventorySlot != null)
                {
                    MoveWithKeyboardJoypad();
                }
            }

            // equip or use
            if (Input.GetKeyDown(EquipOrUseKey) || Input.GetKeyDown(EquipOrUseAltKey))
            {
                if (!_inVendor && CurrentlySelectedInventorySlot != null)
                {
                    EquipOrUse();
                }
            }

            // split
            if (Input.GetKeyDown(SplitKey) || Input.GetKeyDown(SplitAltKey))
            {
                if (!_inVendor && CurrentlySelectedInventorySlot != null)
                {
                    SplitItemStack();
                }
            }

            // equip
            if (Input.GetKeyDown(EquipKey) || Input.GetKeyDown(EquipAltKey))
            {
                if (!_inVendor && CurrentlySelectedInventorySlot != null)
                {
                    CurrentlySelectedInventorySlot.Equip();
                }
            }

            // use
            if (Input.GetKeyDown(UseKey) || Input.GetKeyDown(UseAltKey))
            {
                if (!_inVendor && CurrentlySelectedInventorySlot != null)
                {
                    CurrentlySelectedInventorySlot.Use();
                }
            }

            // drop
            if (Input.GetKeyDown(DropKey) || Input.GetKeyDown(DropAltKey))
            {
                if (!_inVendor && CurrentlySelectedInventorySlot != null)
                {
                    CurrentlySelectedInventorySlot.Drop();
                }
            }
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Move method supporting move between inventories
 /// </summary>
 protected virtual void MultiInventoryMove(bool keyboard)
 {
     //We have selected first slot and hit Move button
     if (_isMoving == false)
     {
         _slotFrom          = CurrentlySelectedInventorySlot;
         _inventoryFrom     = _slotFrom.ParentInventoryDisplay.TargetInventory;
         _indexFrom         = _slotFrom.Index;
         _inventoryItemFrom = _inventoryFrom.Content[_indexFrom];
         //selected slot has an item in it so we gather rest of item data like item quantity and change sprite to Moved so we can see what happened
         if (_inventoryItemFrom != null)
         {
             _quantityFrom = _inventoryItemFrom.Quantity;
             //now we store none selected slot sprite to change it after moving
             _oldSprite = CurrentlySelectedInventorySlot.GetComponent <Image>().sprite;
             //now we change the slot sprite to Moved
             _slotFrom.GetComponent <Image>().sprite = _slotFrom.MovedSprite;
             //and by setting _isMoving to "true" we can wait for next click on slot
             _isMoving = true;
             if (keyboard)
             {
                 _useKeyboardJoypad = true;
             }
         }
     }
     //We have selected second slot
     else
     {
         _slotTo          = CurrentlySelectedInventorySlot;
         _inventoryTo     = _slotTo.ParentInventoryDisplay.TargetInventory;
         _indexTo         = _slotTo.Index;
         _inventoryItemTo = _inventoryTo.Content[_indexTo];
         if (_inventoryTo.name == _inventoryFrom.name)
         {
             if (_indexTo == _indexFrom)
             {
                 return;
             }
         }
         //second clicked slot is empty so we add item to this inventory, move to desired slot and remove it from first one
         if (_inventoryItemTo == null)
         {
             //we change first selected slot sprite back to old sprite
             _slotFrom.GetComponent <Image>().sprite = _oldSprite;
             //we add item to selected inventory
             _inventoryTo.Content[_indexTo] = _inventoryItemFrom.Copy();
             //we remove item from first inventory
             _inventoryFrom.DestroyItem(_indexFrom);
             _inventoryFrom.Content[_indexFrom] = null;
         }
         else
         {
             _quantityTo = _inventoryItemTo.Quantity;
             //we check if item is the same as we try to move
             if (_inventoryItemFrom.ItemName == _inventoryItemTo.ItemName)
             {
                 //we check what is the rest free quantity to close the full sack
                 int _restStack = _inventoryItemTo.MaximumStack - _quantityTo;
                 //if quantity of our item we try to move in less or equal than free quantity
                 if (_quantityFrom <= _restStack)
                 {
                     //we update quantity of our item
                     _inventoryItemTo.Quantity = _inventoryItemTo.Quantity + _quantityFrom;
                     //we remove item from first inventory
                     _inventoryFrom.DestroyItem(_indexFrom);
                 }
                 //if quantity of our item we try to move is higher than free quantity
                 else if (_quantityFrom > _restStack)
                 {
                     //we update quantity of our item to full stack
                     _inventoryItemTo.Quantity = _inventoryItemTo.MaximumStack;
                     //we check what's left after moving some items
                     int _restToAddQuantity = _quantityFrom - _restStack;
                     //if there is free slot in second inventory
                     if (_inventoryTo.NumberOfFreeSlots >= 1)
                     {
                         //we need to find first free slot
                         int _fistFreeSlot = FindFirstFreeSlot(_inventoryTo);
                         //we add rest of item quantity to inventory as new item
                         _inventoryTo.Content[_fistFreeSlot]          = _inventoryItemFrom;
                         _inventoryTo.Content[_fistFreeSlot].Quantity = _restToAddQuantity;
                         //we remove item from first inventory
                         _inventoryFrom.DestroyItem(_indexFrom);
                     }
                     //there is no free slots in second inventory
                     else
                     {
                         //we reduce item quantity in first inventory
                         _inventoryFrom.Content[_indexFrom].Quantity = _inventoryFrom.Content[_indexFrom].Quantity - _restStack;
                     }
                 }
             }
             else
             {
                 //we need to create copy of item from first inventory
                 InventoryItem _tempItemFrom = _inventoryItemFrom.Copy();
                 //we need to create copy of item from second inventory
                 InventoryItem _tempItemTo = _inventoryItemTo.Copy();
                 //we remove item from first inventory
                 _inventoryFrom.DestroyItem(_indexFrom);
                 //we remove item from second inventory
                 _inventoryTo.DestroyItem(_indexTo);
                 //we add item from first inventory to second inventory
                 _inventoryTo.Content[_indexTo] = _tempItemFrom.Copy();
                 //we add item from second inventory to first inventory
                 _inventoryFrom.Content[_indexFrom] = _tempItemTo.Copy();
             }
         }
         _isMoving = false;
         if (keyboard)
         {
             _useKeyboardJoypad = false;
         }
         MMInventoryEvent.Trigger(MMInventoryEventType.ContentChanged, null, _inventoryFrom.name, null, 0, 0);
         MMInventoryEvent.Trigger(MMInventoryEventType.ContentChanged, null, _inventoryTo.name, null, 0, 0);
     }
 }