コード例 #1
0
 public override void Update(GameTime gameTime)
 {
     Joueur.Update(gameTime, null, RessourceSonic3.Jump, null, Shield.num);
 }
コード例 #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
    }