Exemplo n.º 1
0
 private void ParseServerFloorDescription(InMessage message, List <Tile> tiles, int x, int y, int z, int width, int height, int offset, ref int skipTiles)
 {
     for (int nx = 0; nx < width; nx++)
     {
         for (int ny = 0; ny < height; ny++)
         {
             if (skipTiles == 0)
             {
                 var tileOpt = message.PeekUShort();
                 // Decide if we have to skip tiles
                 // or if it is a real tile
                 if (tileOpt >= 0xFF00)
                 {
                     skipTiles = (short)(message.ReadUShort() & 0xFF);
                 }
                 else
                 {
                     //real tile so read tile
                     tiles.Add(ParseServerTileDescription(message, new Location(x + nx + offset, y + ny + offset, z)));
                     skipTiles = (short)(message.ReadUShort() & 0xFF);
                 }
             }
             else
             {
                 skipTiles--;
             }
         }
     }
 }
Exemplo n.º 2
0
        private Tile ParseServerTileDescription(InMessage message, Location location)
        {
            Tile tile = new Tile(location);

            if (message.PeekUShort() < 0xFF00)
            {
                message.ReadUShort();
            }

            while (message.PeekUShort() < 0xFF00)
            {
                tile.AddThing(GetThing(message));
            }

            client.Map.SetTile(tile);
            return(tile);
        }
Exemplo n.º 3
0
        private void ParseServerUpdateTile(InMessage message)
        {
            Location location = message.ReadLocation();
            var      thingId  = message.PeekUShort();

            if (thingId == 0xFF01)
            {
                message.ReadUShort();
                Tile tile = client.Map.GetTile(location);
                if (tile == null)
                {
                    throw new Exception("[ParseServerUpdateTile] Tile not found.");
                }

                tile.Clear();
            }
            else
            {
                ParseServerTileDescription(message, location);
                message.ReadUShort();
            }
        }
 private void ParseServerFloorDescription(InMessage message, List<Tile> tiles, int x, int y, int z, int width, int height, int offset, ref int skipTiles)
 {
     for (int nx = 0; nx < width; nx++)
     {
         for (int ny = 0; ny < height; ny++)
         {
             if (skipTiles == 0)
             {
                 var tileOpt = message.PeekUShort();
                 // Decide if we have to skip tiles
                 // or if it is a real tile
                 if (tileOpt >= 0xFF00)
                     skipTiles = (short)(message.ReadUShort() & 0xFF);
                 else
                 {
                     //real tile so read tile
                     tiles.Add(ParseServerTileDescription(message, new Location(x + nx + offset, y + ny + offset, z)));
                     skipTiles = (short)(message.ReadUShort() & 0xFF);
                 }
             }
             else
                 skipTiles--;
         }
     }
 }
        private void ParseServerUpdateTile(InMessage message)
        {
            Location location = message.ReadLocation();
            var thingId = message.PeekUShort();

            if (thingId == 0xFF01)
            {
                message.ReadUShort();
                Tile tile = client.Map.GetTile(location);
                if (tile == null)
                    throw new Exception("[ParseServerUpdateTile] Tile not found.");

                tile.Clear();
            }
            else
            {
                ParseServerTileDescription(message, location);
                message.ReadUShort();
            }
        }
        private Tile ParseServerTileDescription(InMessage message, Location location)
        {
            Tile tile = new Tile(location);
            if (message.PeekUShort() < 0xFF00)
                message.ReadUShort();

            while (message.PeekUShort() < 0xFF00)
                tile.AddThing(GetThing(message));

            client.Map.SetTile(tile);
            return tile;
        }