Esempio n. 1
0
    public void EnnemiFuit()
    {
        int hostilesTues = 0;

        for (int i = 0; i < hostile.nbrCombattant; i++)
        {
            int alea = Random.Range(0, 99);

            if (alea < 25)
            {
                hostilesTues++;
            }
        }

        EvenementCombat fuiteHostile = ScriptableObject.CreateInstance <EvenementCombat>();

        string texteInfobulle;
        string descriptionChoix;

        if (hostilesTues > 0)
        {
            texteInfobulle = "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurTexteBonus)
                             + ">" + hostilesTues + " <color=\"white\">ennemis meurent";
            descriptionChoix         = "L'ennemi goute à nos pointes !";
            fuiteHostile.description = "L'ennemi a tenté de fuire, mais nous avons réussi à tuer certains d'entre eux avant !";
            fuiteHostile.titre       = "ENNEMIS RATTRAPES";
        }
        else
        {
            texteInfobulle           = "Maudits soient-ils !";
            descriptionChoix         = "Aucun ennemi ne meurt";
            fuiteHostile.description = "L'ennemi a fuit et nous avons été incapable de l'intercepter." +
                                       "A l'heure qu'il est ils doivent être en train de se rassembler pour préparer un nouvel assaut.";
            fuiteHostile.titre = "L'ENNEMI S'ENFUIT";
        }

        Evenement.Choix choix = new Evenement.Choix(descriptionChoix, texteInfobulle);

        choix.effets.AddListener(InterfaceEvenement.Defaut.FermerFenetreEvenement);
        choix.effets.AddListener(() => fuiteHostile.TuerEnnemis(hostilesTues));


        fuiteHostile.listeChoix.Add(choix);
        fuiteHostile.combat = this;
        fuiteHostile.LancerEvenement();
    }
Esempio n. 2
0
    public void joueurFuit()
    {
        int guerriersTues = 0;

        for (int i = 0; i < guerrier.nbrGuerrier; i++)
        {
            int alea = Random.Range(0, 99);

            if (alea < 25)
            {
                guerriersTues++;
            }
        }

        EvenementCombat fuiteJoueur = ScriptableObject.CreateInstance <EvenementCombat>();

        string texteInfobulle;
        string descriptionChoix;

        if (guerriersTues > 0)
        {
            texteInfobulle = "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface)
                             + ">" + guerriersTues + " <color=\"white\">guerriers meurent";
            descriptionChoix        = "Nous avons subit des pertes";
            fuiteJoueur.description = "En plus de l'humilation de la défaite, certains de nos guerriers ont dû mourrir sans se battre. La fuite ne s'est pas bien passée";
            fuiteJoueur.titre       = "ECHEC DE LA FUITE";
        }
        else
        {
            texteInfobulle          = "Dans les fourrés !";
            descriptionChoix        = "Aucun guerriere ne meurt";
            fuiteJoueur.description = "Il semble que nos guerriers courent mieux qu'ils se battent." +
                                      "A défaut d'avoir remporté la victoire, la retraite a été un succès.";
            fuiteJoueur.titre = "RETRAITE REUSSIE";
        }

        Evenement.Choix choix = new Evenement.Choix(descriptionChoix, texteInfobulle);

        choix.effets.AddListener(InterfaceEvenement.Defaut.FermerFenetreEvenement);
        choix.effets.AddListener(() => fuiteJoueur.TuerGuerrier(guerriersTues));

        fuiteJoueur.listeChoix.Add(choix);
        fuiteJoueur.combat = this;
        fuiteJoueur.LancerEvenement();
    }
