From 1f6ee979a1dadccd1c3115e650f11283b2c242b1 Mon Sep 17 00:00:00 2001 From: Paul Gross Date: Wed, 13 May 2020 12:47:46 +0200 Subject: [PATCH] =?UTF-8?q?Carte=20vision=20donn=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/carte/CartePiochable.java | 1 + src/carte/CarteVision.java | 40 +++++++++++++++++++++ src/database/CreatingCardsTest.java | 25 +++++++------ src/effet/EffetChoisirCible.java | 8 +++-- src/effet/EffetChoisirEffet.java | 9 +++-- src/effet/action/ActionMultiple.java | 5 +++ src/effet/action/ActionMultipleChoisir.java | 24 +++++++++++++ src/effet/action/ActionVoler.java | 6 ++-- src/ihm/controller/PlateauController.java | 13 +++++-- 9 files changed, 109 insertions(+), 22 deletions(-) create mode 100644 src/carte/CarteVision.java create mode 100644 src/effet/action/ActionMultipleChoisir.java diff --git a/src/carte/CartePiochable.java b/src/carte/CartePiochable.java index 3251a26..15b58c4 100644 --- a/src/carte/CartePiochable.java +++ b/src/carte/CartePiochable.java @@ -41,6 +41,7 @@ public class CartePiochable extends CarteCondition implements Serializable{ /* * @param j Appel la méthode utiliser de effet sur le joueur j */ + public void utiliser(Joueur j) { GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu(); gj.piocher(j,this); diff --git a/src/carte/CarteVision.java b/src/carte/CarteVision.java new file mode 100644 index 0000000..02882b0 --- /dev/null +++ b/src/carte/CarteVision.java @@ -0,0 +1,40 @@ +package carte; + +import java.io.Serializable; + +import condition.Condition; +import effet.EffetChoisirCible; +import effet.action.Action; +import main.GestionnaireJeu; +import main.Joueur; + +public class CarteVision extends CartePiochable implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = 903022795821166067L; + + public CarteVision(Action a, Condition c) { + super(Type.VISION, "",""); + this.setEffet(new EffetChoisirCible(a)); + this.setCondition(c); + } + + /* + * @param j le joueur utilisant son effet + */ + @Override + public void utiliser(Joueur j1) { + + GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu(); + gj.piocher(j1,this); + + Joueur j2 = j1.choisiParmisTous(); + + if(this.getCondition().isTrue(j2)) { + this.getEffet().getAction().affecte(j1, j2); + } + + } +} diff --git a/src/database/CreatingCardsTest.java b/src/database/CreatingCardsTest.java index cb4aa81..c680487 100644 --- a/src/database/CreatingCardsTest.java +++ b/src/database/CreatingCardsTest.java @@ -9,6 +9,7 @@ import carte.CarteLieu; import carte.CarteLieuMultiple; import carte.CarteLieuType; import carte.CartePiochable; +import carte.CarteVision; import condition.ConditionClassPersonnage; import condition.ConditionEquipe; import condition.ConditionMultiple; @@ -22,6 +23,7 @@ import effet.EffetSelf; import effet.action.ActionAltererStatistiquesJoueur; import effet.action.ActionAltererStatistiquesJoueurRoll; import effet.action.ActionMultiple; +import effet.action.ActionMultipleChoisir; import effet.action.ActionReveal; import effet.action.ActionVoler; import main.Joueur; @@ -151,6 +153,7 @@ public class CreatingCardsTest { // Poupé démoniaque // 26 + DatabaseManager.queryInsertObject(28,new CartePiochable(CartePiochable.Type.TENEBRE, new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true)) @@ -170,21 +173,21 @@ public class CreatingCardsTest { // Vision clairvoyante - DatabaseManager.queryInsertObject(33, new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -1, true)), + DatabaseManager.queryInsertObject(33, new CarteVision(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -1, true), new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 11, ConditionStatistiques.LESS))); // Vision cupide - DatabaseManager.queryInsertObject(34,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + DatabaseManager.queryInsertObject(34,new CarteVision(new ActionMultipleChoisir(new ActionVoler(ActionVoler.DONNER),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW))); - DatabaseManager.queryInsertObject(35,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + DatabaseManager.queryInsertObject(35,new CarteVision(new ActionMultipleChoisir(new ActionVoler(ActionVoler.DONNER),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW))); // Vision destructrice - DatabaseManager.queryInsertObject(36, new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + DatabaseManager.queryInsertObject(36, new CarteVision(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true), new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 12, ConditionStatistiques.MORE))); @@ -192,35 +195,35 @@ public class CreatingCardsTest { // Vision enivrante - DatabaseManager.queryInsertObject(38,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + DatabaseManager.queryInsertObject(38,new CarteVision(new ActionMultipleChoisir(new ActionVoler(ActionVoler.DONNER),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW))); - DatabaseManager.queryInsertObject(39,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + DatabaseManager.queryInsertObject(39,new CarteVision( new ActionMultipleChoisir(new ActionVoler(ActionVoler.DONNER),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW))); // Vision Foudroyante - DatabaseManager.queryInsertObject(40,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), + DatabaseManager.queryInsertObject(40,new CarteVision(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true), new ConditionEquipe(CartePersonnage.Equipe.SHADOW))); // Vision furtive - DatabaseManager.queryInsertObject(41,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + DatabaseManager.queryInsertObject(41,new CarteVision(new ActionMultipleChoisir(new ActionVoler(ActionVoler.DONNER),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), new ConditionEquipe(CartePersonnage.Equipe.HUNTER,CartePersonnage.Equipe.SHADOW))); - DatabaseManager.queryInsertObject(42,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + DatabaseManager.queryInsertObject(42,new CarteVision(new ActionMultipleChoisir(new ActionVoler(ActionVoler.DONNER),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), new ConditionEquipe(CartePersonnage.Equipe.HUNTER,CartePersonnage.Equipe.SHADOW))); // Vision Mortifère - DatabaseManager.queryInsertObject(43,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), + DatabaseManager.queryInsertObject(43,new CarteVision(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true), new ConditionEquipe(CartePersonnage.Equipe.SHADOW))); // Vision lugubre - DatabaseManager.queryInsertObject(45,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-2,true)), + DatabaseManager.queryInsertObject(45,new CarteVision(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-2,true), new ConditionEquipe(CartePersonnage.Equipe.SHADOW))); // Vision réconfortante diff --git a/src/effet/EffetChoisirCible.java b/src/effet/EffetChoisirCible.java index c363d73..f2038f9 100644 --- a/src/effet/EffetChoisirCible.java +++ b/src/effet/EffetChoisirCible.java @@ -12,11 +12,13 @@ public class EffetChoisirCible extends Effet{ @Override public void utiliser(Joueur joueur) { - Joueur j2 = joueur.choisiParmisTous(); + Joueur j2 = choisirCible(joueur); Action action = this.getAction(); - action.affecte(joueur, j2); - + } + + public Joueur choisirCible(Joueur joueur) { + return joueur.choisiParmisTous(); } } diff --git a/src/effet/EffetChoisirEffet.java b/src/effet/EffetChoisirEffet.java index f541251..5367d7f 100644 --- a/src/effet/EffetChoisirEffet.java +++ b/src/effet/EffetChoisirEffet.java @@ -19,9 +19,12 @@ public class EffetChoisirEffet extends Effet{ @Override public void utiliser(Joueur joueur) { - Effet effet = (Effet) joueur.choisir(effets,Effet.class); - - effet.utiliser(joueur); + Effet e = choisirEffet(joueur); + e.utiliser(joueur); + } + + public Effet choisirEffet(Joueur joueur) { + return (Effet) joueur.choisir(effets,Effet.class); } } diff --git a/src/effet/action/ActionMultiple.java b/src/effet/action/ActionMultiple.java index 9b25230..deccd78 100644 --- a/src/effet/action/ActionMultiple.java +++ b/src/effet/action/ActionMultiple.java @@ -33,4 +33,9 @@ public class ActionMultiple extends Action{ action.affecte(j1, j2); } } + + public List getList(){ + return this.actions; + } + } diff --git a/src/effet/action/ActionMultipleChoisir.java b/src/effet/action/ActionMultipleChoisir.java new file mode 100644 index 0000000..a335024 --- /dev/null +++ b/src/effet/action/ActionMultipleChoisir.java @@ -0,0 +1,24 @@ +package effet.action; + +import main.Joueur; + +public class ActionMultipleChoisir extends ActionMultiple{ + + + public ActionMultipleChoisir(Action...actions) { + super(actions); + } + + /** + * Lance l'action d'activer toutes les actions contenues dans ActionMultiple. + * @param j1 Le joueur qui lance l'action + * @param j2 Le joueur qui subit l'action + * @return void + */ + @Override + public void affecte(Joueur j1, Joueur j2) { + + Action a = (Action) j1.choisir(this.getList(), Action.class); + a.affecte(j1, j2); + } +} diff --git a/src/effet/action/ActionVoler.java b/src/effet/action/ActionVoler.java index 09d100a..b8e2e86 100644 --- a/src/effet/action/ActionVoler.java +++ b/src/effet/action/ActionVoler.java @@ -41,10 +41,10 @@ public class ActionVoler extends Action{ j1.voler(j2,equipement); }else { - List equipements = j1.getEquipements(); + List equipements = j2.getEquipements(); // J1 choisit quel équipement voler - CarteEquipement equipement = (CarteEquipement) j1.choisir(equipements,CarteEquipement.class); - j2.voler(j1,equipement); + CarteEquipement equipement = (CarteEquipement) j2.choisir(equipements,CarteEquipement.class); + j1.voler(j2,equipement); } } diff --git a/src/ihm/controller/PlateauController.java b/src/ihm/controller/PlateauController.java index 620700e..f01459f 100644 --- a/src/ihm/controller/PlateauController.java +++ b/src/ihm/controller/PlateauController.java @@ -368,13 +368,22 @@ public class PlateauController implements Initializable { JoueurIHM jihm = getJoueurIHM(j); - Pane pane = (Pane) jihm.getZoneJoueur().getChildren().get(0); + Pane p = (Pane) jihm.getZoneJoueur(); + Pane pane = null; + + if(p.getChildren() != null && p.getChildren().size() > 0) { + + pane = (Pane) p.getChildren().get(0); + } + jihm.setZoneJoueur(root); + Pane pp = pane; Timeline timeline = new Timeline(new KeyFrame( Duration.millis(1000), ae -> { + jihm.resetZoneJoueur(); - jihm.setZoneJoueur(pane); + jihm.setZoneJoueur(pp); GestionnaireJeu.notifyPlateau(); })); timeline.play();