public override void Update(GameTime gameTime) { Joueur.Update(gameTime, null, RessourceSonic3.Jump, null, Shield.num); }
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 }