protected virtual void TestMort(List <Effet> effets) // aussi la mana { if (Vie <= 0 && !Mort) { foreach (Joueur j in PackMap.joueurs) { Vie = 0; Mort = true; if (j.champion.XP + (XPUnite / PackMap.joueurs.Count) < j.champion.Level * 1000) { j.champion.XP += XPUnite / PackMap.joueurs.Count; } else { j.champion.XP = j.champion.XP + (XPUnite / PackMap.joueurs.Count) - j.champion.Level * 1000; j.champion.newLevel(); } } effetUniteDeath.Play(); effetUniteAttaque.Dispose(); effets.Add(new Effet(Sprite, ConvertUnits.ToDisplayUnits(body.Position), packAnimation.Mort(this), Tiles, 1)); Map.world.RemoveBody(body); Drop(); // Reseau bool plein = true; for (int i = 0; i < Serveur.LastDead.Length; i++) { if (Serveur.LastDead[i] == 0) { plein = false; break; } } if (plein) { for (int j = 0; j < Serveur.LastDead.Length; j++) { Serveur.LastDead[j] = 0; } } for (int i = 0; i < Serveur.LastDead.Length; i++) { if (Serveur.LastDead[i] == 0) { Serveur.LastDead[i] = id; break; } } // Interface De GameOver pour le joueur if (isAChamp) // Si un champion se fait tuer { foreach (Joueur j in PackMap.joueurs) // On regarde si c'est le joueur local { j.Interface.Lost = true; } } } // TEST MANA if (Mana < 0) { Mana = 0; } }
public override void Update(List <Unite> unitsOnMap, List <Effet> effets) { Animer(); Deplacer(); TestMort(effets); Debug(); // Update l'IA if (!isAChamp) { IA(unitsOnMap); } // Pour Update et Draw les sorts try { foreach (Spell s in spellsUpdate) { s.Update(); } } catch { } // Retire les sorts qui sont finis for (int i = 0; i < spellsUpdate.Count; i++) { if (!spellsUpdate[i].Activated) { spellsUpdate.RemoveAt(i); } } // Pour Update et Draw les items de l'inventaire foreach (Item i in Inventory) { if (i.Activated) { i.spell.Update(); } } // Pour Update les projectiles ProjectileUpdate(); // On ajoute du mana ManaUpdate(); // On Update l'inventaire de l'unité InventoryUpdate(); // On rafraichit la propriete suivante, elle est juste indicative et n'affecte pas le draw, mais le pathfinding PositionTile = new Vector2((int)(ConvertUnits.ToDisplayUnits(body.Position.X) / Map.TailleTiles.X), (int)(ConvertUnits.ToDisplayUnits(body.Position.Y) / Map.TailleTiles.Y)); // Refresh l'attaque et le pathfinding correspondant if (uniteAttacked != null) { Attaquer(uniteAttacked); } else if (OlduniteAttacked != null && ObjectifListe.Count == 0 && IsRanged) // si l'unité se déplacait pour tirer { uniteAttacked = OlduniteAttacked; } // Fait attaquer l'unité la plus proche if (!isAChamp && !isApnj && uniteAttacked != null) { float distanceInit = 9000; Unite focus = null; foreach (Unite u in Map.unites) { float distance = 0; if (u.isAChamp && (distance = Outil.DistanceUnites(this, u)) <= distanceInit) { distanceInit = distance; focus = u; } } uniteAttacked = focus; } // Reseau UpdateReseau(); }
public virtual void Update(List <Unite> unitsOnMap, List <Effet> effets) { Animer(); PositionTile = new Vector2((int)(ConvertUnits.ToDisplayUnits(body.Position.X) / 32), (int)(ConvertUnits.ToDisplayUnits(body.Position.Y) / 32)); }
bool body_OnCollision(Fixture fixtureA, Fixture fixtureB, FarseerPhysics.Dynamics.Contacts.Contact contact) { Unite objet1 = (Unite)(fixtureA.Body.UserData); if (objet1.isAChamp) { if (objet1.ObjectifListe.Count > 0) { Vector2 position = new Vector2((int)(ConvertUnits.ToDisplayUnits(objet1.body.Position.X) / 32), (int)(ConvertUnits.ToDisplayUnits(objet1.body.Position.Y) / 32)); List <Noeud> chemin = PathFinding.TrouverChemin(position, objet1.ObjectifListe[objet1.ObjectifListe.Count - 1].Position, Map.Taille, Map.unites, Map.unitesStatic, false); if (chemin != null) { objet1.ObjectifListe = chemin; } } } return(true); }
public virtual void Draw(SpriteBatch spriteBatch) { spriteBatch.Draw(Sprite, ConvertUnits.ToDisplayUnits(body.Position), SpritePosition, Color.White, 0f, new Vector2(Tiles.X / 2, Tiles.Y / 2), Scale, FlipH ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); }
public static float DistanceUnites(Objet unite1, Objet unite2) { return((float)Math.Sqrt(Math.Pow(ConvertUnits.ToDisplayUnits(unite1.body.Position - unite2.body.Position).X, 2) + Math.Pow(ConvertUnits.ToDisplayUnits(unite1.body.Position - unite2.body.Position).Y, 2))); }