public int GetVacancySlotIndex(ItemPackage.ESlotType slotType, bool isMissionPkg = false)
 {
     if (isMissionPkg)
     {
         _missionPak.GetVacancySlotIndex(slotType);
     }
     return(_playerPak.GetVacancySlotIndex(slotType));
 }
 public SlotList GetSlotList(ItemPackage.ESlotType type, bool isMissionPkg = false)
 {
     if (isMissionPkg)
     {
         return(_missionPak.GetSlotList(type));
     }
     return(_playerPak.GetSlotList(type));
 }
 public ItemObject GetItem(ItemPackage.ESlotType slotType, int index, bool isMissionPkg = false)
 {
     if (isMissionPkg)
     {
         return(_missionPak.GetItem(slotType, index));
     }
     return(_playerPak.GetItem(slotType, index));
 }
 public int PutItem(ItemObject item, int slotIndex, ItemPackage.ESlotType slotType)
 {
     if (item.protoData.category == quest_item)
     {
         return(_missionPak.PutItem(item, slotIndex, slotType));
     }
     else
     {
         return(_playerPak.PutItem(item, slotIndex, slotType));
     }
 }
 public void Clear(ItemPackage.ESlotType type = ItemPackage.ESlotType.Max, bool isMissionPkg = false)
 {
     if (type == ItemPackage.ESlotType.Max)
     {
         GetSlotList(ItemPackage.ESlotType.Item).Clear();
         GetSlotList(ItemPackage.ESlotType.Equipment).Clear();
         GetSlotList(ItemPackage.ESlotType.Resource).Clear();
         GetSlotList(ItemPackage.ESlotType.Armor).Clear();
         GetSlotList(ItemPackage.ESlotType.Item, true).Clear();
     }
     else
     {
         if (isMissionPkg)
         {
             _missionPak.GetSlotList(type).Clear();
         }
         else
         {
             _playerPak.GetSlotList(type).Clear();
         }
     }
     if (isMissionPkg)
     {
         _missionPak.changeEventor.Dispatch(new ItemPackage.EventArg()
         {
             op = ItemPackage.EventArg.Op.Clear, itemObj = null
         });
     }
     else
     {
         _playerPak.changeEventor.Dispatch(new ItemPackage.EventArg()
         {
             op = ItemPackage.EventArg.Op.Clear, itemObj = null
         });
     }
 }
    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);
                    }
                }
            }
        }
    }
Exemple #7
0
    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);
            }
        }
    }
 public static SlotList GetSlotList(ItemPackage.ESlotType type)
 {
     return(_itemPackage.GetSlotList(type));
 }
 public void Sort(ItemPackage.ESlotType type)
 {
     _playerPak.Sort(type);
     _missionPak.Sort(type);
 }
Exemple #10
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);
                }
            }
        }
    }