/// <summary> /// Update the board itself to reflect the changes made to Ghosts' /// positions over time. /// </summary> /// <param name="ghost"> Ghost who will be put on the board's layer /// </param> public void UpdateGhostOnBoard(GhostObject ghost) { IBoardObject[] currentSpace; Board.TryGetValue(ghost.Position, out currentSpace); if (currentSpace[1] != null) { currentSpace[1] = null; } currentSpace[1] = ghost; RenderInfo.UpdateBoardDraw(Board); }
/// <summary> /// Creates the board in it's inicial state. /// </summary> public GameBoard() { RedDummy = new PortalDummyGhost(Colors.RED); BlueDummy = new PortalDummyGhost(Colors.BLUE); YellowDummy = new PortalDummyGhost(Colors.YELLOW); // With (0,0) being the Bottom-Left of the screen // However in the console window it is the Top-Left // WALLS // Top Horizontal Wall for (int i = 1; i < 6; i++) { Board.Add(new Vector(i, 0), new IBoardObject[3] { new CarpetTile(Colors.BLOCK), null, null }); } // Bottom Horizontal Wall for (int i = 1; i < 6; i++) { Board.Add(new Vector(i, 6), new IBoardObject[3] { new CarpetTile(Colors.BLOCK), null, null }); } // Left Vertical Wall for (int i = 0; i <= 6; i++) { Board.Add(new Vector(0, i), new IBoardObject[3] { new CarpetTile(Colors.BLOCK), null, null }); } // Right Vertical Wall for (int i = 0; i <= 6; i++) { Board.Add(new Vector(6, i), new IBoardObject[3] { new CarpetTile(Colors.BLOCK), null, null }); } // PORTALS IBoardObject[] gridSpace; // Bottom Portal Board.Add(new Vector(3, 1), new IBoardObject[3] { new CarpetTile(Colors.BLOCK | Colors.BLUE), null, null }); // Corresponding dummy ghost. Board.TryGetValue(new Vector(3, 0), out gridSpace); gridSpace[2] = BlueDummy; BlueDummy.Position = new Vector(3, 0); // Right Portal Board.Add(new Vector(5, 3), new IBoardObject[3] { new CarpetTile(Colors.BLOCK | Colors.YELLOW), null, null }); // Corresponding dummy ghost. Board.TryGetValue(new Vector(6, 3), out gridSpace); gridSpace[2] = YellowDummy; YellowDummy.Position = new Vector(6, 3); // Top Portal Board.Add(new Vector(3, 5), new IBoardObject[3] { new CarpetTile(Colors.BLOCK | Colors.RED), null, null }); // Corresponding dummy ghost. Board.TryGetValue(new Vector(3, 6), out gridSpace); gridSpace[2] = RedDummy; RedDummy.Position = new Vector(3, 6); // CARPETS // Top Row Board.Add(new Vector(1, 5), new IBoardObject[3] { new CarpetTile(Colors.BLUE), null, null }); Board.Add(new Vector(2, 5), new IBoardObject[3] { new CarpetTile(Colors.RED), null, null }); Board.Add(new Vector(4, 5), new IBoardObject[3] { new CarpetTile(Colors.BLUE), null, null }); Board.Add(new Vector(5, 5), new IBoardObject[3] { new CarpetTile(Colors.RED), null, null }); // 4th Row Board.Add(new Vector(1, 4), new IBoardObject[3] { new CarpetTile(Colors.YELLOW), null, null }); Board.Add(new Vector(2, 4), new IBoardObject[3] { new MirrorTile(), null, null }); Board.Add(new Vector(3, 4), new IBoardObject[3] { new CarpetTile(Colors.YELLOW), null, null }); Board.Add(new Vector(4, 4), new IBoardObject[3] { new MirrorTile(), null, null }); Board.Add(new Vector(5, 4), new IBoardObject[3] { new CarpetTile(Colors.YELLOW), null, null }); // 3rd Row Board.Add(new Vector(1, 3), new IBoardObject[3] { new CarpetTile(Colors.RED), null, null }); Board.Add(new Vector(2, 3), new IBoardObject[3] { new CarpetTile(Colors.BLUE), null, null }); Board.Add(new Vector(3, 3), new IBoardObject[3] { new CarpetTile(Colors.RED), null, null }); Board.Add(new Vector(4, 3), new IBoardObject[3] { new CarpetTile(Colors.BLUE), null, null }); // 2nd Row Board.Add(new Vector(1, 2), new IBoardObject[3] { new CarpetTile(Colors.BLUE), null, null }); Board.Add(new Vector(2, 2), new IBoardObject[3] { new MirrorTile(), null, null }); Board.Add(new Vector(3, 2), new IBoardObject[3] { new CarpetTile(Colors.YELLOW), null, null }); Board.Add(new Vector(4, 2), new IBoardObject[3] { new MirrorTile(), null, null }); Board.Add(new Vector(5, 2), new IBoardObject[3] { new CarpetTile(Colors.RED), null, null }); // 1st Row Board.Add(new Vector(1, 1), new IBoardObject[3] { new CarpetTile(Colors.YELLOW), null, null }); Board.Add(new Vector(2, 1), new IBoardObject[3] { new CarpetTile(Colors.RED), null, null }); Board.Add(new Vector(4, 1), new IBoardObject[3] { new CarpetTile(Colors.BLUE), null, null }); Board.Add(new Vector(5, 1), new IBoardObject[3] { new CarpetTile(Colors.YELLOW), null, null }); IBoardObject[] tile; // Update the position properties in the tiles themselves for (int x = 0; x < 7; x++) { for (int y = 0; y < 7; y++) { Board.TryGetValue(new Vector(x, y), out tile); tile[0].Position = new Vector(x, y); } } RenderInfo.UpdateBoardDraw(Board); }