コード例 #1
0
            public static bool CanAdd(this ItemPackage package, IEnumerable <ItemAsset.MaterialItem> list)
            {
                int[] sum = new int[(int)ItemPackage.ESlotType.Max];

                foreach (ItemAsset.MaterialItem mi in list)
                {
                    int type = (int)ItemPackage.GetSlotType(mi.protoId);
                    if (type < sum.Length)
                    {
                        sum[type] += SlotListHelper.SlotListAccessor.GetNeedSlotCount(mi.protoId, mi.count);
                    }
                }

                for (int i = 0; i < sum.Length; i++)
                {
                    SlotList slotList = package.GetSlotList((ItemPackage.ESlotType)i);

                    if (slotList.GetVacancyCount() < sum[i])
                    {
                        return(false);
                    }
                }

                return(true);
            }
コード例 #2
0
            public static bool Add(this ItemPackage package, int prototypeId, int count, bool newFlag = false)
            {
                if (count <= 0)
                {
                    return(false);
                }

                SlotList accessor = package.GetSlotList(ItemPackage.GetSlotType(prototypeId));

                if (null == accessor)
                {
                    return(false);
                }
                if (ItemProto.Mgr.Instance.Get(prototypeId).maxStackNum > 1)
                {
                    return(accessor.Add(prototypeId, count, newFlag));
                }
                else
                {
                    bool result = true;
                    for (int i = 0; i < count; i++)
                    {
                        if (result)
                        {
                            result = accessor.Add(ItemMgr.Instance.CreateItem(prototypeId), newFlag);
                        }
                        else
                        {
                            accessor.Add(ItemMgr.Instance.CreateItem(prototypeId), newFlag);
                        }
                    }
                    return(result);
                }
            }
コード例 #3
0
            public static bool CanAdd(this ItemPackage package, int prototypeId, int count)
            {
                SlotList accessor = package.GetSlotList(ItemPackage.GetSlotType(prototypeId));

                if (null == accessor)
                {
                    return(false);
                }

                return(accessor.CanAdd(prototypeId, count));
            }
コード例 #4
0
            public static bool DestroyItem(this ItemPackage package, ItemObject item, int count)
            {
                if (count <= 0)
                {
                    return(false);
                }

                if (item.GetCount() < count)
                {
                    return(false);
                }

                SlotList accessor = package.GetSlotList(ItemPackage.GetSlotType(item.protoId));

                return(accessor.DestroyItem(item.instanceId, count));
            }
コード例 #5
0
            public static bool Set(this ItemPackage package, int prototypeId, int count)
            {
                if (count <= 0)
                {
                    return(false);
                }

                SlotList accessor = package.GetSlotList(ItemPackage.GetSlotType(prototypeId));

                if (null == accessor)
                {
                    return(false);
                }

                return(accessor.Set(prototypeId, count));
            }
コード例 #6
0
            public static bool AddAsOneItem(this ItemPackage package, int prototypeId, int count, bool newFlag = false)
            {
                if (count <= 0)
                {
                    return(false);
                }

                SlotList accessor = package.GetSlotList(ItemPackage.GetSlotType(prototypeId));

                if (null == accessor)
                {
                    return(false);
                }

                return(accessor.AddAsNew(prototypeId, count, newFlag));
            }
コード例 #7
0
    public SlotList GetSlotList(int prototypeId)
    {
        ItemProto itemData = ItemProto.GetItemData(prototypeId);

        if (itemData == null)
        {
            return(null);
        }
        if (itemData.category == quest_item)
        {
            return(_missionPak.GetSlotList(ItemPackage.GetSlotType(prototypeId)));
        }
        else
        {
            return(_playerPak.GetSlotList(ItemPackage.GetSlotType(prototypeId)));
        }
    }
