/// <summary> /// Retire les personnages et leurs identificateurs de la liste des game components /// </summary> private void RetirerPersonnages() { foreach (Player player in Players) { foreach (Personnage p in player.Personnages) { Jeu.Components.Remove(p); IdentificateurPersonnage identificateur = Jeu.Components.First(id => id is IdentificateurPersonnage && (id as IdentificateurPersonnage).PersonnageÀIdentifier == p) as IdentificateurPersonnage; Jeu.Components.Remove(identificateur); Jeu.Components.Remove(identificateur.AfficheurPtsVie); } } List <IdentificateurEffet> effetÀSupprimer = new List <IdentificateurEffet>(); foreach (GameComponent c in Jeu.Components) { if (c is IdentificateurEffet) { effetÀSupprimer.Add(c as IdentificateurEffet); } } foreach (IdentificateurEffet c in effetÀSupprimer) { Jeu.Components.Remove(c); } RéinitialiserListePlayer(); }
/// <summary> /// Ajoute les icônes d'effets spéciaux selon un certain personnage dans les Game.Components /// </summary> /// <param name="jeu"></param> /// <param name="p">Personnage à identifier</param> /// <param name="identificateur">Identificateur du personnage</param> private void AjouterIcôneEffet(Game jeu, Personnage p, IdentificateurPersonnage identificateur) { IdentificateurEffet icôneEffetFeu = new IdentificateurEffet(Jeu, p, ÉtatSpécial.EN_FEU, identificateur.Position, PREMIÈRE_ICONE_EFFET); icôneEffetFeu.DrawOrder = (int)OrdreDraw.AVANT_PLAN; Jeu.Components.Add(icôneEffetFeu); icôneEffetFeu.Visible = false; IdentificateurEffet icôneEffetMort = new IdentificateurEffet(Jeu, p, ÉtatSpécial.MORT, identificateur.Position, DEUXIÈME_ICONE_EFFET); icôneEffetMort.DrawOrder = (int)OrdreDraw.AVANT_PLAN; Jeu.Components.Add(icôneEffetMort); icôneEffetMort.Visible = false; IdentificateurEffet icôneEffetFrozen = new IdentificateurEffet(Jeu, p, ÉtatSpécial.FREEZE, identificateur.Position, TROISIÈME_ICONE_EFFET); icôneEffetFrozen.DrawOrder = (int)OrdreDraw.AVANT_PLAN; Jeu.Components.Add(icôneEffetFrozen); icôneEffetFrozen.Visible = false; IdentificateurEffet icôneEffetBouclierDivin = new IdentificateurEffet(Jeu, p, ÉtatSpécial.BOUCLIER_DIVIN, identificateur.Position, QUATRIÈME_ICONE_EFFET); icôneEffetBouclierDivin.DrawOrder = (int)OrdreDraw.AVANT_PLAN; Jeu.Components.Add(icôneEffetBouclierDivin); icôneEffetBouclierDivin.Visible = false; if (ObtenirType(p) == TypePersonnage.VOLEUR) { IdentificateurEffet icôneEffetInvisible = new IdentificateurEffet(Jeu, p, ÉtatSpécial.INVISIBLE, identificateur.Position, CINQUIÈME_ICONE_EFFET); icôneEffetInvisible.DrawOrder = (int)OrdreDraw.AVANT_PLAN; Jeu.Components.Add(icôneEffetInvisible); icôneEffetInvisible.Visible = false; } if (ObtenirType(p) == TypePersonnage.GUÉRISSEUR) { IdentificateurEffet icôneEffetSatan = new IdentificateurEffet(Jeu, p, ÉtatSpécial.SATAN, identificateur.Position, CINQUIÈME_ICONE_EFFET); icôneEffetSatan.DrawOrder = (int)OrdreDraw.AVANT_PLAN; Jeu.Components.Add(icôneEffetSatan); icôneEffetSatan.Visible = false; } if (ObtenirType(p) == TypePersonnage.GUERRIER) { IdentificateurEffet icôneEffetFolie = new IdentificateurEffet(Jeu, p, ÉtatSpécial.FOLIE, identificateur.Position, CINQUIÈME_ICONE_EFFET); icôneEffetFolie.DrawOrder = (int)OrdreDraw.AVANT_PLAN; Jeu.Components.Add(icôneEffetFolie); icôneEffetFolie.Visible = false; } }
/// <summary> /// Récupère les données d'un joueur connecté au serveur, soit les personnages et leur position et leur vitalité /// er instancie le joueur s'il n'est pas dans la liste de joueur du client /// </summary> /// <param name="inc"></param> private void ReadPlayer(NetIncomingMessage inc) { var player = new Player(); inc.ReadAllProperties(player); for (int i = 0; i < player.Personnages.Capacity; ++i) { player.Personnages.Add(ReadPersonnage(inc, player.Username)); } if (Players.Any(p => p.Username == player.Username)) { var oldPlayer = Players.FirstOrDefault(p => p.Username == player.Username); for (int i = 0; i < player.Personnages.Count; ++i) { if (player.Personnages[i].Position != oldPlayer.Personnages[i].Position) { oldPlayer.Personnages[i].GérerPositionObjet(player.Personnages[i].Position); } if (player.Personnages[i].PtsDeVie != oldPlayer.Personnages[i].PtsDeVie) { oldPlayer.Personnages[i].ChangerVitalité(player.Personnages[i].PtsDeVie); } } } else { Players.Add(player); foreach (Personnage p in player.Personnages) { Jeu.Components.Add(p); IdentificateurPersonnage identificateur = new IdentificateurPersonnage(Jeu, p); identificateur.DrawOrder = (int)OrdreDraw.AVANT_PLAN; Jeu.Components.Add(identificateur); AjouterIcôneEffet(Jeu, p, identificateur); } } }