Ejemplo n.º 1
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
Ejemplo n.º 2
0
	} //DeclencherEtape

	/// <summary>
	/// Cherche une etape particuliere (suite a un choix).
	/// Si elle trouve une etape, elle change l'index _iEtape 
	/// </summary>
	/// <param name="tTypesCherches">Le type d'étape recherché</param>
	/// <returns>Retourne true si elle trouve, sinon retourne false.</returns>
	public bool ChercherIEtape(TypeEtape tTypesCherches){
		for(int iTest = _iEtape; iTest < _listeSeq.Count; iTest++){
			TypeEtape typeEtapeTest = _listeSeq[iTest].type;
			if(typeEtapeTest == tTypesCherches){
				//on a trouve, c'est donc la prochaine etape a faire
				//par consequent il faut changer la valeur de _iEtape:
				_iEtape = iTest;
				return true; //une etape a ete trouvee
			} //if
		} //for
		return false; //aucune etape n'a ete trouvee
	} //ChercherIEtape
Ejemplo n.º 3
0
        //------------------------------------------------------
        public CResultAErreur Delete()
        {
            CResultAErreur result = CResultAErreur.True;

            //Suppression des liens
            if (TypeEtape != null && Parent != null)
            {
                //Vérifie qu'aucun autre objet ne référence ce type d'étape
                foreach (I2iObjetGraphique objet in Parent.Childs)
                {
                    if (objet != this)
                    {
                        CWorkflowEtapeDessin etapeExistante = objet as CWorkflowEtapeDessin;
                        if (etapeExistante != null && etapeExistante.IdUniverselEtape == IdUniverselEtape)
                        {
                            return(result);
                        }
                    }
                }

                result = TypeEtape.CanDelete();
                if (!result)
                {
                    return(result);
                }
                //Supprime les objets lien
                CWorkflowDessin dessin = Parent as CWorkflowDessin;
                if (dessin != null)
                {
                    foreach (CWorkflowLienDessin lien in dessin.GetLiensEntrants(this))
                    {
                        dessin.RemoveChild(lien);
                    }
                    foreach (CWorkflowLienDessin lien in dessin.GetLiensSortants(this))
                    {
                        dessin.RemoveChild(lien);
                    }
                }
                result = TypeEtape.Delete(true);
            }
            return(result);
        }
Ejemplo n.º 4
0
	} //TesterSiOk


	/// <summary>
	/// Ajoute une etape d'interaction a la sequence.
	/// Assemble les elements recus dans une liste-etape, puis l'ajoute a la liste-sequence.
	/// Conseil: Afin de simplifier votre travail, utilisez plutot les methodes SequencerReplique, SequencerObjet, etc.
	/// </summary>
	/// <param name="type">Le type d'interaction (replique, combat, objet, etc.)</param>
	/// <param name="contenuA">Element de contenu (chaine optionnelle).</param>
	/// <param name="contenuB">Element de contenu (chaine optionnelle).</param>
	/// <param name="contenuC">Element de contenu (chaine optionnelle).</param>
	static public void Sequencer(TypeEtape type, string contenuA=null, string contenuB=null, string contenuC=null){
		EtapeDialogue uneEtape = new EtapeDialogue(type, contenuA, contenuB, contenuC);
		_listeSeq.Add(uneEtape);
	} //Sequencer
Ejemplo n.º 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