コード例 #8
0
            public static bool DestroyItem(this ItemPackage package, int instanceId, int count)
            {
                if (count <= 0)
                {
                    return(false);
                }

                ItemObject item = ItemMgr.Instance.Get(instanceId);

                if (item.stackCount < count)
                {
                    return(false);
                }

                SlotList accessor = package.GetSlotList(ItemPackage.GetSlotType(item.protoId));

                return(accessor.DestroyItem(instanceId, count));
            }
コード例 #9
0
    public void OnDropItem(Grid_N grid)
    {
        if (this.mRepairMachine.m_Repair != null && this.mRepairMachine.m_Repair.IsRepairingM)
        {
            return;
        }

        if (SelectItem_N.Instance.Place == ItemPlaceType.IPT_HotKeyBar || SelectItem_N.Instance.Place == ItemPlaceType.IPT_Repair)
        {
            return;
        }

        //lz-2016.09.19 如果是ISO就返回,营地修理机不支持修ISO
        if (WhiteCat.CreationHelper.GetCreationItemClass(SelectItem_N.Instance.ItemObj) != WhiteCat.CreationItemClass.None)
        {
            //lz-2016.10.23 增加只能在基地修理的提示
            PeTipMsg.Register(PELocalization.GetString(8000843), PeTipMsg.EMsgLevel.Warning);
            return;
        }

        ActiveWnd();

        Repair dragRepairItem = SelectItem_N.Instance.ItemObj.GetCmpt <Repair>();

        if (dragRepairItem == null)
        {
            return;
        }

        if (dragRepairItem.protoData.repairMaterialList == null || dragRepairItem.protoData.repairMaterialList.Count == 0)
        {
            return;
        }

        //多人模式
        if (Pathea.PeGameMgr.IsMulti)
        {
            int[] itemlist = new int[1];
            itemlist[0] = SelectItem_N.Instance.ItemObj.instanceId;
            _net.InsertItemList(itemlist);
            return;
        }
        else
        {
            //lz-2016.07.29 在修理机拖入物品的时候,如果里面有东西就先尝试取出里面的物品到背包,执行成功的时候再放进新的物品
            if (null == mRepairItem.ItemObj)
            {
                UpdateItem(dragRepairItem);
                SelectItem_N.Instance.RemoveOriginItem();
                SelectItem_N.Instance.SetItem(null);
            }
            else
            {
                //lz-2016.10.19 如果拖动的Item和放置的Item是同一类型,就直接交换ItemObj数据
                ItemPackage.ESlotType dropType = ItemPackage.GetSlotType(mRepairItem.ItemObj.protoId);
                ItemPackage.ESlotType dragType = ItemPackage.GetSlotType(dragRepairItem.itemObj.protoId);
                if (dropType == dragType && null != SelectItem_N.Instance.Grid)
                {
                    if (SelectItem_N.Instance.Grid.onGridsExchangeItem != null)
                    {
                        SelectItem_N.Instance.Grid.onGridsExchangeItem(SelectItem_N.Instance.Grid, mRepairItem.ItemObj);
                        UpdateItem(dragRepairItem);
                        SelectItem_N.Instance.SetItem(null);
                    }
                }
                //lz-2016.10.19 如果不是同一类型,或者没有Grid,就先添加,后移除
                else
                {
                    if (TryAddCurRepairItemToPlayerPackage())
                    {
                        UpdateItem(dragRepairItem);
                        SelectItem_N.Instance.RemoveOriginItem();
                        SelectItem_N.Instance.SetItem(null);
                    }
                }
            }
        }
    }
