From b0b506cfb098b2944e6ff71411bb91168d16f3d9 Mon Sep 17 00:00:00 2001 From: Paul Gross Date: Mon, 11 May 2020 18:00:14 +0200 Subject: [PATCH] Take damages ihm --- src/carte/CartePiochable.java | 1 + src/ihm/ImageViewEquipement.java | 26 ++++ src/ihm/controller/AlterationVieZJ.java | 26 ++++ src/ihm/controller/JoueurIHM.java | 43 ++++++- src/ihm/controller/PlateauController.java | 66 +++++++--- src/ihm/ressources/AlterationVieZJ.fxml | 15 +++ src/ihm/ressources/PlateauTest2.fxml | 148 ++++++++++++++++------ src/main/GestionnaireEquipements.java | 5 + src/main/GestionnaireJeu.java | 29 ++++- src/main/Joueur.java | 18 +++ src/main/Plateau.java | 16 ++- 11 files changed, 326 insertions(+), 67 deletions(-) create mode 100644 src/ihm/ImageViewEquipement.java create mode 100644 src/ihm/controller/AlterationVieZJ.java create mode 100644 src/ihm/ressources/AlterationVieZJ.fxml diff --git a/src/carte/CartePiochable.java b/src/carte/CartePiochable.java index b5ff603..dbb3ce7 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) { + System.out.println("CartePiochable "+this + " Condition : "+this.getCondition()+" Effet : "+this.getEffet()+" Action : "+this.getEffet().getAction()); super.utiliser(j); } diff --git a/src/ihm/ImageViewEquipement.java b/src/ihm/ImageViewEquipement.java new file mode 100644 index 0000000..d518eb5 --- /dev/null +++ b/src/ihm/ImageViewEquipement.java @@ -0,0 +1,26 @@ +package ihm; + +import carte.CarteEquipement; +import javafx.scene.image.ImageView; + +public class ImageViewEquipement extends ImageView{ + + private CarteEquipement ce; + + public ImageViewEquipement(CarteEquipement ce) { + this.ce = ce; + } + + public CarteEquipement getCp() { + return ce; + } + + public void setCp(CarteEquipement ce) { + this.ce = ce; + } + + public boolean contains(CarteEquipement ce) { + return this.ce == ce; + } + +} diff --git a/src/ihm/controller/AlterationVieZJ.java b/src/ihm/controller/AlterationVieZJ.java new file mode 100644 index 0000000..613eedf --- /dev/null +++ b/src/ihm/controller/AlterationVieZJ.java @@ -0,0 +1,26 @@ +package ihm.controller; + +import java.net.URL; +import java.util.ResourceBundle; + +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Label; + +public class AlterationVieZJ implements Initializable { + + @FXML private Label label; + + @Override + public void initialize(URL arg0, ResourceBundle arg1) { + + } + + public void changeLabel(int valeur) { + if(valeur > 0 ) { + this.label.setText("Vous êtes soigné de "+valeur+"PV"); + }else { + this.label.setText("Vous êtes blessé de "+valeur+"PV"); + } + } +} diff --git a/src/ihm/controller/JoueurIHM.java b/src/ihm/controller/JoueurIHM.java index 6b9d53e..89a744c 100644 --- a/src/ihm/controller/JoueurIHM.java +++ b/src/ihm/controller/JoueurIHM.java @@ -1,7 +1,11 @@ package ihm.controller; +import carte.CarteEquipement; +import ihm.ImageViewEquipement; +import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.Label; +import javafx.scene.control.ScrollPane; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; @@ -11,6 +15,7 @@ import javafx.scene.layout.BorderStrokeStyle; import javafx.scene.layout.BorderWidths; import javafx.scene.layout.CornerRadii; import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import main.Joueur; @@ -71,6 +76,7 @@ public class JoueurIHM { } public void setZoneJoueur(Pane p) { + AnchorPane ap = (AnchorPane) zoneJoueur.getChildren().get(1); ap.getChildren().setAll(p); @@ -94,11 +100,6 @@ public class JoueurIHM { Label label = getLabelJoueur(); label.setText(name); } - - public Label getPaneEquipement() { - Pane p = (Pane) zoneJoueur.getChildren().get(2); - return (Label) p.getChildren().get(1); - } public int getPosition() { return position; @@ -129,4 +130,36 @@ public class JoueurIHM { } + public void resetZoneJoueur() { + this.getZoneJoueur().getChildren().setAll(); + } + + public HBox getPaneEquipement(){ + ScrollPane sp = (ScrollPane) this.zoneJoueur.getChildren().get(3); + HBox p = (HBox) sp.getContent(); + return p; + } + + public void ajouterEquipement(CarteEquipement e) { + HBox hb = getPaneEquipement(); + ImageViewEquipement ive = new ImageViewEquipement(e); + hb.getChildren().add(new ImageViewEquipement(e)); + ive.fitHeightProperty().bind(hb.heightProperty()); + + } + + public void retirerEquipement(CarteEquipement e) { + HBox hb = getPaneEquipement(); + for(Node n : hb.getChildren()) { + if(n instanceof ImageViewEquipement) { + ImageViewEquipement ive = (ImageViewEquipement) n; + if(ive.contains(e)) { + hb.getChildren().remove(ive); + } + } + } + + + } + } diff --git a/src/ihm/controller/PlateauController.java b/src/ihm/controller/PlateauController.java index 931be2b..8127b98 100644 --- a/src/ihm/controller/PlateauController.java +++ b/src/ihm/controller/PlateauController.java @@ -18,6 +18,8 @@ import carte.CarteLieu; import database.RessourceLoader; import ihm.EffetSonore; import ihm.PopUp; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; @@ -28,22 +30,16 @@ import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.Background; -import javafx.scene.layout.BackgroundImage; -import javafx.scene.layout.BackgroundPosition; -import javafx.scene.layout.BackgroundRepeat; -import javafx.scene.layout.BackgroundSize; -import javafx.scene.layout.FlowPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; +import javafx.util.Duration; import main.Contexte; import main.GestionnaireJeu; import main.Joueur; -import personnage.CartePersonnage; public class PlateauController implements Initializable { @@ -357,6 +353,26 @@ public class PlateauController implements Initializable { jihm.setZoneJoueur(root); } + public void afficherAlterationVie(Joueur j, int valeur) throws IOException, InterruptedException { + + final URL fxmlURL = getClass().getResource("/ihm/ressources/AlterationVieZJ.fxml"); + final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); + final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); + Pane root = (Pane)fxmlLoader.load(); + AlterationVieZJ avzj = fxmlLoader.getController(); + avzj.changeLabel(valeur); + JoueurIHM jihm = getJoueurIHM(j); + jihm.setZoneJoueur(root); + + Timeline timeline = new Timeline(new KeyFrame( + Duration.millis(2500), + ae -> { + jihm.resetZoneJoueur(); + GestionnaireJeu.notifyPlateau(); + })); + timeline.play(); + } + public void afficherLieu(Joueur j) throws IOException { final URL fxmlURL = getClass().getResource("/ihm/ressources/LieuZJ.fxml"); @@ -367,20 +383,16 @@ public class PlateauController implements Initializable { lzj.setImageView(this.getImageCarte(j.getCarteLieu())); JoueurIHM jihm = getJoueurIHM(j); jihm.setZoneJoueur(root); - - } public void afficherChoisirJoueur(Joueur j, List joueurs, Contexte contexte) throws IOException { - final URL fxmlURL = getClass().getResource("/ihm/ressources/choixJoueurAttq.fxml"); - - final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); - final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); - Pane root = (Pane)fxmlLoader.load(); - this.cj = fxmlLoader.getController(); - - JoueurIHM jihm = getJoueurIHM(j); - jihm.setZoneJoueur(root); - } + final URL fxmlURL = getClass().getResource("/ihm/ressources/choixJoueurAttq.fxml"); + final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); + final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); + Pane root = (Pane)fxmlLoader.load(); + this.cj = fxmlLoader.getController(); + JoueurIHM jihm = getJoueurIHM(j); + jihm.setZoneJoueur(root); + } public CarteEquipement getChoixEquipementVole(Joueur joueur) { JoueurIHM jihm = getJoueurIHM(joueur); @@ -441,5 +453,21 @@ public class PlateauController implements Initializable { } + public void ajouterEquipement(Joueur j, CarteEquipement e) { + JoueurIHM jihm = getJoueurIHM(j); + jihm.ajouterEquipement(e); + } + + + public void retirerEquipement(Joueur j, CarteEquipement e) { + JoueurIHM jihm = getJoueurIHM(j); + jihm.retirerEquipement(e); + + } + + + + + } \ No newline at end of file diff --git a/src/ihm/ressources/AlterationVieZJ.fxml b/src/ihm/ressources/AlterationVieZJ.fxml new file mode 100644 index 0000000..4092a21 --- /dev/null +++ b/src/ihm/ressources/AlterationVieZJ.fxml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/src/ihm/ressources/PlateauTest2.fxml b/src/ihm/ressources/PlateauTest2.fxml index 52dbeb4..25bc1c9 100644 --- a/src/ihm/ressources/PlateauTest2.fxml +++ b/src/ihm/ressources/PlateauTest2.fxml @@ -5,6 +5,7 @@ + @@ -63,11 +64,18 @@