예제 #1
0
        public void OnInventorySlotClick(UiSlot uiSlot)
        {
            RefreshPrevSelectedSlot();

            if (_prevSelectedSlot == uiSlot)
            {
                if (uiSlot.ItemModel.Item is ConsumableItem)
                {
                    if (uiSlot.ItemModel.Amount == 1)
                    {
                        uiSlot.SetActiveSlot(false);
                    }

                    UseItem(uiSlot.ItemModel);
                }
                else
                {
                    uiSlot.SetActiveSlot(false);
                }
            }
            else if (_prevSelectedSlot == null)
            {
                if (uiSlot.ItemModel != null)
                {
                    uiSlot.SetActiveSlot(true);
                }
            }
            else
            {
                if (uiSlot.ItemModel == null || uiSlot.ItemModel.Item == null)
                {
                    if (_prevSelectedSlot.ItemModel.Amount == 1)
                    {
                        _prevSelectedSlot.SetActiveSlot(false);
                    }

                    uiSlot.SetData(_gameManager, HolderObjectFactory.GetItem(_prevSelectedSlot.ItemModel.Item.GetType(), 1));
                    _prevSelectedSlot.ChangeAmount(1);
                }
                else if (uiSlot.ItemModel.Item.GetType() == _prevSelectedSlot.ItemModel.Item.GetType() &&
                         (uiSlot.ItemModel.Item.Durability == null || !uiSlot.ItemModel.Item.ShowDurability))
                {
                    if (_prevSelectedSlot.ItemModel.Amount == 1)
                    {
                        _prevSelectedSlot.SetActiveSlot(false);
                    }

                    _gameManager.PlayerModel.ChangeItemAmount(uiSlot, -1);
                    _gameManager.PlayerModel.ChangeItemAmount(_prevSelectedSlot, 1);
                }
                else
                {
                    var curModel = uiSlot.ItemModel;
                    uiSlot.SetData(_gameManager, _prevSelectedSlot.ItemModel);
                    _prevSelectedSlot.SetData(_gameManager, curModel);
                    _prevSelectedSlot.SetActiveSlot(false);
                }
            }
        }