コード例 #10
0
ファイル: CSUI_Grid.cs プロジェクト: shrubba/planetexplorers
    void OnDropItem(Grid_N grid)
    {
        //1.check
        if (SelectItem_N.Instance.Place == ItemPlaceType.IPT_HotKeyBar && SelectItem_N.Instance.Place == ItemPlaceType.IPT_Null)
        {
            SelectItem_N.Instance.SetItem(null);
            return;
        }

        if (onCheckItem != null && !onCheckItem(SelectItem_N.Instance.ItemObj, ECheckItemType.OnDrop))
        {
            return;
        }

        //2.send 3.do
        if (GameConfig.IsMultiMode)
        {
            OnDropItemMulti(grid, m_Index);
            return;
        }

        ItemObject dragitem = SelectItem_N.Instance.ItemObj;

        if (dragitem == null)
        {
            return;
        }

        ItemObject dropItem = grid.ItemObj;
        ItemObject oldItem  = grid.ItemObj;

        if (dropItem == null)
        {
            grid.SetItem(dragitem);
            if (OnItemChanged != null)
            {
                OnItemChanged(dragitem, oldItem, m_Index);
            }

            SelectItem_N.Instance.RemoveOriginItem();
            SelectItem_N.Instance.SetItem(null);
        }
        else
        {
            Pathea.PlayerPackageCmpt pkg      = Pathea.PeCreature.Instance.mainPlayer.GetCmpt <Pathea.PlayerPackageCmpt>();
            ItemPackage.ESlotType    dropType = ItemPackage.GetSlotType(dropItem.protoId);
            ItemPackage.ESlotType    dragType = ItemPackage.GetSlotType(dragitem.protoId);

            //lz-2016.10.18 如果拖动的Item和放置的Item是同一类型,就直接交换ItemObj数据
            if (dropType == dragType && null != SelectItem_N.Instance.Grid)
            {
                if (SelectItem_N.Instance.Grid.onGridsExchangeItem != null)
                {
                    SelectItem_N.Instance.Grid.onGridsExchangeItem(SelectItem_N.Instance.Grid, dropItem);
                    grid.SetItem(dragitem);
                    SelectItem_N.Instance.SetItem(null);
                    if (OnItemChanged != null)
                    {
                        OnItemChanged(dragitem, oldItem, m_Index);
                    }
                }
            }
            //lz-2016.10.18 如果不是同一类型,或者没有Grid,就先添加,后移除
            else if (pkg.package.CanAdd(dropItem))
            {
                pkg.package.AddItem(dropItem);
                grid.SetItem(dragitem);
                SelectItem_N.Instance.RemoveOriginItem();
                SelectItem_N.Instance.SetItem(null);
            }
            if (OnItemChanged != null)
            {
                OnItemChanged(dragitem, oldItem, m_Index);
            }
        }
    }
