private static int AddFakeScrapToContainerUpdate(ProtoBuf.ItemContainer containerInfo, int scrapAmount) { // Always use a separate item so it can be placed out of view. var itemInfo = _pluginInstance._scrapItem.Save(); itemInfo.amount = scrapAmount; itemInfo.slot = PlayerInventoryUtils.GetNextAvailableSlot(containerInfo); containerInfo.contents.Add(itemInfo); return(itemInfo.slot); }
private static int GetNextAvailableSlot(ProtoBuf.ItemContainer containerInfo) { var highestSlot = MinHidddenSlot; foreach (var item in containerInfo.contents) { if (item.slot > highestSlot) { highestSlot = item.slot; } } return(highestSlot); }
private int HighestUsedSlot(ProtoBuf.ItemContainer containerData) { var highestUsedSlot = -1; foreach (var item in containerData.contents) { if (item.slot > highestUsedSlot) { highestUsedSlot = item.slot; } } return(highestUsedSlot); }
public ProtoBuf.ItemContainer GetProtobufObject() { List <ProtoBuf.Item> listItems = new List <ProtoBuf.Item>(); for (var i = 0; i < ListItems.Count; i++) { listItems.Add(ListItems[i].GetProtobufObject()); } ProtoBuf.ItemContainer container = new ProtoBuf.ItemContainer { allowedContents = 1, allowedItem = 0, availableSlots = availableSlots, contents = listItems, flags = (int)this.ItemContainerType, maxStackSize = 0, slots = this.Capacity, temperature = 30f, UID = this.UID }; return(container); }
private void AddItems(ProtoBuf.ItemContainer containerData, Ruleset ruleset) { if (containerData == null) { return; } // Note: Problems can arise if there are existing items spread out unevenly across the invisible slots. var slot = Math.Max(FirstInvisibleItemSlot, HighestUsedSlot(containerData) + 1); foreach (var entry in ruleset.ItemAmounts) { Item item; if (!TryGetItem(entry.Key, entry.Value, out item)) { continue; } item.position = slot++; containerData.contents.Add(item.Save()); } containerData.slots = FirstInvisibleItemSlot + ruleset.ItemAmounts.Count; }
public BaseItemContainer(ProtoBuf.ItemContainer proto) { protobuf = proto; contents = new List <BaseItem>(); proto.contents.ForEach(item => contents.Add(new BaseItem(item))); }