Beispiel #1
0
 /// <summary>
 /// 按数量删除物品
 /// </summary>
 /// <param name="item"></param>
 /// <param name="count"></param>
 /// <returns></returns>
 public MessageCode Delete(ConstellationInfoEntity item, int count = 1, bool isUserDelete = false)
 {
     if (item != null)
     {
         if (item.Status == (int)EnumItemStatus.Locked)
         {
             return(MessageCode.ItemIsLocked);
         }
         try
         {
             if (count > 0 && item.ItemCount > count)
             {
                 item.ItemCount -= count;
                 return(Update(item, count * -1));
             }
             else
             {
                 _itemsDic.Remove(item.ItemId);
                 _blanks.Add(item.GridIndex, item.GridIndex);
                 Items.Remove(item);
                 _itemCount--;
                 _synchronized = false;
                 return(MessageCode.Success);
             }
         }
         catch (Exception ex)
         {
             SystemlogMgr.Error("ConstellationPackageFrame Delete", ex);
             return(MessageCode.Exception);
         }
     }
     return(MessageCode.ItemNotExists);
 }
Beispiel #2
0
 /// <summary>
 /// 更新物品
 /// </summary>
 /// <param name="item">物品</param>
 /// <returns>成功返回true</returns>
 public MessageCode Update(ConstellationInfoEntity item, int operationCount = 1)
 {
     if (!CheckLapover(item.ItemType, item.ItemCount))
     {
         return(MessageCode.ItemLapOver);
     }
     try
     {
         for (int i = 0; i < Items.Count; i++)
         {
             if (Items[i].Equals(item))
             {
                 Items[i]      = item;
                 _synchronized = false;
                 return(MessageCode.Success);
             }
         }
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("ConstellationPackageFrame Update", ex);
         return(MessageCode.Exception);
     }
     return(MessageCode.ItemNotExists);
 }
Beispiel #3
0
 public MessageCode SaveUsedItem(ConstellationInfoEntity item)
 {
     if (!CheckLapover(item.ItemType, item.ItemCount))
     {
         return(MessageCode.ItemCountInvalid);
     }
     Items.Add(item);
     _synchronized = false;
     return(MessageCode.Success);
 }
Beispiel #4
0
        /// <summary>
        /// 生成物品基本信息
        /// </summary>
        /// <param name="itemId"></param>
        /// <param name="itemType"></param>
        /// <param name="itemCode"></param>
        /// <param name="itemCount"></param>
        /// <param name="isBinding"></param>
        /// <returns></returns>
        public ConstellationInfoEntity BuildItem(Guid itemId, int itemType, int itemCode, int itemCount, bool isBinding)
        {
            var item = new ConstellationInfoEntity(itemId, itemCode, itemType);

            item.IsBinding = isBinding;

            item.GridIndex = GetBlankGrid();
            _blanks.Remove(item.GridIndex);
            _itemCount++;

            if (itemCount == 0)
            {
                itemCount = 1;
            }
            item.ItemCount = itemCount;
            return(item);
        }
Beispiel #5
0
 /// <summary>
 /// 按数量拆分物品
 /// </summary>
 /// <param name="item"></param>
 /// <param name="count"></param>
 /// <returns></returns>
 public MessageCode Split(ConstellationInfoEntity item, int count)
 {
     if (item != null)
     {
         if (IsFull)
         {
             return(MessageCode.ItemPackageFull);
         }
         try
         {
             if (count <= 0)
             {
                 return(MessageCode.NbParameterError);
             }
             if (item.ItemCount <= count)
             {
                 return(MessageCode.ItemSplitCountOver);
             }
             else
             {
                 item.ItemCount = item.ItemCount - count;
                 var code = Update(item, count * -1);
                 if (code != MessageCode.Success)
                 {
                     return(code);
                 }
                 var newItem = item.Clone();
                 newItem.GridIndex = GetBlankGrid();
                 _blanks.Remove(newItem.GridIndex);
                 _itemCount++;
                 newItem.ItemId    = ShareUtil.GenerateComb();
                 newItem.ItemCount = count;
                 LastAddItemId     = newItem.ItemId;
                 return(SaveItem(newItem));
             }
         }
         catch (Exception ex)
         {
             SystemlogMgr.Error("ConstellationPackbager Split", ex);
             return(MessageCode.Exception);
         }
     }
     return(MessageCode.ItemNotExists);
 }
Beispiel #6
0
        void Stacking(ConstellationInfoEntity item, List <ConstellationInfoEntity> removeList)
        {
            int lapoverCount = CacheFactory.ItemsdicCache.GetLapover(item.ItemType);

            if (lapoverCount > 1)//可堆叠
            {
                if (item.ItemCount < lapoverCount)
                {
                    for (int i = 0; i < Items.Count; i++)
                    {
                        var curItem = Items[i];
                        if (removeList.Contains(curItem))
                        {
                            continue;
                        }
                        if (curItem.ItemCount < lapoverCount && curItem.ItemId != item.ItemId && curItem.ItemCode == item.ItemCode && curItem.IsBinding == item.IsBinding)
                        {
                            int addCount = lapoverCount - item.ItemCount;
                            if (curItem.ItemCount > addCount)
                            {
                                item.ItemCount   += addCount;
                                curItem.ItemCount = curItem.ItemCount - addCount;
                            }
                            else
                            {
                                item.ItemCount += curItem.ItemCount;
                                removeList.Add(curItem);
                            }

                            if (item.ItemCount == lapoverCount)
                            {
                                return;
                            }
                        }
                    }
                }
            }
        }