/// <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;
        }
Beispiel #2
0
        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();
        }
Beispiel #4
0
 public ItemContainer(Item item, IItemSelectedListener listener)
 {
     this.item     = item;
     this.listener = listener;
 }
Beispiel #5
0
 /// <summary>
 /// Пытается добавить предмет item в инвентарь
 /// </summary>
 /// <param name="item">Добавляемый предмет</param>
 /// <returns>Возвращает число НЕ добавленных экземпляров предмета, 0 - если педмет успешно добавлен</returns>
 public int addItem(Item item)
 {
     return InventoryAlgoritm.getInstance().addItem(slots, item);
 }
Beispiel #6
0
 /// <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);
 }
Beispiel #7
0
 public bool removeItem(Item item)
 {
     return InventoryAlgoritm.getInstance().removeItem(slots, item, false, true);
 }
Beispiel #8
0
 public void setSelectedItem(Item selectedItem)
 {
     this.selectedItem = selectedItem;
 }
Beispiel #9
0
 public void OnItemSelect(Item item)
 {
     inventory.addItem(item.Clone());
 }
Beispiel #10
0
 public ItemBounds(ItemSlot itemSlot)
 {
     old = itemSlot;
         this.item = itemSlot.item;
         Reset();
 }