Esempio n. 3
0
    public void AfficherRecap(Combat.RecapCombat recap, Combat combat, Evenement.Choix choix, UnityAction fonctionFuite)
    {
        if (!infoBulleBanniereJoueur)
        {
            infoBulleBanniereJoueur = banniereJoueur.GetComponent <InfoBulle>();
        }
        if (!infoBulleBanniereHostile)
        {
            infoBulleBanniereHostile = banniereHostile.GetComponent <InfoBulle>();
        }

        attaqueGuerrier.text = recap.attaqueGuerrier.ToString();
        defenseGuerrier.text = recap.defenseGuerrier.ToString();
        attaqueHostile.text  = recap.attaqueHostile.ToString();
        defenseHostile.text  = recap.defenseHostile.ToString();
        mortsGuerrier.text   = recap.mortsGuerrier.ToString();
        mortsHostile.text    = recap.mortsHostile.ToString();

        statsGuerrier.MAJStats(combat.Guerrier);
        statsHostile.MAJStats(combat.Hostile);

        banniereJoueur.sprite = combat.Guerrier.tribu.banniere.sprite;
        infoBulleBanniereJoueur.texteInfoBulle = combat.Guerrier.tribu.name;
        banniereHostile.sprite = combat.Hostile.pion.spriteRenderer.sprite;
        infoBulleBanniereHostile.texteInfoBulle = combat.Hostile.pion.name;

        AssignationChoix(choix);

        if (OptionsJeu.Defaut.modeCombatsSimplifies && combat.Hostile.nbrCombattant > 0 && combat.Guerrier.nbrGuerrier > 0)
        {
            choixFuite.onClick.RemoveAllListeners();
            choixFuite.onClick.AddListener(fonctionFuite);
            choixFuite.onClick.AddListener(InterfaceEvenement.Defaut.FermerFenetreEvenement);
            choixFuite.onClick.AddListener(combat.joueurFuit);
            choixFuite.gameObject.SetActive(true);
        }
        else
        {
            choixFuite.gameObject.SetActive(false);
        }
    }
Esempio n. 4
0
    public void OuvrirRecapCombat(Combat.RecapCombat recap, Combat combat)
    {
        StartCoroutine(VerifierEvenementFini());
        fondNoir.gameObject.SetActive(true);
        recapCombat.gameObject.SetActive(true);
        Evenement.Choix choix = new Evenement.Choix("", "");
        choix.effets.AddListener(FermerFenetreEvenement);
        choix.effets.AddListener(() => combat.Guerrier.tribu.demographie.DesengagerGuerrier(true, recap.mortsGuerrier));
        if (combat.Hostile.nbrCombattant > 0 && combat.Guerrier.nbrGuerrier > 0)
        {
            if (recap.ennemiFuit)
            {
                choix.description = "L'ennemi est démoralisé et fuit !";
                choix.effets.AddListener(combat.EnnemiFuit);
                choix.infobulle = "L'ennemi perd la volonté de se battre";
            }
            else
            {
                choix.description = "Le combat continue";
                if (!OptionsJeu.Defaut.modeCombatsSimplifies)
                {
                    choix.effets.AddListener(ListeEvenementCombat.Defaut.PiocherEvenement(combat).LancerEvenement);
                }
                else
                {
                    choix.effets.AddListener(combat.LancerCombat);
                }
                choix.infobulle = "Pouvons-nous vraiment continuer ce combat ?";
            }
        }
        else
        {
            if (combat.Hostile.nbrCombattant == 0 && combat.Guerrier.nbrGuerrier == 0)
            {
                choix.description = "C'est un carnage";
                choix.infobulle   = "Les deux camps ont été anéhantis dans l'affrontement";
            }
            else if (combat.Hostile.nbrCombattant == 0)
            {
                choix.description = "Nous avons gagné !";
                choix.effets.AddListener(combat.looterEnnemi);
                choix.infobulle = "L'unitée ennemie est détruite";
                for (int i = 0; i < combat.Hostile.loot.gains.Length; i++)
                {
                    if (combat.Hostile.loot.gains[i] > 0)
                    {
                        choix.infobulle += "\n<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurTexteBonus) + ">+"
                                           + combat.Hostile.loot.gains[i] + "<color=\"white\"> " + ListeRessources.Defaut.listeDesRessources[i].nom;
                    }
                }
            }
            else if (combat.Guerrier.nbrGuerrier == 0)
            {
                choix.description = "Nous avons perdu !";
                choix.infobulle   = "Tous nos guerriers sont morts...\nNous aurions peut-être dû fuir avant";
            }
        }

        if (combat.Hostile.pion.revendication.EstPillard)
        {
            recapCombat.illustration.sprite = illuPillard;
        }
        else if (combat.Hostile.pion.revendication.EstPredateur)
        {
            recapCombat.illustration.sprite = illuPredateur;
        }
        else if (combat.Hostile.pion.revendication.EstMegaFaune)
        {
            recapCombat.illustration.sprite = illuMegaFaune;
        }

        recapCombat.AfficherRecap(recap, combat, choix, () => combat.Guerrier.tribu.demographie.DesengagerGuerrier(true, recap.mortsGuerrier));
        StartCoroutine(MAJCanvas());
    }
