package depart.frontal.vues;

import ca.ntro.app.Ntro;
import ca.ntro.app.frontend.ViewFx;
import depart.commun.enums.ActionJoueur;
import depart.commun.monde2d.MondeDepart2d;
import depart.frontal.controles.CanvasB;
import depart.frontal.evenements.EvtA;
import depart.frontal.evenements.EvtActionJoueur;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;

public class VueB extends ViewFx {

	@FXML
	private Button boutonA;

	@FXML
	private CanvasB canvas;

	@Override
	public void initialize() {
		Ntro.assertNotNull(boutonA);
		Ntro.assertNotNull(canvas);
		
		boutonA.setFocusTraversable(false);
		
		boutonA.setOnAction(evtFx -> {

			Ntro.newEvent(EvtA.class).trigger();
			
		});
		
		rootNode().setFocusTraversable(true);
		rootNode().requestFocus();
		rootNode().addEventFilter(KeyEvent.KEY_PRESSED, evtFx -> {
			
			if(evtFx.getCode().equals(KeyCode.A)
					|| evtFx.getCode().equals(KeyCode.LEFT)) {
				
				Ntro.newEvent(EvtActionJoueur.class)
				    .setActionJoueur(ActionJoueur.GAUCHE)
				    .trigger();

				
			} else if(evtFx.getCode().equals(KeyCode.D) 
					|| evtFx.getCode().equals(KeyCode.RIGHT)) {

				Ntro.newEvent(EvtActionJoueur.class)
				    .setActionJoueur(ActionJoueur.DROITE)
				    .trigger();
				
			} else if(evtFx.getCode().equals(KeyCode.SPACE)
					|| evtFx.getCode().equals(KeyCode.W)
					|| evtFx.getCode().equals(KeyCode.UP)) {

				Ntro.newEvent(EvtActionJoueur.class)
				    .setActionJoueur(ActionJoueur.SAUTER)
				    .trigger();
				
			}
		});

		rootNode().addEventFilter(KeyEvent.KEY_RELEASED, evtFx -> {

			Ntro.newEvent(EvtActionJoueur.class)
				.setActionJoueur(ActionJoueur.ARRETER)
				.trigger();

		});
	}

	public void methodeA(MondeDepart2d monde2d) {
		monde2d.drawOn(canvas);
	}

}
