/// <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"); } }
/// <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); }
public EffetPlusInfo(Effet effet, int _numeroEffet, int _numeroListEffet, int _IDCardGame) : this(effet, _numeroEffet, _numeroListEffet) { IDCardGame = _IDCardGame; EstDeclarable = effet.EstDeclarable; }
/// <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)); } }