Esempio n. 5
0
 private void AssignationChoix(Evenement.Choix choix)
 {
     objChoix.GetComponent <TextMeshProUGUI>().text     = choix.description;
     objChoix.GetComponent <InfoBulle>().texteInfoBulle = choix.infobulle;
     objChoix.GetComponent <Button>().onClick.AddListener(choix.effets.Invoke);
 }
Esempio n. 6
0
    private void EcrireEffets()
    {
        SerializedProperty effet;
        SerializedProperty cible;
        SerializedProperty methode;
        SerializedProperty argument;

        SerializedObject so = new SerializedObject(evenement);

        if (oih == 0)
        {
            //SerializedProperty it = so.GetIterator();
            //while (it.Next(true))
            //{ // or NextVisible, also, the bool argument specifies whether to enter on children or not
            //    Debug.Log(it.propertyPath);
            //}
            oih++;
        }

        for (int i = 0; i < evenement.listeChoix.Count; i++)
        {
            effet = so.FindProperty("listeChoix.Array.data[" + i + "].effets.m_PersistentCalls.m_Calls.Array");
            Evenement.Choix choix = evenement.listeChoix[i];
            InitialiserListeRetour(choix.retoursEffets, effet.arraySize);

            for (int j = 0; j < effet.arraySize; j++)
            {
                cible    = effet.FindPropertyRelative("data[" + j + "].m_Target");
                methode  = effet.FindPropertyRelative("data[" + j + "].m_MethodName");
                argument = effet.FindPropertyRelative("data[" + j + "].m_Arguments.m_FloatArgument");
                string          retour          = "";
                EvenementCombat evenementCombat = null;
                if (evenement is EvenementCombat)
                {
                    evenementCombat = (EvenementCombat)evenement;
                }

                if (methode.stringValue.Contains("Gain"))
                {
                    retour = methode.stringValue.Remove(0, 4);

                    if (argument.floatValue > 0)
                    {
                        retour += "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurTexteBonus) + ">+"
                                  + argument.floatValue +
                                  "<color=\"white\">";
                    }
                    else if (argument.floatValue < 0)
                    {
                        retour += "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface) + ">"
                                  + argument.floatValue +
                                  "<color=\"white\">";
                    }
                }
                else if (methode.stringValue.Contains("Fuir"))
                {
                    if (methode.stringValue.Contains("Pourcentage"))
                    {
                        retour += "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface) + ">"
                                  + evenementCombat.baliseGuerPourc + argument.intValue + evenement.finBalise + " guerriers s'enfuient." +
                                  "<color=\"white\">";
                    }
                    else
                    {
                        argument = effet.FindPropertyRelative("data[" + j + "].m_Arguments.m_IntArgument");
                        retour  += "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface) + ">"
                                   + evenementCombat.baliseGuer + argument.intValue + evenement.finBalise + " guerriers s'enfuient." +
                                   "<color=\"white\">";
                    }
                }
                else if (methode.stringValue.Contains("Tuer"))
                {
                    if (methode.stringValue.Contains("Guerrier"))
                    {
                        if (methode.stringValue.Contains("Pourcentage"))
                        {
                            retour += "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface) + ">"
                                      + evenementCombat.baliseGuerPourc + argument.floatValue + evenement.finBalise + " guerriers tués" +
                                      "<color=\"white\">";
                        }
                        else
                        {
                            argument = effet.FindPropertyRelative("data[" + j + "].m_Arguments.m_IntArgument");
                            retour  += "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface) + ">"
                                       + evenementCombat.baliseGuer + argument.intValue + evenement.finBalise + " guerriers tués" +
                                       "<color=\"white\">";
                        }
                    }
                    else if (methode.stringValue.Contains("Ennemis"))
                    {
                        if (methode.stringValue.Contains("Pourcentage"))
                        {
                            retour += "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurTexteBonus) + ">"
                                      + evenementCombat.baliseEnnPourc + argument.floatValue + evenement.finBalise + " ennemis meurent" +
                                      "<color=\"white\">";
                        }
                        else
                        {
                            argument = effet.FindPropertyRelative("data[" + j + "].m_Arguments.m_IntArgument");
                            retour  += "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurTexteBonus) + ">"
                                       + evenementCombat.baliseEnn + argument.intValue + evenement.finBalise + " ennemis meurent" +
                                       "<color=\"white\">";
                        }
                    }
                }
                else if (methode.stringValue.Contains("LancerCombat"))
                {
                    retour = "Le combat commence";
                }
                else if (methode.stringValue.Contains("LooterEnnemi"))
                {
                    retour = "S'emparer du butin de l'ennemi";
                }
                else if (methode.stringValue.Contains("Piocher"))
                {
                    int index = 0;
                    retour = "";

                    ClusterEvenement cluster = (ClusterEvenement)cible.objectReferenceValue;
                    for (int g = 0; g < cluster.listeEvenements.Count; g++)
                    {
                        if (cluster.listeEvenements[g].descriptionRapide != "")
                        {
                            if (index > 0)
                            {
                                retour += "\n";
                            }
                            if (cluster.listeEvenements[g].proba <= 25)
                            {
                                retour += " - <color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface) + ">"
                                          + "Faible chance " + "<color=\"white\">"
                                          + cluster.listeEvenements[g].descriptionRapide;
                            }
                            else if (cluster.listeEvenements[g].proba > 25 && cluster.listeEvenements[g].proba <= 60)
                            {
                                retour += " - <color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteMoyenne) + ">"
                                          + "Chance moyenne " + "<color=\"white\">"
                                          + cluster.listeEvenements[g].descriptionRapide;
                            }
                            else
                            {
                                retour += " - <color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurTexteBonus) + ">"
                                          + "Forte chance " + "<color=\"white\">"
                                          + cluster.listeEvenements[g].descriptionRapide;
                            }
                            index++;
                        }
                    }
                }
                else if (cible.objectReferenceValue is Buff)
                {
                    Buff buff = (Buff)cible.objectReferenceValue;
                    retour = buff.Retours;
                }
                else if (methode.stringValue.Contains("Bonus"))
                {
                    if (methode.stringValue.Contains("Attaque"))
                    {
                        char pluriel = '\0';
                        if (math.abs(argument.intValue) != 1)
                        {
                            pluriel = 's';
                        }

                        if (argument.intValue > 0)
                        {
                            retour = "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurTexteBonus) + ">+"
                                     + argument.intValue + "<color=\"white\">point" + pluriel + " d'attaque ";
                        }
                        else if (argument.intValue < 0)
                        {
                            retour = "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface) + ">"
                                     + argument.intValue + "<color=\"white\">point" + pluriel + " d'attaque ";
                        }
                    }
                    else if (methode.stringValue.Contains("Defense"))
                    {
                        char pluriel = '\0';
                        if (Math.Abs(argument.intValue) != 1)
                        {
                            pluriel = 's';
                        }

                        if (argument.intValue > 0)
                        {
                            retour = "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurTexteBonus) + ">+"
                                     + argument.intValue + "<color=\"white\">point" + pluriel + " de défense ";
                        }
                        else if (argument.intValue < 0)
                        {
                            retour = "<color=#" + ColorUtility.ToHtmlStringRGBA(ListeCouleurs.Defaut.couleurAlerteTexteInterface) + ">"
                                     + argument.intValue + "<color=\"white\">point" + pluriel + " de défense ";
                        }
                    }
                }
                else
                {
                    continue;
                }
                choix.retoursEffets[j] = retour;
            }
        }
    }