public void Load(ItemContainer container) { using (TimeWarning.New("ItemContainer.Load", 0.1f)) { this.uid = (uint)container.UID; this.capacity = (int)container.slots; List <Item> itemList = this.itemList; this.itemList = (List <Item>)Pool.GetList <Item>(); this.temperature = (float)container.temperature; this.flags = (ItemContainer.Flag)container.flags; this.allowedContents = container.allowedContents == null ? ItemContainer.ContentsType.Generic : (ItemContainer.ContentsType)container.allowedContents; this.onlyAllowedItem = container.allowedItem != null?ItemManager.FindItemDefinition((int)container.allowedItem) : (ItemDefinition)null; this.maxStackSize = (int)container.maxStackSize; this.availableSlots.Clear(); for (int index = 0; index < ((List <int>)container.availableSlots).Count; ++index) { this.availableSlots.Add((ItemSlot)((List <int>)container.availableSlots)[index]); } using (TimeWarning.New("container.contents", 0.1f)) { using (List <Item> .Enumerator enumerator = ((List <Item>)container.contents).GetEnumerator()) { while (enumerator.MoveNext()) { Item current = enumerator.Current; Item created = (Item)null; foreach (Item obj in itemList) { if ((int)obj.uid == current.UID) { created = obj; break; } } Item obj1 = ItemManager.Load(current, created, this.isServer); if (obj1 != null) { obj1.parent = this; obj1.position = (int)current.slot; this.Insert(obj1); } } } } using (TimeWarning.New("Delete old items", 0.1f)) { foreach (Item obj in itemList) { if (!this.itemList.Contains(obj)) { obj.Remove(0.0f); } } } this.dirty = true; // ISSUE: cast to a reference type Pool.FreeList <Item>((List <M0>&) ref itemList); } }
public void SetFlag(ItemContainer.Flag f, bool b) { if (b) { this.flags |= f; return; } this.flags &= ~f; }
public void SetFlag(ItemContainer.Flag f, bool b) { if (b) { this.flags |= f; } else { this.flags &= ~f; } }
public void Load(ProtoBuf.ItemContainer container) { ItemContainer.ContentsType contentsType; ItemDefinition itemDefinition; using (TimeWarning timeWarning = TimeWarning.New("ItemContainer.Load", 0.1f)) { this.uid = container.UID; this.capacity = container.slots; List <Item> items = this.itemList; this.itemList = Pool.GetList <Item>(); this.temperature = container.temperature; this.flags = (ItemContainer.Flag)container.flags; if (container.allowedContents == 0) { contentsType = ItemContainer.ContentsType.Generic; } else { contentsType = (ItemContainer.ContentsType)container.allowedContents; } this.allowedContents = contentsType; if (container.allowedItem != 0) { itemDefinition = ItemManager.FindItemDefinition(container.allowedItem); } else { itemDefinition = null; } this.onlyAllowedItem = itemDefinition; this.maxStackSize = container.maxStackSize; this.availableSlots.Clear(); for (int i = 0; i < container.availableSlots.Count; i++) { this.availableSlots.Add((ItemSlot)container.availableSlots[i]); } using (TimeWarning timeWarning1 = TimeWarning.New("container.contents", 0.1f)) { foreach (ProtoBuf.Item content in container.contents) { Item item = null; foreach (Item item1 in items) { if (item1.uid != content.UID) { continue; } item = item1; goto Label0; } Label0: item = ItemManager.Load(content, item, this.isServer); if (item == null) { continue; } item.parent = this; item.position = content.slot; this.Insert(item); } } using (timeWarning1 = TimeWarning.New("Delete old items", 0.1f)) { foreach (Item item2 in items) { if (this.itemList.Contains(item2)) { continue; } item2.Remove(0f); } } this.dirty = true; Pool.FreeList <Item>(ref items); } }
public bool HasFlag(ItemContainer.Flag f) { return((this.flags & f) == f); }