/// <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> public DungeonChest() : base(Properties.Resources.error, DungeonObjectCollision.StaticCollision) { Container = new DungeonContainer(this); m_is_opened = false; Image = Properties.Resources.chest_closed; m_collision_size = new Size(CollisionSize.Width + 7, CollisionSize.Height - 2); m_collision_offset = new Point(7, 14); }
/// <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); }