コード例 #1
0
    }     //ChangerScene

    /// <summary>
    /// Enregistre le type de combat et change de scene.
    /// </summary>
    /// <param name="leType">Type de combat (NORMAL, CHEF, etc.)</param>
    public void OuvrirCombat(TypeCombat leType = TypeCombat.NORMAL)
    {
        typeCombat = leType;
        Debug.Log("Début d'un combat de type: «" + typeCombat + "»!");
        _dialogue.AfficherBoiteDialogue(false);
        ChangerScene("Combat");
    }     //OuvrirCombat
コード例 #2
0
    }                                                            //acces en lecture seulement!

    //Constructeur:
    public EtapeDialogue(TypeEtape type, string texte = null, string complement = null, string complement2 = null)
    {
        _type = type;
        switch (type)
        {
        case TypeEtape.CHOIX_OUI_NON:
        case TypeEtape.REPLIQUE:
            _replique         = texte;
            _nomPersoReplique = complement;
            break;

        case TypeEtape.OBJET:
            _nomObjet = texte;
            _replique = "Tu as trouvé un objet: " + texte;
            int.TryParse(complement, out _quantite);                     //si nb valide, affectation de _quantite
            break;

        case TypeEtape.VISIBILITE:
            _nomObjet      = texte;
            _visible       = (complement != "False")?true:false;             //true par defaut
            _desMaintenant = (complement2 == "false")?false:true;            //true par defaut
            break;

        case TypeEtape.TRANSACTION:
            _quantite = int.Parse(texte);
            if (float.IsNaN(_quantite))
            {
                Debug.LogWarning("Erreur, la valeur demandée n'est pas valide: «" + texte + "».");
                _quantite = 0;
            }                     //if
            break;

        case TypeEtape.EQUIPIER:
            _nomPersoReplique = texte;
            break;

        case TypeEtape.COMBAT:
            switch (texte)
            {
            case "normal":   _typeCombat = TypeCombat.NORMAL;    break;

            case "souschef": _typeCombat = TypeCombat.SOUS_CHEF; break;

            case "chef":     _typeCombat = TypeCombat.CHEF;      break;
            }
            break;

        case TypeEtape.SI_OUI:
        case TypeEtape.SI_NON:
        case TypeEtape.FIN_SI:
            break;

        default:
            Debug.LogWarning("Erreur, un type d'étape imprévu a été demandé: «" + type + "».");
            break;
        } //switch
    }     //EtapeDialogue
コード例 #3
0
	} //Awake


	void Start(){ //important: doit etre Start, car doit etre apres le Awake des Persos
		Perso.peutBouger = false; //arret des deplacements pendant le combat
		_typeCombat = Jeu.typeCombat; //permet ensuite un acces plus rapide
		if( _typeCombat == TypeCombat.AUCUN ){
			 _typeCombat = TypeCombat.NORMAL; //assignation d'un type par defaut (utile pour tests)
		} 
		//Debug.Log("Start de la classe Combat. Type de combat: "+_typeCombat);
		for(int i = 0; i<Jeu.lesPersos.Count; i++){
			Perso unPerso = Jeu.lesPersos[i];
			unPerso.MettreEnEtatCombat();
			Vector2 posUnPerso = ObtenirPosition(_tReperesPersos, i);
			unPerso.ReplacerPosition(posUnPerso);
			unPerso.Figer(); //pour eliminer toute possible velocite residuelle
			unPerso.PlacerStats(_canvasUI, posUnPerso); //ajout des points;
		} //for

		_enCours = true;
		CreerMonstres();
		PermettreProchainChoix();
	} //Start
コード例 #4
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
コード例 #5
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
コード例 #6
0
    }     //OuvrirCombat

    /// <summary>
    /// Efface le type de combat et revient a la scene d'origine.
    /// </summary>
    public void FermerCombat()
    {
        typeCombat = TypeCombat.AUCUN;
        ChangerScene(); //sans parametre = retour a la scene en memoire
    }                   //FermerCombat