Beispiel #1
0
    }     //Soigner

    /// <summary>
    /// Fait le grand menage et supprime l'instance Singleton du jeu.
    /// Doit etre executee apres la mort definitive (avant d'aller au menu ou au generique)
    /// Supprime les elements DontDestroyOnLoad (persos, ui, musique, etc.)
    /// </summary>
    public void SupprimerJeu()
    {
        Debug.Log("<color=green>METHODE SupprimerJeu</color>");

        //detruire les persos
        foreach (Perso perso in Jeu.lesPersos) //chaque personnage de la liste
        {
            Destroy(perso.gameObject);         //les gameobjects des personnages
        } //foreach

        Destroy(this.gameObject);         //jeu
        _instance = null;
        //il y a d'autres elements a supprimer avec cette technique...
        Destroy(_musique.gameObject);         //l'instance qui gere la musique
        Destroy(_canvasUI.gameObject);        //l'instance du canevas (par extension infos et dialogue)

        //remise a neuf des variables statiques dans Jeu:
        _lesPersos   = new List <Perso> {
        };
        _perso       = null;
        tableau      = null;
        combat       = null;
        nomJoueur    = "Spero";
        facteurTemps = 1;
        listeObjets  = new List <string>();
        _fortune     = 0;
        _memNomScene = null;
        typeCombat   = TypeCombat.AUCUN;

        //remise a neuf des variables statiques dans d'autres classes:
        Interacteur.InitialiserListeAbsences();       //cette liste statique est partagee par Objet et PNJ
        Perso.peutBouger = true;
        Debogage.InitialisationFinDePartie();         //supprime l'instance qui gere le debogage et toutes valeurs statiques
        Dialogue.InitialisationFinDePartie();
        PNJ.dictRencontres = new Dictionary <string, uint>();
    }     //SupprimerJeu
Beispiel #2
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