// Use this for initialization
    void Start()
    {
        camera = Camera.main;
        Joueur Joueur1 = GameStarter.obtenirJoueur1(); //player
        Joueur Ordi= GameStarter.obtenirJoueur2(); // IA
        MyControler = new RuleController();
        MyControler.demarerDuel(Joueur1, Ordi);
        this.DisplayHand();
        //GameObject PlayedCard = this.transform.GetChild(0).gameObject;
        //GameObject slot1 = PlayedCard.transform.GetChild(3).gameObject;
        //Vector3 positions = slot1.transform.position;

        //GameObject cardClone = (GameObject)Instantiate(test, positions,slot1.transform.rotation);
        //cardClone.transform.parent = PlayedCard.transform;
        ////Quaternion quat = new Quaternion(0, 0, 0, 0);
        //positions = positions + new Vector3(0f, 1f, 0f);

        ////positions.z = -1;

        ////positions.z = -1;
        //////cardClone.transform.position = slot1.transform.position;
        //cardClone.transform.rotation = slot1.transform.rotation;

        //Debug.Log(positions);
        //cardClone.transform.localScale = slot1.transform.localScale;
        //cardClone.transform.position = positions;
        //Debug.Log(cardClone.transform.position);

        //PlayedCard.gameObject.AddComponent();
        //Debug.Log(cardClone.transform.localScale);
    }
        public void TestFinTour()
        {
            RuleController MonControlleur = new RuleController();
            MonControlleur.demarerDuel(obtenirJoueur1(), obtenirJoueur2());
            MonControlleur.finTourJoueur1();
            MonControlleur.finTourJoueur2();
            Assert.AreEqual(2, MonControlleur.numTour, "Num tour NOK");
            Assert.AreEqual(4, MonControlleur.nbAction, "NbAction tour NOK");
            Assert.AreEqual(5, MonControlleur.joueur1.cartesEnMain.Count, "Nb cartes en mains joueur 1 NOk");
            Assert.AreEqual(5, MonControlleur.joueur2.cartesEnMain.Count, "Nb cartes en mains joueur 2 NOk");

        }
        public void TestDebutTourCartePermSoin()
        {
            RuleController MonControlleur = new RuleController();
            MonControlleur.demarerDuel(obtenirJoueur1(), obtenirJoueur2());
            decimal actionAvantCarte = MonControlleur.joueur1["actions"];
            decimal PVJoueur2 = MonControlleur.joueur2["PV"];
            MonControlleur.joueur1.cartesEnMain.ajouterCarte(getCarte("Mante religieuse"));
            Assert.AreEqual(5, MonControlleur.joueur1.cartesEnMain.Count, "Nb cartes en mains joueur 1 NOk");
            Carte carteJouee = MonControlleur.jouerUneCarteDepuisLaMain("Mante religieuse");
            Assert.AreEqual(PVJoueur2-carteJouee.attaque, MonControlleur.joueur2["PV"], "PV joueur 2  après jouer une carte NOk");
            MonControlleur.plateau.terrainsJoueur2.ajouterCarte(getCarte("Immortelle des dunes"));
            MonControlleur.finTourJoueur1();
            Assert.AreEqual(PVJoueur2 - carteJouee.attaque+1, MonControlleur.joueur2["PV"], "PV après immortelle des dunes NOK");

            
        }
        public void TestCarteRetardée()
        {
            RuleController MonControlleur = new RuleController();
            MonControlleur.demarerDuel(obtenirJoueur1(), obtenirJoueur2());
            decimal actionAvantCarte = MonControlleur.joueur1["actions"];
            int PaceLibreTerrainJoueur1 = MonControlleur.plateau.terrainsJoueur1.positionsLibres.Count;
            MonControlleur.joueur1.cartesEnMain.ajouterCarte(getCarte("Figuier de Barbarie"));
            Assert.AreEqual(5, MonControlleur.joueur1.cartesEnMain.Count, "Nb cartes en mains joueur 1 NOk");
            Carte carteJouee = MonControlleur.jouerUneCarteDepuisLaMain("Figuier de Barbarie");
            Assert.AreEqual(actionAvantCarte-3,MonControlleur.joueur1["actions"],"Nb action après carte retadrée NOK");
            Assert.AreEqual(PaceLibreTerrainJoueur1 - 1, MonControlleur.plateau.terrainsJoueur1.positionsLibres.Count, "Nb place libre joueur 1 NOK");

        }
        public void TestJouerCarteImpossible()
        {
            RuleController MonControlleur = new RuleController();
            MonControlleur.demarerDuel(obtenirJoueur1(), obtenirJoueur2());
            decimal actionAvantCarte = MonControlleur.joueur1["actions"];
            decimal PVJoueur2 = MonControlleur.joueur2["PV"];
            MonControlleur.joueur1.cartesEnMain.ajouterCarte(getCarte("Guêpe"));
            Assert.AreEqual(5, MonControlleur.joueur1.cartesEnMain.Count, "Nb cartes en mains joueur 1 NOk");
            Carte carteJouee = MonControlleur.jouerUneCarteDepuisLaMain("Guêpe");


            Assert.AreEqual(actionAvantCarte, MonControlleur.joueur1["actions"], "Nb action après jouer une carte NOK");
            Assert.AreEqual(5, MonControlleur.joueur1.cartesEnMain.Count, "Nb cartes en mains joueur 1 après jouer une carte NOk");
            Assert.AreEqual(PVJoueur2,MonControlleur.joueur2["PV"], "PV joueur 2  après jouer une carte NOk");
        }