package ihm.controller;

import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderStroke;
import javafx.scene.layout.BorderStrokeStyle;
import javafx.scene.layout.BorderWidths;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import main.Joueur;

public class JoueurIHM {

	private int position;
	private Joueur joueur;
	private Pane zoneJoueur;
	private GestionnaireDePions gestionnaireDePions;
	private Color color;
	
	public JoueurIHM(int i, Joueur joueur, Pane zoneJoueur, Color color, GridPane gridPaneVie, GridPane gridPaneLieux) {
		
		this.setPosition(i);
		this.setJoueur(joueur);
		this.zoneJoueur = zoneJoueur;
		this.color = color;
		this.gestionnaireDePions = new GestionnaireDePions(this.color,gridPaneVie, gridPaneLieux);
		
		zoneJoueur.setBorder(new Border(new BorderStroke(color, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, new BorderWidths(5))));
		
		String name = joueur.getNom();
		setLabelJoueur(name);
		initRevealButton();
	}
	
	private void initRevealButton() {
		Button btn = getRevealButton();
		btn.setOnAction(x -> {
			
			this.joueur.reveal();
			ImageView iv = this.getCartePersonnage();
			// TODO		
			//this.joueur.getCartePersonnage().getId();
			//iv.setImage(arg0);
			System.out.println(joueur.getRevele());
			btn.setDisable(true);
		});
		
	}

	public Button getRevealButton() {
		Pane p = (Pane) zoneJoueur.getChildren().get(2);
		return (Button) p.getChildren().get(1);
	}
	
	public ImageView getCartePersonnage() {
		Pane p = (Pane) zoneJoueur.getChildren().get(2);
		return (ImageView) p.getChildren().get(0);
	}
	
	public AnchorPane getZoneJoueur() {
		return (AnchorPane) zoneJoueur.getChildren().get(1);
	}
	
	public void setZoneJoueur(Pane p) {
		AnchorPane ap = (AnchorPane) zoneJoueur.getChildren().get(1);
		ap.getChildren().setAll(p);
		
		//ap.prefWidthProperty().bind(ap.widthProperty());
		//ap.prefHeightProperty().bind(ap.heightProperty());
		
		AnchorPane.setBottomAnchor(p,0.0);
		AnchorPane.setLeftAnchor(p,0.0);
		AnchorPane.setRightAnchor(p,0.0);
		AnchorPane.setTopAnchor(p,0.0);
		
	}
	
	
	
	public Label getLabelJoueur() {
		return (Label) zoneJoueur.getChildren().get(0);
	}
	
	public void setLabelJoueur(String name) {
		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;
	}

	public void setPosition(int position) {
		this.position = position;
	}

	public Joueur getJoueur() {
		return joueur;
	}

	public void setJoueur(Joueur joueur) {
		this.joueur = joueur;
	}
	
	public void deplacerPionVie(int damage) {
		this.gestionnaireDePions.deplacerPionVie(damage);
	}
	
	public void replacerPionLieu() {
		this.gestionnaireDePions.deplacerPionLieux(this.joueur);
	}

	public void choisir() {
	
		
	}

}
