public Flare(Bomb bomb, int xdif, int ydif, GraphicsContext g, Vector2 scale) : base(scale) { //super(obs, map, player); this.g = g; this.position.X = -(w * scale.X) / 2 + ((int)Math.Round(((float)(bomb.position.X + w * scale.X / 2) / (w * scale.X))) + xdif) * (w * scale.X); this.position.Y = -(h * scale.Y) / 2 + ((int)Math.Round(((float)(bomb.position.Y + h * scale.X / 2) / (h * scale.Y))) + ydif) * (h * scale.Y); this.position.Width = 12 * scale.X; this.position.Height = 14 * scale.Y; this.sl = new SpriteLoader(); this.draw = true; if (xdif == 0 && ydif == 0) { ANIMATION = midflare; } else if (xdif == 0) { if (ydif > 0) { FINALANIMATION = botflare; } else { FINALANIMATION = topflare; } if (Math.Abs(ydif) == bomb.getPotency()) { if (ydif > 0) { ANIMATION = botflare; } else { ANIMATION = topflare; } } else { ANIMATION = verticalflare; } } else { if (xdif > 0) { FINALANIMATION = rightflare; } else { FINALANIMATION = leftflare; } if (Math.Abs(xdif) == bomb.getPotency()) { if (xdif > 0) { ANIMATION = rightflare; } else { ANIMATION = leftflare; } } else { ANIMATION = horizontalflare; } } this.sl = new SpriteLoader(); this.sl.cargarImagen(ANIMATION); this.sl.setImage(sl.getImage().Resize(new ImageSize((int)(sl.getImage().Size.Width *scale.X), (int)(sl.getImage().Size.Height *scale.Y)))); this.ss = new SpriteSheet(this.sl.getImage()); Sprite[] anim; if (ANIMATION == midflare) { this.anim = new Sprite[] { ss.obtenerSprite(0, 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(0 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(1 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(2 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(3 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(4 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g) }; } else { this.anim = new Sprite[] { ss.obtenerSprite(0, 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(0 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(0 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(1 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(2 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g), ss.obtenerSprite((int)(3 * w * scale.X), 0, (int)(w * scale.X), (int)(h * scale.Y), g) }; } // Animacion inicial animation = new Animation(this.anim, 3, Animation.Direction.DOWN); animation.start(); }
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 :; }