Exemplo n.º 1
0
        public static HouseTile Load(ByteArrayFileTreeStream stream, ByteArrayStreamReader reader)
        {
            HouseTile houseTile = new HouseTile();

            houseTile.OffsetX = reader.ReadByte();

            houseTile.OffsetY = reader.ReadByte();

            houseTile.HouseId = reader.ReadUInt();

            while (true)
            {
                switch ((OtbmAttribute)reader.ReadByte())
                {
                case OtbmAttribute.Flags:

                    houseTile.Flags = (TileFlags)reader.ReadUInt();

                    break;

                case OtbmAttribute.ItemId:

                    houseTile.OpenTibiaItemId = reader.ReadUShort();

                    break;

                default:

                    stream.Seek(Origin.Current, -1);

                    if (stream.Child())
                    {
                        houseTile.items = new List <Item>();

                        while (true)
                        {
                            houseTile.items.Add(Item.Load(stream, reader));

                            if (!stream.Next())
                            {
                                break;
                            }
                        }
                    }
                    return(houseTile);
                }
            }
        }
Exemplo n.º 2
0
        public static Area Load(ByteArrayFileTreeStream stream, ByteArrayStreamReader reader)
        {
            Area area = new Area();

            area.Position = new Position(reader.ReadUShort(), reader.ReadUShort(), reader.ReadByte());

            if (stream.Child())
            {
                area.tiles = new List <Tile>(1);

                while (true)
                {
                    Tile tile = null;

                    switch ((OtbmType)reader.ReadByte())
                    {
                    case OtbmType.Tile:

                        tile = Tile.Load(stream, reader);

                        break;

                    case OtbmType.HouseTile:

                        tile = HouseTile.Load(stream, reader);

                        break;
                    }

                    area.tiles.Add(tile);

                    if (!stream.Next())
                    {
                        break;
                    }
                }
            }

            return(area);
        }