Beispiel #1
0
        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();
        }
Beispiel #2
0
        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 :;
        }