/// <summary> /// Пытается найти предмет в сумке /// </summary> /// <param name="slotData">Сумка, в которой ведётся поиск</param> /// <param name="item">Искомый предмет</param> /// <returns>Возвращает контейнер предмета + позиция этого предмета в сумке</returns> public ItemSlot FindItemSlot(SlotData slotData, Item item) { if(slotData==null) return null; foreach(ItemSlot itemSlot in slotData.Items) if(itemSlot.item == item) return itemSlot; return null; }
public static bool AddInInventory(Item item) { UInventory inventory = SingletonNames.getInventory().GetComponent<UInventory>(); if (inventory!=null) { if(inventory.addItem(item.Clone())!=0) return false; return true; } else { Debug.LogError("Ссылка на инвентарь не верна! ["+SingletonNames.Constants.GUI.INVENTORY+"]"); return false; } }
/// <summary> /// Пытается добавить предмет item в слот slotData /// </summary> /// <param name="slotData">Сумка, в которую пытаются добавить предмет</param> /// <param name="item">Добавляемый предмет</param> /// <returns>Возвращает число экземпляров item НЕ ДОБАВЛЕННЫХ в слот</returns> public int AddItem(SlotData slotData, Item item) { foreach (ItemSlot i in slotData.Items) { // пытаемся найти идентичные предметы и попробовать объединить их if (i.item.Equals(item) && !i.item.isFullCount()) { // если предмет идентичен, и он не полностью укомплектован if (item.getCount() != 0) // пока у нас есть остаток экземпляров, которые надо раскидать item.setCount(i.item.incCount(item.getCount())); if (item.getCount() == 0) // экземпляры кончились, можно выходить return 0; } } for (int y = 1; y <= slotData.position.CellsYCount; y++) { // пытаемся найти свободную область, и засунуть предмет целиком (не разделяя) for (int x = 1; x <= slotData.position.CellsXCount; x++) { bool result = true; foreach (ItemSlot i in slotData.Items) { if (x >= i.getPosition().X && x < i.getPosition().X + i.item.getSize().getWidth() && y >= i.getPosition().Y && y < i.getPosition().Y + i.item.getSize().getHeight()) { result = false; break; } } if (result) { // предметы можно полностью добавить slotData.Items.Add(new ItemSlot(item.Clone(), new ItemPosition(x, y))); return 0; } } } return item.getCount(); }
public ItemContainer(Item item, IItemSelectedListener listener) { this.item = item; this.listener = listener; }
/// <summary> /// Пытается добавить предмет item в инвентарь /// </summary> /// <param name="item">Добавляемый предмет</param> /// <returns>Возвращает число НЕ добавленных экземпляров предмета, 0 - если педмет успешно добавлен</returns> public int addItem(Item item) { return InventoryAlgoritm.getInstance().addItem(slots, item); }
/// <summary> /// Удаляет предмет Item из инвентаря /// </summary> /// <param name="item">Удаляемый предмет</param> /// <param name="equals">если true - проверяется эквивалентность (item1.Equals(item2)), если false, проверяется адрес (item1==item2)</param> /// <param name="full">При full=true, удаляет предмет независимо от колличества экземпляров</param> /// <param name="count">Число удаляемых экземпляров (только при full=false)</param> /// <returns>Возвращает результат операции удаления (false = предмет не найден, или найденных экземпляров меньше count)</returns> public bool removeItem(Item item, bool equals = true, bool full = true, int count = 1) { return InventoryAlgoritm.getInstance().removeItem(slots, item, equals, full, count); }
public bool removeItem(Item item) { return InventoryAlgoritm.getInstance().removeItem(slots, item, false, true); }
public void setSelectedItem(Item selectedItem) { this.selectedItem = selectedItem; }
public void OnItemSelect(Item item) { inventory.addItem(item.Clone()); }
public ItemBounds(ItemSlot itemSlot) { old = itemSlot; this.item = itemSlot.item; Reset(); }