public static byte[] GetBytes(TileGroup obj, bool withTiles = false) { var data = new byte[4]; BitConverter.GetBytes(obj.Unknown).CopyTo(data, 0); if (withTiles && (obj.LandTiles != null || obj.StaticTiles != null)) { if (obj.LandTiles != null) { foreach (var landTile in obj.LandTiles.OrderBy(kvPair => kvPair.Key)) { var landTileData = LandTiledata.GetBytes(landTile.Value); Array.Resize(ref data, data.Length + landTileData.Length); landTileData.CopyTo(data, data.Length - landTileData.Length); } } else if (obj.StaticTiles != null) { foreach (var staticTile in obj.StaticTiles.OrderBy(kvPair => kvPair.Key)) { var staticTileData = StaticTiledata.GetBytes(staticTile.Value); Array.Resize(ref data, data.Length + staticTileData.Length); staticTileData.CopyTo(data, data.Length - staticTileData.Length); } } } return(data); }
public static byte[] GetBytes(StaticTiledata obj) { var data = new byte[37]; BitConverter.GetBytes((int)obj.Flags).CopyTo(data, 0); BitConverter.GetBytes(obj.Weight).CopyTo(data, 4); BitConverter.GetBytes(obj.Quality).CopyTo(data, 5); BitConverter.GetBytes(obj.MiscData).CopyTo(data, 6); BitConverter.GetBytes(obj.Unknown1).CopyTo(data, 8); BitConverter.GetBytes(obj.Quantity).CopyTo(data, 9); BitConverter.GetBytes(obj.AnimationID).CopyTo(data, 10); BitConverter.GetBytes(obj.Unknown2).CopyTo(data, 12); BitConverter.GetBytes(obj.Hue).CopyTo(data, 13); BitConverter.GetBytes(obj.StackOff).CopyTo(data, 14); BitConverter.GetBytes(obj.Value).CopyTo(data, 15); BitConverter.GetBytes(obj.Height).CopyTo(data, 16); var trimmedTileName = obj.TileName; if (trimmedTileName.Length > 20) { trimmedTileName.Substring(0, 20); } Encoding.Default.GetBytes(trimmedTileName).CopyTo(data, 17); return(data); }