コード例 #1
0
        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;
            }
        }
コード例 #2
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();
        }
コード例 #3
0
ファイル: Objet.cs プロジェクト: adrientoub/CrystalGate
 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));
 }
コード例 #4
0
ファイル: Objet.cs プロジェクト: adrientoub/CrystalGate
        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);
        }
コード例 #5
0
ファイル: Objet.cs プロジェクト: adrientoub/CrystalGate
 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);
 }
コード例 #6
0
ファイル: Outil.cs プロジェクト: adrientoub/CrystalGate
 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)));
 }