private static void ParseUpdateTile(InputMessage input) { Location location = input.getLocation(); var thingId = input.PeekU16(); if (thingId == 0xFF01) { input.getU16(); } else { parseTileDescription(input, location); input.getU16(); } }
private static Tile parseTileDescription(InputMessage message, Location location) { Tile tile = new Tile(location); while (message.PeekU16() < 0xFF00) { tile.AddThing(GetThing(message)); } //Console.WriteLine("Tile added: things count = " + tile.things.Count); if (Instance.Map.GetTile(location) == null) { Instance.Map.SetTile(tile); } return(tile); }
private static void parseFloorDescription(InputMessage 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.PeekU16(); // Decide if we have to skip tiles // or if it is a real tile if (tileOpt == 0xFF11) { message.getU16(); // skip 0xFF11 return; } //Console.WriteLine(tileOpt.ToString("X")); if (tileOpt >= 0xFF00) { skipTiles = (short)(message.getU16() & 0xFF); } else { //real tile so read tile tiles.Add(parseTileDescription(message, new Location(x + nx + offset, y + ny + offset, z))); //tiles.Add(); skipTiles = (short)(message.getU16() & 0xFF); } } else { skipTiles--; } } } }