public static string MapAsText(Level level, Array2D<int> map) { List<string> stringLevel = LevelEncoder.EncodeLevel(level.Data, false); List<char[]> charLevel = stringLevel.ConvertAll<char[]>(delegate(string value) { return value.ToCharArray(); }); Array2D<char> charMap = new Array2D<char>(charLevel.ToArray()); foreach (Coordinate2D coord in level.InsideCoordinates) { int count = map[coord]; if (count != 0) { char glyph; if (count > 9) { glyph = '~'; } else { glyph = (char)((int)'0' + count); } charMap[coord] = glyph; } } string[] rows = charMap.ConvertAllRows<string>(delegate(char[] value) { return new string(value); }); return LevelEncoder.Concat(rows, "\r\n"); }