/// <summary>Помещает указанный предмет в указанную позицию контейнера (из старого контейнера (если есть))</summary> /// <param name="item">Предмет</param> /// <param name="pos_id">ID позиции в контейнере</param> /// <returns>True - в случае успешного добавления, false - в случае ошибки</returns> public bool Set(DungeonItem item, int pos_id) { if (item != null) { if (pos_id >= 0 && (pos_id < m_limit && m_limit != -1)) { if (m_items[pos_id] == null) { DungeonContainer old_container = item.Container; if (old_container != null) { old_container.Remove(item); } if (item is DungeonItemSword) { (item as DungeonItemSword).TotalFrame = 0; } item.Container = this; m_items[pos_id] = item; item.ObjectStatus = DungeonObjectStatus.AddedNotDestroyed; return(true); } } } return(false); }
/// <summary>Помещает указанный предмет в контейнер (из старого контейнера (если есть))</summary> /// <param name="item">Предмет</param> /// <returns>1 - успешно, 0 - нет места в контейнере, -1 - ошибка</returns> public int Add(DungeonItem item) { if (item != null) { if (m_limit == -1) { DungeonContainer old_container = item.Container; if (old_container != null) { old_container.Remove(item); } if (item is DungeonItemSword) { (item as DungeonItemSword).TotalFrame = 0; } item.Container = this; m_items.Add(item); // добавление предмета в контейнер item.ObjectStatus = DungeonObjectStatus.AddedNotDestroyed; if (m_owner is DungeonLevel) { (m_owner as DungeonLevel).MoveObjectIfInBlocks(item); } return(1); } else { bool can_add = false; int i = 0; for (i = 0; i < 30; i++) { if (m_items[i] == null) { can_add = true; break; } } if (can_add) { Set(item, i); return(1); } } return(0); } return(-1); }
/// <summary>Удаляет предмет из контейнера</summary> /// <param name="item">Предмет</param> public void Remove(DungeonItem item) { if (item != null) { if (item.Container == this) { item.Container = null; if (m_limit == -1) { m_items.Remove(item); } else { int i = 0; for (i = 0; i < m_limit; i++) { if (m_items[i] == item) { break; } } m_items[i] = null; } item.ObjectStatus = DungeonObjectStatus.CreatedNotAdded; // экипировка (снятие) предметов - шлема, брони, артефакта, меча if (m_owner is DungeonCreature) { if (item is DungeonItemEquipment) { if ((item as DungeonItemEquipment).IsEquip) { (item as DungeonItemEquipment).UnEquip(); } } } } } }