Esempio n. 1
0
        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>();
        }
Esempio n. 2
0
 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;
            }
        }