public bool InsertItem(Item item, ItemSlot slot, InventoryCellsGroup group, bool can_stack, bool can_auto_select_group, Storage storage = null) { if (item.m_Info.m_FakeItem) { return(true); } if (slot) { if (slot.CanInsertItem(item)) { if (slot.IsStack() && slot.m_ItemParent && slot.m_ItemParent.m_Info.m_InventoryRotated != item.m_Info.m_InventoryRotated) { Inventory3DManager.Get().RotateItem(item, true); } slot.InsertItem(item); return(true); } if (!slot.IsOccupied()) { return(false); } } if (group == null) { if (can_stack) { List <Item> list = storage ? storage.m_Items : InventoryBackpack.Get().m_Items; for (int i = 0; i < list.Count; i++) { Item item2 = list[i]; if (item2.m_InventorySlot && !item2.m_CurrentSlot && item2.m_InventorySlot.CanInsertItem(item)) { if (item2.m_Info.m_InventoryRotated != item.m_Info.m_InventoryRotated) { Inventory3DManager.Get().RotateItem(item, true); } item2.m_InventorySlot.InsertItem(item); return(true); } } } if (can_auto_select_group) { group = this.FindFreeGroup(item); if (group != null && group.IsFree()) { group.Insert(item, this.m_Grid); return(true); } } return(false); } if (group.IsFree()) { group.Insert(item, this.m_Grid); return(true); } return(false); }
private InsertResult InsertItemRight(Item item, ItemSlot slot) { if (!slot) { slot = this.FindFreeSlot(item); } if (slot && slot.CanInsertItem(item)) { slot.InsertItem(item); return(InsertResult.Ok); } return(InsertResult.NoSpace); }
public ItemSlot FindFreeSlot(Item item) { if (item.m_Info.m_BackpackPocket == BackpackPocket.Left) { if (this.m_EquippedItemSlot && !this.m_EquippedItem) { return(this.m_EquippedItemSlot); } using (List <ItemSlot> .Enumerator enumerator = this.m_LeftSlots.GetEnumerator()) { while (enumerator.MoveNext()) { ItemSlot itemSlot = enumerator.Current; if ((!this.m_EquippedItem || !(this.m_EquippedItemSlot == itemSlot)) && itemSlot.CanInsertItem(item)) { return(itemSlot); } } goto IL_123; } } if (item.m_Info.m_BackpackPocket == BackpackPocket.Right) { using (List <ItemSlot> .Enumerator enumerator = this.m_RightSlots.GetEnumerator()) { while (enumerator.MoveNext()) { ItemSlot itemSlot2 = enumerator.Current; if (itemSlot2.CanInsertItem(item)) { return(itemSlot2); } } goto IL_123; } } if (item.m_Info.m_BackpackPocket == BackpackPocket.Top) { foreach (ItemSlot itemSlot3 in this.m_TopSlots) { if (itemSlot3.CanInsertItem(item)) { return(itemSlot3); } } } IL_123: return(null); }
public bool InsertItem(Item item, ItemSlot slot, InventoryCellsGroup group, bool can_stack, bool can_auto_select_group) { if (slot) { if (slot.CanInsertItem(item)) { slot.InsertItem(item); return(true); } return(false); } else { if (group == null) { if (can_stack) { for (int i = 0; i < InventoryBackpack.Get().m_Items.Count; i++) { Item item2 = InventoryBackpack.Get().m_Items[i]; if (item2.m_InventorySlot && !item2.m_CurrentSlot && item2.m_InventorySlot.CanInsertItem(item)) { item2.m_InventorySlot.InsertItem(item); return(true); } } } if (can_auto_select_group) { group = this.FindFreeGroup(item); if (group != null && group.IsFree()) { group.Insert(item, this.m_Grid); return(true); } } return(false); } if (group.IsFree()) { group.Insert(item, this.m_Grid); return(true); } return(false); } }