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(); }
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(); }
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); } }
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()); }
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); }
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; } } }