public OtMap(OtItems items) { tiles = new Dictionary <ulong, OtTile>(); creatures = new Dictionary <uint, OtCreature>(); spawns = new Dictionary <ulong, OtSpawn>(); towns = new Dictionary <uint, OtTown>(); npcs = new HashSet <string>(); Version = 2; Width = 0xFCFC; Height = 0xFCFC; Items = items; Descriptions = new List <string>(); }
public virtual void Deserialize(OtFileReader fileReader, OtFileNode itemNode, OtPropertyReader reader, OtItems items) { Deserialize(reader); }
public override void Deserialize(OtFileReader fileReader, OtFileNode node, OtPropertyReader reader, OtItems items) { base.Deserialize(fileReader, node, reader, items); var itemNode = node.Child; while (itemNode != null) { if ((OtMap.OtMapNodeTypes)itemNode.Type != OtMap.OtMapNodeTypes.ITEM) { throw new Exception("Invalid item node inside container."); } OtPropertyReader props = fileReader.GetPropertyReader(itemNode); var itemId = props.ReadUInt16(); var itemType = items.GetItem(itemId); if (itemType == null) { throw new Exception("Unkonw item type " + itemId + " inside container."); } var item = OtItem.Create(itemType); item.Deserialize(fileReader, itemNode, props, items); Items.Add(item); itemNode = itemNode.Next; } }