Esempio n. 1
0
    public cAngelIsland(IServiceProvider serviceProvider, GraphicsDeviceManager graphics, int NumPerso)
        : base(serviceProvider, graphics)
    {
        this.NumPerso = NumPerso;
        Hud           = new HUD(NumPerso);
        camera        = new Camera(graphics.GraphicsDevice.Viewport);
        CheckPoints.Add(new Checkpoint(new Vector2(100, 360), 1));
        CheckPoints.Add(new Checkpoint(new Vector2(2200, 360), 2));
        CheckPoints.Add(new Checkpoint(new Vector2(4500, 650), 3));
        CheckPoints.Add(new Checkpoint(new Vector2(5500, 650), 4));


        Joueur          = new PlayerSonic(false, true, NumPerso);
        Joueur.Position = GestionExterne.LoadingPosition(CheckPoints, this);


        TexturesObject.Add(new ObjectMapping(1, new Vector2(-130, 230)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(120, 230)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(320, 220)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(780, 220)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(1260, 230)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(850, -130)));
        BackTextures.Add(new BackGroundTexture(1, new Vector2(-350, -540)));
        BackTextures.Add(new BackGroundTexture(2, new Vector2(150, -520)));
        BackTextures.Add(new BackGroundTexture(3, new Vector2(880, -520)));
        BackTextures.Add(new BackGroundTexture(2, new Vector2(1560, -520)));
        BackTextures.Add(new BackGroundTexture(1, new Vector2(2400, -900)));
        BackTextures.Add(new BackGroundTexture(1, new Vector2(2100, -700)));
        BackTextures.Add(new BackGroundTexture(4, new Vector2(2600, -1250)));
        BackTextures.Add(new BackGroundTexture(3, new Vector2(3700, -850)));
        BackTextures.Add(new BackGroundTexture(2, new Vector2(5000, -850)));
        BackTextures.Add(new BackGroundTexture(1, new Vector2(6000, -500)));
        BackTextures.Add(new BackGroundTexture(0, new Vector2(6600, -500)));
        BackTextures.Add(new BackGroundTexture(1, new Vector2(6900, -500)));

        Teles.Add(new Tele(1, new Vector2(920, -10), NumPerso));
        Rhinobots.Add(new Rhinobot(new Vector2(700, 350), 300));
        Tremplins.Add(new Tremplin(new Vector2(1300, 350), false, false));
        Tremplins.Add(new Tremplin(new Vector2(1300, 50), false, true));
        Tremplins.Add(new Tremplin(new Vector2(1650, 50), false, true));
        Rings.Add(new Ring(new Vector2(400, 350)));
        Rings.Add(new Ring(new Vector2(500, 350)));
        Rings.Add(new Ring(new Vector2(600, 350)));
        Rings.Add(new Ring(new Vector2(700, 350)));
        Rings.Add(new Ring(new Vector2(800, 350)));
        Rings.Add(new Ring(new Vector2(1450, 375)));
        Rings.Add(new Ring(new Vector2(1550, 320)));
        Rings.Add(new Ring(new Vector2(1850, 320)));
        Rings.Add(new Ring(new Vector2(1950, 375)));
        // -------------
        Rings.Add(new Ring(new Vector2(1680, 480)));
        Rings.Add(new Ring(new Vector2(1680, 600)));
        Rings.Add(new Ring(new Vector2(1680, 720)));
        Rings.Add(new Ring(new Vector2(1680, 840)));
        //----------------------------------------------------------
        TexturesObject.Add(new ObjectMapping(1, new Vector2(1800, 220)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(2000, 220)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(2200, 220)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(2400, 220)));
        Pics.Add(new Pic(new Vector2(2500, 360), false));
        Pics.Add(new Pic(new Vector2(2600, 360), false));
        Pics.Add(new Pic(new Vector2(2700, 360), false));
        Tremplins.Add(new Tremplin(new Vector2(2850, 340), false, false));
        Rings.Add(new Ring(new Vector2(2900, 300)));
        Rings.Add(new Ring(new Vector2(2900, 250)));
        Rings.Add(new Ring(new Vector2(2900, 200)));
        //-------------------------------------------------------------
        TexturesObject.Add(new ObjectMapping(3, new Vector2(3050, -200)));
        Tremplins.Add(new Tremplin(new Vector2(3000, 100), false, false));
        Rings.Add(new Ring(new Vector2(3050, 50)));
        Rings.Add(new Ring(new Vector2(3050, 0)));
        Rings.Add(new Ring(new Vector2(3050, -50)));
        Teles.Add(new Tele(2, new Vector2(3250, -70), NumPerso));
        Pentes.Add(new Pente(1, new Vector2(3555, -10), false));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(4500, -10)));
        Teles.Add(new Tele(3, new Vector2(4650, 100), NumPerso));
        Tremplins.Add(new Tremplin(new Vector2(4800, 100), true, true));
        Tremplins.Add(new Tremplin(new Vector2(5300, 100), false, true));
        //-----------------------------------------------------------
        TexturesObject.Add(new ObjectMapping(2, new Vector2(1600, 620)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(1800, 620)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(2000, 620)));
        TexturesObject.Add(new ObjectMapping(1, new Vector2(2200, 620)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(2400, 620)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(2600, 620)));
        Tremplins.Add(new Tremplin(new Vector2(2000, 720), true, true));
        Rings.Add(new Ring(new Vector2(2550, 710)));
        Rings.Add(new Ring(new Vector2(2600, 710)));
        Rings.Add(new Ring(new Vector2(2650, 710)));
        Rings.Add(new Ring(new Vector2(2700, 710)));
        Pics.Add(new Pic(new Vector2(2500, 750), false));
        Pics.Add(new Pic(new Vector2(2600, 750), false));
        Pentes.Add(new Pente(1, new Vector2(3110, 590), true));
        Rings.Add(new Ring(new Vector2(3750, 650)));
        Rings.Add(new Ring(new Vector2(3800, 650)));
        Rings.Add(new Ring(new Vector2(3850, 650)));
        Rings.Add(new Ring(new Vector2(3900, 650)));
        //-------------------------------------------------------------------
        TexturesObject.Add(new ObjectMapping(2, new Vector2(4000, 510)));
        TexturesObject.Add(new ObjectMapping(1, new Vector2(4200, 510)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(4400, 510)));
        Teles.Add(new Tele(2, new Vector2(4400, 650), NumPerso));
        Rhinobots.Add(new Rhinobot(new Vector2(4600, 650), 100));
        Pics.Add(new Pic(new Vector2(4700, 650), false));
        Pics.Add(new Pic(new Vector2(4800, 650), false));
        //-------------------------------------------------------------------
        Pentes.Add(new Pente(1, new Vector2(5000, 700), true));
        TexturesObject.Add(new ObjectMapping(1, new Vector2(5520, 520)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(5720, 520)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(5920, 520)));
        Pics.Add(new Pic(new Vector2(5750, 680), false));
        Pics.Add(new Pic(new Vector2(5850, 680), false));
        Singes.Add(new SingeArticuler(new Vector2(5920, 340)));
        Pentes.Add(new Pente(1, new Vector2(6245, 465), true));
        //----------------------------------------------------------------------
        TexturesObject.Add(new ObjectMapping(2, new Vector2(6775, 290)));
        Teles.Add(new Tele(1, new Vector2(6800, 410), NumPerso));
        Pentes.Add(new Pente(1, new Vector2(7000, 470), false));
        //----------------------------------------------------------------------<
        TexturesObject.Add(new ObjectMapping(3, new Vector2(7510, 500)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(7610, 500)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(7900, 500)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(8000, 500)));
        TexturesObject.Add(new ObjectMapping(2, new Vector2(8100, 500)));
        TexturesObject.Add(new ObjectMapping(3, new Vector2(8200, 500)));
        MiniBoss.Add(new FireBreath(new Vector2(8300, 250)));
        //------------------------------------------------------------------
    }
