private void DrawMap(Graphics g, Map map) { int i, j; for (i = 0; i < map.Size.Width; i++) { for (j = 0; j < map.Size.Height; j++) { m_tileRend.RenderTile(g, map, i, j); } } }
// Methods public void RenderTile(Graphics g, Map m, int i, int j) { int x, y; int wall = 16; x = i * m_blockSize; y = m_headerSize + j * m_blockSize; switch (m[i, j]) { case TileType.Pill: DrawPill(g, x, y); break; case TileType.PowerPill: DrawPowerPill(g, x, y); break; case TileType.Wall: if (LikeWall(m[i - 1, j - 1])) wall |= 1; if (LikeWall(m[i, j - 1])) wall |= 2; if (LikeWall(m[i + 1, j - 1])) wall |= 4; if (LikeWall(m[i - 1, j])) wall |= 8; if (LikeWall(m[i + 1, j])) wall |= 32; if (LikeWall(m[i - 1, j+1])) wall |= 64; if (LikeWall(m[i, j+1])) wall |= 128; if (LikeWall(m[i + 1, j+1])) wall |= 256; DrawWall(g, wall, x, y); break; case TileType.BadguyDoor: if (LikeWall(m[i - 1, j])) DrawHorizontalDoor(g, x, y); else DrawVerticalDoor(g, x, y); break; } }
public static Map Load(String filename) { StreamReader sr; Map rv; int width, height, i, j; String line; char[] chars; List<String> lines = new List<String>(); // Load the file into a lines vector sr = File.OpenText(filename); while (!sr.EndOfStream) { line = sr.ReadLine(); if (line.Length > 0) { lines.Add(line); } } // Initialize the map given the size we know Debug.Assert(lines.Count > 0, "Map file with length 0 found"); width = lines[0].Length; height = lines.Count; rv = new Map(new Size(width, height)); // Use the line vector to build the map for (i = 0; i < height; i++) { chars = lines[i].ToCharArray(); for (j = 0; j < width; j++) { rv[j, i] = TileFromChar(chars[j]); } } return rv; }