예제 #1
0
        public void SendItem(
            int count,
            PanelType panelType,
            ItemListController sender,
            ItemListController receiver,
            int currentID,
            ItemNodeUI nodeUI)
        {
            if (sender == null || receiver == null || (Object.op_Equality((Object)nodeUI, (Object)null) || nodeUI.Item == null) || (count <= 0 || nodeUI.Item.Count <= 0))
            {
                return;
            }
            StuffItem stuffItem1 = new StuffItem(nodeUI.Item);

            stuffItem1.Count = Mathf.Min(count, nodeUI.Item.Count);
            int num = receiver.AddItem(stuffItem1);

            if (num <= 0)
            {
                return;
            }
            switch (panelType)
            {
            case PanelType.Pouch:
            case PanelType.Chest:
                if (this.SelectedInventoryUI != null)
                {
                    List <StuffItem> itemList   = this.SelectedInventoryUI.itemList;
                    ItemListUI       itemListUi = this.SelectedInventoryUI.itemListUI;
                    StuffItem        stuffItem2 = itemList.Find((Predicate <StuffItem>)(x => x == nodeUI.Item));
                    if (stuffItem2 != null)
                    {
                        stuffItem2.Count -= num;
                        if (stuffItem2.Count <= 0)
                        {
                            itemList.Remove(stuffItem2);
                            itemListUi.RemoveItemNode(currentID);
                            itemListUi.ForceSetNonSelect();
                            this._infoPanelUI.DetachItem();
                        }
                        Action refreshEvent = sender.RefreshEvent;
                        if (refreshEvent != null)
                        {
                            refreshEvent();
                            break;
                        }
                        break;
                    }
                    break;
                }
                break;

            case PanelType.DecidedItem:
            case PanelType.CreatedItem:
                if (sender.RemoveItem(currentID, new StuffItem(nodeUI.Item)
                {
                    Count = num
                }) <= 0)
                {
                    this._infoPanelUI.DetachItem();
                }
                if (this.SelectedInventoryUI != null && Object.op_Inequality((Object)this.SelectedInventoryUI.itemListUI, (Object)null))
                {
                    Action refreshEvent = this.SelectedInventoryUI.ListController.RefreshEvent;
                    if (refreshEvent != null)
                    {
                        refreshEvent();
                        break;
                    }
                    break;
                }
                break;
            }
            this.OnSendItem.OnNext(stuffItem1);
        }