Esempio n. 2
0
    public override void Update(GameTime gameTime)
    {
        RecUpdate = new Rectangle((int)camera.X - 400, (int)camera.Y - 249, 800, 600);


        GestionExterne.CameraControl(camera);
        GestionExterne.Menu(Menus, Joueur, camera, this);

        #region Gestion De la sauvegarde de la vie
        if (Life < SaveCheckPoint.Life)
        {
            Mort();
        }
        else
        {
            SaveCheckPoint.Life = Life;
        }
        #endregion

        if (Joueur != null && !Joueur.Enabled)
        {
            //Sortie de MAP
            if (Joueur.Position.Y > MapLimitY)
            {
                Life--;
            }

            //Pics
            GestionExterne.UpdatePics(Pics, RecUpdate, Joueur, ref RingsPosses, ref Rings, ref Life, ref Shield);

            // Apparition des animaux
            CodeExclusifSonic.Animal(AnimalActif, NumAnimal, RAnimal, ref AnimationPlayer, ref PosAnimationPlayer, camera);

            //RhinoBots
            GestionExterne.UpdateRhino(ref Rhinobots, RecUpdate, gameTime, Joueur, ref RingsPosses, ref Life, ref Shield, ref PosAnimationPlayer
                                       , ref AnimalActif, ref AnimationPlayer, ref Rings, RringsX, RringsY);

            //Singes
            GestionExterne.UpdateSinge(ref Singes, RecUpdate, gameTime, Joueur, ref RingsPosses, ref Life, ref Shield, ref PosAnimationPlayer,
                                       ref AnimalActif, ref AnimationPlayer, ref Rings, RringsX, RringsY, ref TexturesObject);


            Joueur.Update(gameTime, Obj, null, null, Shield.num);

            #region Contrainte de boss
            if (Joueur.Position.X > 8000 && MiniBoss.Count == 1 && !camera.Locked)
            {
                camera.Locked = true; MediaPlayer.Play(RessourceSonic3.MinorBoss);
            }
            #endregion
            #region Camera Update
            if (Joueur.Position.X < 90)
            {
                //si PosX <90 camera X bloque mais continue d'updater en Y
                camera.Update(new Vector2(289, Joueur.Position.Y - 200));

                //Si est a la limite de la map en X perso bloque
                if (Joueur.Position.X < -40)
                {
                    Joueur.Position.X = -40;
                }
            }

            else if (!camera.Locked)
            {
                camera.Update(new Vector2(Joueur.Position.X + 200, Joueur.Position.Y - 200));
            }
            else
            {
                //Ajustement de la camera pour l'entrée premier Boss
                if (camera.X < 8199)
                {
                    camera.X += 2;
                }

                else //Lorsque L'Ajustement est fini camera rentre en mode fixe
                {
                    camera.Update(new Vector2(8199, 544));
                }

                //Limite du personnage losque la caméra est blocké
                if (Joueur.Position.X > camera.X + 350)
                {
                    Joueur.Position.X = camera.X + 350;
                }
                if (Joueur.Position.X < camera.X - 350)
                {
                    Joueur.Position.X = camera.X - 350;
                }
            }
            #endregion

            Shield.Update(Joueur.Position, Joueur.Rebound);

            #region MiniBoss
            for (int m = MiniBoss.Count - 1; m >= 0; m--)
            {
                if (MiniBoss[m].RecMiniBoss.Intersects(RecUpdate))
                {
                    MiniBoss[m].Update(gameTime, Joueur, ref RingsPosses, ref Life, ref Rings, RringsY, RringsX, ref Shield);
                }
                if (MiniBoss[m].Finish)
                {
                    Flags.Add(new Flag(new Vector2(camera.X, MiniBoss[m].Position.Y - 200), NumPerso));
                    if (!Joueur.HasJump)
                    {
                        Flags[0].PosYMinimum = Joueur.Position.Y - 30;
                    }
                    else
                    {
                        Flags[0].PosYMinimum = Joueur.Position.Y + 27;
                    }
                    MiniBoss.RemoveAt(m);
                }
            }
            #endregion

            //Loops
            GestionExterne.UpdateLoop(Loops, RecUpdate, ref Joueur);

            //Pente
            GestionExterne.UpdatePente(Pentes, RecUpdate, ref Joueur);

            //CheckPoint
            GestionExterne.UpdateCheckPoint(CheckPoints, RecUpdate, Joueur);

            //Tremplin
            GestionExterne.UpdateTremplin(Tremplins, RecUpdate, Joueur);

            //Tele
            GestionExterne.UpdateTele(ref Teles, RecUpdate, gameTime, Joueur, ref Life, ref RingsPosses, ref Shield);

            //Rings
            GestionExterne.UpdateRing(ref RingsPosses, ref Life, RecUpdate, ref Rings, Joueur, gameTime);

            #region Update Back et HUD
            PosBack = new Vector2(camera.X - 400, camera.Y - 250);
            PosHUD  = new Vector2(PosBack.X + 450, PosBack.Y + 250);
            Hud.Update(RingsPosses, Life, PosHUD);
            #endregion
        }
        else //Gestion de la mort
        {
            GestionExterne.AnimationMort(Menus, FinNiveau, ref APDead, Death, ref APDeadpos, APDeadPosInit, this);
        }


        #region Flags
        for (int F = Flags.Count - 1; F >= 0; F--)
        {
            Flags[F].Update(gameTime, Joueur);
            if (Flags[F].Texte)
            {
                if (NumPerso == 1)
                {
                    TexteFin.Add(new TexteFinAnim(true, new Vector2(8100, 380), 1));
                }
                else
                {
                    TexteFin.Add(new TexteFinAnim(false, new Vector2(8100, 380), 1));
                }
                Flags[F].Texte          = false;
                MediaPlayer.IsRepeating = false;
                MediaPlayer.Play(RessourceSonic3.LevelComplete);
                Joueur.Enabled = true;
                FinNiveau      = true;
            }
            if (Flags[F].Stop)
            {
                TexteFin[0].Update(gameTime);

                if (TexteFin[0].Delete)
                {
                    Flags.RemoveAt(F);
                    TexteFin.RemoveAt(0);
                    Joueur.Enabled = false;
                    FinNiveau      = false;
                    camera.Locked  = false;

                    /*AddScreen(new cTransition1(serviceProvider, GraphicsDeviceManager, NumPerso));
                     * RemoveScreen(this);*/
                }
            }
        }
        #endregion
    }