コード例 #11
0
    void OnDropItem(Grid_N grid)
    {
        //lz-2016.11.16 当前包裹数据为空的时候直接返回
        if (CSUI_MainWndCtrl.Instance == null || grid == null || null == m_CurPack)
        {
            return;
        }

        if (!CSUI_MainWndCtrl.IsWorking())
        {
            return;
        }


        if (!m_IsWorking)
        {
            if (OpStatusEvent != null)
            {
                OpStatusEvent(EEventType.CantWork, CSUtils.GetEntityName(CSConst.etStorage), null);
            }
            return;
        }

        if (null == SelectItem_N.Instance.ItemObj || SelectItem_N.Instance.Place == ItemPlaceType.IPT_HotKeyBar)
        {
            SelectItem_N.Instance.SetItem(null);
            return;
        }

        if (grid.ItemObj == null)
        {
            switch (SelectItem_N.Instance.Place)
            {
            default:

                if (GameConfig.IsMultiMode)
                {
                    if (SelectItem_N.Instance.GridMask != GridMask.GM_Mission)
                    {
                        if (m_storage == null)
                        {
                            if (SelectItem_N.Instance.Place == ItemPlaceType.IPT_Bag)
                            {
                                PlayerNetwork.mainPlayer.RequestPersonalStorageStore(SelectItem_N.Instance.ItemObj.instanceId, grid.ItemIndex);
                            }
                            else if (SelectItem_N.Instance.Place == ItemPlaceType.IPT_NPCStorage)
                            {
                                PlayerNetwork.mainPlayer.RequestPersonalStorageExchange(SelectItem_N.Instance.ItemObj.instanceId, SelectItem_N.Instance.Index, grid.ItemIndex);
                            }
                        }
                        else
                        {
                            if (SelectItem_N.Instance.Place == ItemPlaceType.IPT_Bag)
                            {
                                m_storage._ColonyObj._Network.STO_Store(grid.ItemIndex, SelectItem_N.Instance.ItemObj);
                            }
                            else if (SelectItem_N.Instance.Place == ItemPlaceType.IPT_CSStorage)
                            {
                                m_storage._ColonyObj._Network.STO_Exchange(SelectItem_N.Instance.ItemObj.instanceId, SelectItem_N.Instance.Index, grid.ItemIndex);
                            }

                            return;
                        }
                        if (OpStatusEvent != null)
                        {
                            OpStatusEvent(EEventType.PutItemInto, SelectItem_N.Instance.ItemObj.protoData.GetName(), CSUtils.GetEntityName(CSConst.etStorage));
                        }
                    }
                }
                else
                {
                    if (SelectItem_N.Instance.GridMask != GridMask.GM_Mission)
                    {
                        SelectItem_N.Instance.RemoveOriginItem();
                        grid.SetItem(SelectItem_N.Instance.ItemObj);
                        m_CurPack[grid.ItemIndex] = SelectItem_N.Instance.ItemObj;
                        if (OpStatusEvent != null)
                        {
                            OpStatusEvent(EEventType.PutItemInto, SelectItem_N.Instance.ItemObj.protoData.GetName(), CSUtils.GetEntityName(CSConst.etStorage));
                        }
                    }
                }


                SelectItem_N.Instance.SetItem(null);
                break;
            }
        }
        else
        {
            if (GameConfig.IsMultiMode)
            {
                if (m_storage == null)
                {
                    if (SelectItem_N.Instance.Place == ItemPlaceType.IPT_NPCStorage)
                    {
                        PlayerNetwork.mainPlayer.RequestPersonalStorageExchange(SelectItem_N.Instance.ItemObj.instanceId, SelectItem_N.Instance.Index, grid.ItemIndex);
                    }
                }
                else
                {
                    if (SelectItem_N.Instance.Place == ItemPlaceType.IPT_CSStorage)
                    {
                        m_storage._ColonyObj._Network.STO_Exchange(SelectItem_N.Instance.ItemObj.instanceId, SelectItem_N.Instance.Index, grid.ItemIndex);
                    }

                    return;
                }
            }
            else
            {
                Pathea.PlayerPackageCmpt pkg = Pathea.PeCreature.Instance.mainPlayer.GetCmpt <Pathea.PlayerPackageCmpt>();

                ItemObject dragItem = SelectItem_N.Instance.ItemObj;
                ItemObject dropItem = grid.ItemObj;

                ItemPackage.ESlotType dropType = ItemPackage.GetSlotType(dropItem.protoId);
                ItemPackage.ESlotType dragType = ItemPackage.GetSlotType(dragItem.protoId);

                //lz-2016.10.18 如果拖动的Item和放置的Item是同一类型,就直接交换ItemObj数据
                if (dropType == dragType && null != SelectItem_N.Instance.Grid)
                {
                    if (SelectItem_N.Instance.Grid.onGridsExchangeItem != null)
                    {
                        SelectItem_N.Instance.Grid.onGridsExchangeItem(SelectItem_N.Instance.Grid, dropItem);
                        grid.SetItem(dragItem);
                        m_CurPack[grid.ItemIndex] = grid.ItemObj;
                        SelectItem_N.Instance.SetItem(null);
                    }
                }
                //lz-2016.10.18 如果不是同一类型,或者没有Grid,就先添加,后移除
                else if (pkg.package.CanAdd(dropItem))
                {
                    pkg.package.AddItem(dropItem);
                    grid.SetItem(dragItem);
                    SelectItem_N.Instance.RemoveOriginItem();
                    SelectItem_N.Instance.SetItem(null);
                }
            }
        }
    }