示例#1
0
        /// <summary>
        /// Creer un effet dans la pile.
        /// </summary>
        /// <param name="_IDCardGame">IDCardGame de la carte ayant créé l'effet</param>
        /// <param name="effet">Effet joué</param>
        /// <param name="_IDCardGameCibleEffet">List des IDCardGame des cibles</param>
        /// <param name="_numeroEffet">Le numero de l'effet, sa poosition dans la liste des effets</param>
        /// <param name="numeroListEffet"> Le numero de la liste qui contient l'effet
        /// 0 pour les effets "normaux"
        /// 1 pour les effets astraux
        /// 2 pour les effets maléfiques </param>
        public void CreerEffetInPile(int _IDCardGame, Effet effet, List <int> _IDCardGameCibleEffet, int _numeroEffet,
                                     int numeroListEffet, int playerID)
        {
            effetJoue            = effet;
            IDObjectCardGame     = _IDCardGame;
            IDCardGameCibleEffet = _IDCardGameCibleEffet;
            Debug.Log(IDCardGameCibleEffet.Count);
            GameObject Pile = GameObject.FindGameObjectWithTag("Pile");

            transform.SetParent(Pile.transform, false);
            EffetListNumber = numeroListEffet;
            numeroEffet     = _numeroEffet;
            etatEffet       = 1;
            setPlayerIDAssociee(playerID);

            if (numeroEffet != -4)
            {
                // Pour un changement de phase, il n'y a pas de cartes associées
                if (FindCardWithID(_IDCardGame) != null)
                {
                    ObjetEffet = FindCardWithID(_IDCardGame);
                }
            }

            PhraseDecritEffet = CreerPhraseDecritEffet();

            Debug.Log(ObjetEffet);
            Debug.Log("Voici l'IDCardGame de l'objet qui crée l'effet : " + _IDCardGame.ToString());

            // getGameManager().GetComponent<GameManager>().CheckAllEffetsCartes();

            MontrerCartesDeplacement();
        }
        /// <summary>
        /// Retourne l'effet recherché d'une carte en fonction de plusieurs paramètres.
        /// </summary>
        /// <param name="Carte">La Carte dont on souhaite récupérer un effet.</param>
        /// <param name="numeroEffet">Le numéro de l'effet dans la liste</param>
        /// <param name="numeroListeEffet">Le numéro de la liste. 0 pour la liste normale,
        /// 1 pour la liste astrale, 2 pour la liste maléfique</param>
        /// <returns></returns>
        public Effet GetEffetFromCarte(GameObject Carte, int numeroEffet, int numeroListeEffet = 0)
        {
            Effet effetRetour = new Effet();

            switch (Carte.GetComponent <CarteType>().thisCarteType)
            {
            case CarteType.Type.ENTITE:
                switch (numeroListeEffet)
                {
                case 0:
                    return(Carte.GetComponent <Entite>().AllEffets[numeroEffet]);

                case 1:
                    return(Carte.GetComponent <Entite>().AllEffetsAstral[numeroEffet]);

                case 2:
                    return(Carte.GetComponent <Entite>().AllEffetsMalefique[numeroEffet]);

                default:
                    throw new Exception("L'entier numeroListeEffet doit être compris entre 0 et 2 inclus");
                }

            case CarteType.Type.ASSISTANCE:
                return(Carte.GetComponent <Assistance>().AllEffets[numeroEffet]);

            case CarteType.Type.SORT:
                return(Carte.GetComponent <Sort>().AllEffets[numeroEffet]);

            default:
                throw new Exception("Ce type de carte n'existe pas");
            }
        }
示例#3
0
 /// <summary>
 /// Constructeur de la classe EffetPlusInfo
 /// </summary>
 /// <param name="effet"></param>
 /// <param name="_numeroEffet">Numero de l'effet dans la liste</param>
 /// <param name="_numeroListEffet">Numero de la liste
 /// 0 : si effets normaux
 /// 1 : si effets astraux
 /// 2 : si effets maléfiques</param>
 public EffetPlusInfo(Effet effet, int _numeroEffet, int _numeroListEffet)
 {
     AllActionsEffet    = effet.AllActionsEffet;
     AllConditionsEffet = effet.AllConditionsEffet;
     numeroEffet        = _numeroEffet;
     numeroListEffet    = _numeroListEffet;
     EffetString        = effet.EffetString;
     EstDeclarable      = effet.EstDeclarable;
     Debug.Log(effet);
 }
示例#4
0
 public EffetPlusInfo(Effet effet, int _numeroEffet, int _numeroListEffet, int _IDCardGame) : this(effet, _numeroEffet,
                                                                                                   _numeroListEffet)
 {
     IDCardGame    = _IDCardGame;
     EstDeclarable = effet.EstDeclarable;
 }
