/// <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); }
/// <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); }
public MessageCode SaveUsedItem(ConstellationInfoEntity item) { if (!CheckLapover(item.ItemType, item.ItemCount)) { return(MessageCode.ItemCountInvalid); } Items.Add(item); _synchronized = false; return(MessageCode.Success); }
/// <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); }
/// <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); }
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; } } } } } }