Beispiel #1
0
	} //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