public void Initialize(OpenTK.GameWindow window) { Window = window; window.ClientSize = new Size(room1Layout[0].Length * 30, room1Layout.Length * 30); TextureManager.Instance.UseNearestFiltering = true; hero = new PlayerCharacter(heroSheet, new Point(spawnTile.X * 30, spawnTile.Y * 30)); room1 = new Map(room1Layout, spriteSheets, spriteSources, 2, 0, 4, 8, 9, 10); room2 = new Map(room2Layout, spriteSheets, spriteSources, 0, 2, 4, 8, 9, 10); room1[4][7].MakeDoor(room2, new Point(1, 4)); room2[4][0].MakeDoor(room1, new Point(6, 4)); room1[3][2].IsCloud = true; room1[3][3].IsCloud = true; currentMap = room1; }
public Map ResolveDoors(PlayerCharacter hero) { Map result = this; for (int row = 0; row < tileMap.Length; row++) { for (int col = 0; col < tileMap[row].Length; col++) { if (tileMap[row][col].IsDoor) { //get doors bouding rectangle Rectangle doorRect = new Rectangle(col * 30, row * 30, 30, 30); //get a small rectangle in center of the player Rectangle playerCenter = new Rectangle((int)hero.Center.X - 2, (int)hero.Center.Y - 2, 4, 4); //look for an intersection Rectangle intersection = Intersections.Rect(doorRect, playerCenter); if (intersection.Width * intersection.Height > 0) { result = tileMap[row][col].DoorTarget; hero.Position.X = tileMap[row][col].DoorLocation.X * 30; hero.Position.Y = tileMap[row][col].DoorLocation.Y * 30; } } } } return result; }