} //Choisir /// <summary> /// Declenche la prochaine etape de la sequence prevue (selon son type). /// </summary> public void DeclencherEtape(){ GameObject leGameObjectCible; if(_listeSeq.Count>_iEtape){ //il reste une ou des etapes TypeEtape leType = _listeSeq[_iEtape].type; switch(leType){ case TypeEtape.REPLIQUE: //c'est un texte a afficher _champMessage.text = _listeSeq[_iEtape].replique; // si un nom est prevu, on l'affiche: if(_listeSeq[_iEtape].nomPersoReplique!=null){ //l'etape possede son propre nom: _champNom.text = _listeSeq[_iEtape].nomPersoReplique; } else { //on affiche le nom par defaut: _champNom.text = Regex.Replace(_nomEnCours, "[0-9]", ""); //on elimine les chiffres du nom } //if // Affichage du bouton suite: _boutonSuite.SetActive(true); // Masquage des autres boutons: _boutonOui.SetActive(false); _boutonNon.SetActive(false); // Selection du bouton suite (permet d'appuyer sur Espace ou Entree pour le «cliquer»): EventSystem.current.SetSelectedGameObject(_boutonSuite); //Debug.Log("FOCUS AU BTN DU DIALOGUE"); break; case TypeEtape.CHOIX_OUI_NON: //c'est un texte a afficher _champMessage.text = _listeSeq[_iEtape].replique; // si un nom est prevu, on l'affiche: if(_listeSeq[_iEtape].nomPersoReplique!=null){ //l'etape possede son propre nom: _champNom.text = _listeSeq[_iEtape].nomPersoReplique; } else { //on affiche le nom par defaut: _champNom.text = Regex.Replace(_nomEnCours, "[0-9]", ""); //on elimine les chiffres du nom } //if // Masquage du bouton suite: _boutonSuite.SetActive(false); // Affichage des autres boutons: _boutonOui.SetActive(true); _boutonNon.SetActive(true); // Selection du bouton oui (permet d'appuyer sur Espace ou Entree pour le «cliquer»): EventSystem.current.SetSelectedGameObject(_boutonOui); break; case TypeEtape.SI_OUI: if(_choixBool==false){ //on cherche _SI_NON ou _FIN_SI if(ChercherIEtape(TypeEtape.SI_NON)){ //une etape existe, on laisse la suite s'enclencher } else { if(ChercherIEtape(TypeEtape.FIN_SI)){ //c'est aussi une etape valide, on laisse la suite s'enclencher } else { EffacerTout(); //la discussion s'arretera } }//if+else } else { //on est dans une serie _SI_OUI } break; case TypeEtape.SI_NON: if(_choixBool==true){ //on cherche _FIN_SI if(ChercherIEtape(TypeEtape.FIN_SI)){ //une etape existe, on laisse la suite s'enclencher } else { EffacerTout(); //la discussion s'arretera }//if+else } else { //on est dans une serie _SI_NON } break; case TypeEtape.OBJET: Jeu.AjouterObjet(_listeSeq[_iEtape].nomObjet); Debug.Log("Ajout de l'objet suivant en inventaire: "+_listeSeq[_iEtape].nomObjet+" Jeu.listeObjets="+string.Join(", ", Jeu.listeObjets.ToArray())); // affichage de la replique d'acquisition de l'objet: _champMessage.text = _listeSeq[_iEtape].replique; // on affiche le nom de l'objet: _champNom.text = "Un objet!"; //_listeSeq[_iEtape].nomObjet; break; case TypeEtape.VISIBILITE: // il faut changer la visibilite de l'instance (peut etre un objet ou un PNJ) string nomObjet = _listeSeq[_iEtape].nomObjet; if(nomObjet==null){ leGameObjectCible = _leGameObjectDemandeur; } else { // il faut trouver le gameObject a cacher // on demande a la classe Interacteur (objets+PNJ): leGameObjectCible = Interacteur.TrouverInstance(nomObjet); } // if+else if(leGameObjectCible!=null){ if(_listeSeq[_iEtape].visible){ // le clip se montre et devient present (si desMaintenant est faux, sera effectif au prochain affichage du tableau): leGameObjectCible.GetComponent<Interacteur>().Montrer(_listeSeq[_iEtape].desMaintenant); } else { // le clip se cache et devient absent (si desMaintenant est faux, sera effectif au prochain affichage du tableau): leGameObjectCible.GetComponent<Interacteur>().Cacher(_listeSeq[_iEtape].desMaintenant); } } // if break; case TypeEtape.EQUIPIER: Jeu.instance.AjouterPerso(_listeSeq[_iEtape].nomPersoReplique); break; case TypeEtape.TRANSACTION: Jeu.fortune += _listeSeq[_iEtape].quantite; break; case TypeEtape.COMBAT: TypeCombat leTypeDuCombat = _listeSeq[_iEtape].typeCombat; Jeu.instance.OuvrirCombat(leTypeDuCombat); break; } //switch _iEtape++; if(leType!=TypeEtape.REPLIQUE && leType!=TypeEtape.CHOIX_OUI_NON){ //dans tous les autres cas, pas de clic requis, //on passe automatiquement a la prochaine etape de la sequence: DeclencherEtape(); } //if } else { AfficherBoiteDialogue(false); //on memorise le temps _memTempsFinDialogue = Time.time; } //if(_listeSeq.Count>_iEtape)+else } //DeclencherEtape