private static void addFlares(Bomb bomb) { bool obstaclefound; flares.Add(new Flare(bomb, 0, 0, graphics, scales)); obstaclefound = false; for (int i = 1; i <= bomb.getPotency(); i++) { Flare flare = new Flare(bomb, i, 0, graphics, scales); foreach (Obstacle obs in obstacles.getList()) { if (obs != null && obs.intersects(flare)) { if (obs.isSolid()) { flare.setAsFinal(); obs.die(); obstaclefound = true; break; } else { goto flaresloop1; } } } if (!obstaclefound) { for (int x = 0; x < powerups.Count; x++) { PowerUps pu = powerups[x]; if (pu != null && pu.intersects(flare)) { flare.setAsFinal(); powerups.Remove(powerups[x]); break; } } } flares.Add(flare); if (flare.isFinal()) { break; } } flaresloop1 : obstaclefound = false; for (int i = -1; i >= -bomb.getPotency(); i--) { Flare flare = new Flare(bomb, i, 0, graphics, scales); foreach (Obstacle obs in obstacles.getList()) { if (obs != null && obs.intersects(flare)) { if (obs.isSolid()) { flare.setAsFinal(); obs.die(); obstaclefound = true; break; } else { goto flaresloop2; } } } if (!obstaclefound) { for (int x = 0; x < powerups.Count; x++) { PowerUps pu = powerups[x]; if (pu != null && pu.intersects(flare)) { flare.setAsFinal(); powerups.Remove(powerups[x]); break; } } } flares.Add(flare); if (flare.isFinal()) { break; } } flaresloop2 : obstaclefound = false; for (int i = 1; i <= bomb.getPotency(); i++) { Flare flare = new Flare(bomb, 0, i, graphics, scales); foreach (Obstacle obs in obstacles.getList()) { if (obs != null && obs.intersects(flare)) { if (obs.isSolid()) { flare.setAsFinal(); obs.die(); obstaclefound = true; break; } else { goto flaresloop3; } } } if (!obstaclefound) { for (int x = 0; x < powerups.Count; x++) { PowerUps pu = powerups[x]; if (pu != null && pu.intersects(flare)) { flare.setAsFinal(); powerups.Remove(powerups[x]); break; } } } flares.Add(flare); if (flare.isFinal()) { break; } } flaresloop3 : obstaclefound = false; for (int i = -1; i >= -bomb.getPotency(); i--) { Flare flare = new Flare(bomb, 0, i, graphics, scales); foreach (Obstacle obs in obstacles.getList()) { if (obs != null && obs.intersects(flare)) { if (obs.isSolid()) { flare.setAsFinal(); obs.die(); obstaclefound = true; break; } else { goto flaresloop4; } } } if (!obstaclefound) { for (int x = 0; x < powerups.Count; x++) { PowerUps pu = powerups[x]; if (pu != null && pu.intersects(flare)) { flare.setAsFinal(); powerups.Remove(powerups[x]); break; } } } flares.Add(flare); if (flare.isFinal()) { break; } } flaresloop4 :; }
public static void initLevel() { bool dead = (player != null) ? player.removed : false; int powerupssize = powerups.Count; clear(); StreamReader sr = new StreamReader(File.OpenRead("/Application/res/maps/definitions/" + level + "/" + level + "_" + levelmap + ".txt")); map = new Map(sr.ReadLine(), Map.TILESIZE, scales, graphics); // obstacles = new GenerateObstacles(map, true); PowerUps powerup = null; if (levelmap != 8) { obstacles = new GenerateObstacles(map, true, graphics); powerup = new PowerUps(Convert.ToInt32(sr.ReadLine()), obstacles.getList(), graphics, scales); } else { obstacles = new GenerateObstacles(map, false, graphics); } if (levelmap != 8) { if (level == 4 || level == 7) { keymusic = "bgm_03"; } else if (level == 6 || level == 8) { keymusic = "bgm_02"; } else { keymusic = "bgm_01"; } } else { keymusic = "bgm_boss"; } while (sr.Peek() >= 0) { String[] line = sr.ReadLine().Split(); int type = Convert.ToInt32(line[0]); int count = Convert.ToInt32(line[1]); switch (type) { case 6: // blue snake // for (int x = 0; x < count; x++) { // // SnakeHead head = new SnakeHead(obstacles, map, player); // SnakeBody body = new SnakeBody(obstacles, map, player, head); // // for (int i = 0; i < 4; i++) { // head.setChild(body); // enemies.Add(head); // enemies.Add(body); // head = body; // body = new SnakeBody(obstacles, map, player, head); // } // } break; default: for (int i = 0; i < count; i++) { enemies.Add(Enemy.createEnemy(type, obstacles, map, player, graphics, scales)); } break; } } // in.close(); if (powerup != null && levelmap != 8 && !dead) { powerups.Add(powerup); } else if (powerup != null && levelmap != 8 && dead && powerupssize > 0) { powerups.Add(powerup); } if (levelmap != 8) { do { exit = new Exit(obstacles.getList(), enemies, graphics, scales); } while (exit.intersects(powerup)); } else { exit = new Exit(null, enemies, graphics, scales); } sr.Dispose(); }