public void setEquip <E>(T slotItem, PackContainer <E> container, E equipItem = null) where E : PackContItem, new() { //if (slotItem == null) return; //var oriEquip = getEquip<E>(slotItem); //container.removeItem(equipItem); // 移出装备 //container.pushItem(oriEquip); // 卸下原装备 setEquip(slotItem, equipItem); // 设置新装备 }
/* * /// <summary> * /// 拆分物品 * /// </summary> * /// <param name="item">物品</param> * /// <param name="count">数目</param> * public void splitItem(T item, int count) { * if (count >= item.count) return; * var copyItem = (T)item.copy(false); * copyItem.setCount(count); * pushItem(copyItem); * item.leave(count); * } * * /// <summary> * /// 合并物品 * /// </summary> * /// <param name="items">物品数组</param> * public void mergeItems(T[] items) { * var leftIndex = 0; * var leftItem = items[leftIndex]; * for (int i = 1; i < items.Length; i++) { * var item = items[i]; * item.setCount(leftItem.enter(item.count)); * if (leftItem.isFull()) // 如果最左物品已满,切换之 * leftItem = items[++leftIndex]; * } * for (int i = items.Length - 1; i > leftIndex; --i) * removeItem(items[i]); * } */ /// <summary> /// 转移物品 /// </summary> /// <param name="container"></param> public bool transferItem(PackContainer <T> container, T item) { return(container.acceptItem(prepareItem(item))); }
public void setEquip <E>(int slotIndex, PackContainer <E> container, E equipItem = null) where E : PackContItem, new() { setEquip(getSlotItem(slotIndex), container, equipItem); }
/// <summary> /// 设置装备 /// </summary> /// <typeparam name="E">装备类型</typeparam> /// <param name="container">装备容器</param> /// <param name="equipItem">装备物品</param> public void setEquip <E>(PackContainer <E> container, E equipItem = null) where E : PackContItem, new() { setEquip(getSlotItemByEquipItem(equipItem), container, equipItem); }