示例#5
0
        /// <summary>
        /// Ajouter un effet à la pile d'effet.
        /// Appelé sur le client
        /// </summary>
        /// <param name="IDObjetEffet">IDCardGame de la carte qui a créé l'effet</param>
        /// <param name="ListeObjetsCible">Liste des IDCardGame des objets visés par l'effet</param>
        /// <param name="numeroEffet">Le numero de l'effet dans la liste</param>
        /// <param name="numeroListeEffet">Le numero de la liste d'effets</param>
        /// <param name="PlayerID">L'ID du joueur qui joue l'effet</param>
        /// <param name="ProposeDefairePile">Si True alors cet effet est le dernier joué, il doit proposer de défaire la pile</param>
        public void AjouterEffetALaPile(int IDObjetEffet, int[] ListeObjetsCible, int numeroEffet,
                                        int numeroListeEffet, int PlayerID, bool ProposeDefairePile)
        {
            GameObject NouveauEffetInPile = Instantiate(EffetInPilePrefab);
            Effet      effetJoue          = new Effet();

            switch (numeroEffet)
            {
            // On vérifie que ce n'est pas un effet "spécial" tel qu'une attaque ou un déplacement.
            // Attaque
            case -1:
                effetJoue = new Effet {
                    AllActionsEffet = new List <Action> {
                        new Action(Action.ActionEnum.ATTAQUE, 0)
                    }
                };
                break;

            // Changement de phase
            case -4:

                break;

            // Changement de position vers le sanctuaire ou vers le champ de bataille
            case -3:
            case -2:

                break;

            default:
                effetJoue = GetEffetFromCarte(FindCardWithID(IDObjetEffet), numeroEffet, numeroListeEffet);
                break;
            }

            // On crée une liste d'entier au lieu d'un tableau.
            List <int> ListeObjetsCibleInt = new List <int>();

            for (int i = 0; i < ListeObjetsCible.Length; ++i)
            {
                Debug.Log("Cible la");
                ListeObjetsCibleInt.Add(ListeObjetsCible[i]);
            }

            AntinomiaLog("ID de l'objet effet  " + IDObjetEffet);
            NouveauEffetInPile.GetComponent <EffetInPile>().CreerEffetInPile(IDObjetEffet, effetJoue, ListeObjetsCibleInt, numeroEffet,
                                                                             numeroListeEffet, PlayerID);
            pileEffets.Add(NouveauEffetInPile);
            CartesAssociees.Add(IDObjetEffet);

            AntinomiaLog(PlayerID);
            AntinomiaLog(FindLocalPlayer().GetComponent <Player>().PlayerID);

            Debug.Log("On va regarder les effets");


            Debug.Log("Defaire Pile " + ProposeDefairePile);
            AntinomiaLog("Defaire Pile " + ProposeDefairePile);

            if (PlayerID != FindLocalPlayer().GetComponent <Player>().PlayerID)
            {
                // On propose à tous les joueurs de répondre/ajouter des effets à la pile
                if (ProposeDefairePile)
                {
                    AntinomiaLog("On propose");
                    Debug.Log("On propose");
                    InformerAjoutEffetPile(NouveauEffetInPile.GetComponent <EffetInPile>().CreerPhraseDecritEffet());
                }
                else
                {
                    Debug.Log("On ne propose pas");
                    AntinomiaLog("One ne propose pas");
                    InformerSansPause(NouveauEffetInPile.GetComponent <EffetInPile>().CreerPhraseDecritEffet());
                }
                AntinomiaLog("L'effet devrait être display");
            }
            // On ne regarde les effets que si on est chez le joueur qui a créé l'effet.
            else
            {
                GameObject thisCarte = NouveauEffetInPile.GetComponent <EffetInPile>().ObjetEffet;

                List <GameObject> allCardsPlayer = getAllCardsFromPlayerBoardSanctuaire(thisCarte);

                int deposeCarte = 0;
                // On regarde les effets des cartes.
                switch (numeroEffet)
                {
                case -2:
                case -3:
                    ////////////// GESTION DES EFFETS PONCTUELS ////////////////
                    switch (numeroEffet)
                    {
                    case -2:
                        // On dépose une carte sur le board
                        Debug.Log("Depose carte sur le board.");
                        deposeCarte = 2;
                        break;

                    case -3:
                        // On dépose une carte sur le sanctuaire
                        Debug.Log("<color=red>Depose Carte 1</color>");
                        deposeCarte = 1;
                        break;

                    default:
                        // Si l'effet n'est d'aucun de ces deux types,
                        // c'est qu'il n'y a aucun effet à jouer lors d'une dépose de carte
                        // Mais il peut quand même y avoir d'autres effets.
                        break;
                    }
                    break;
                }

                StartCoroutine(CheckEffetCartesApresAjout(thisCarte, deposeCarte, allCardsPlayer, NouveauEffetInPile));
            }
        }