package ds.ihm.gui;
import javax.media.j3d.Canvas3D;
import javax.swing.JFrame;
import ds.ihm.Ihm;
import ds.ihm.clavier.EcouteurClavier;
import ds.ihm.gui.ctrl.PanelVisuRoute;
import ds.ihm.gui.launch.PanelChoix;
import ds.ihm.gui.render.PanelConduite;
import ds.ihm.gui.render.j3d.InterfaceJ3D;
import ds.ihm.gui.render.j3d.Vue3D;
import ds.moteur.Scene;
import ds.moteur.Terrain;
import ds.moteur.geometrie.Angle3D;
import ds.moteur.geometrie.Point;
import ds.moteur.route.Section;
import ds.moteur.route.cc.CourbeConduite;
import ds.moteur.voiture.Voiture;
public class Gay implements InterfaceGraphique {
private Ihm ihm;
private JFrame fenetreCtrl;
private PanelVisuRoute visuRoute;
private PanelConduite render;
private InterfaceJ3D vue3D;
private JFrame fentreLancement;
private PanelChoix lancement;
public Gay(Ihm ihm){
this.ihm = ihm;
}
public void afficherEcranDemarrage(boolean joystickActif){
this.lancement = new PanelChoix(this.ihm);
this.lancement.init(joystickActif);
this.fentreLancement = new JFrame("Driver Simulator Demarrage");
this.fentreLancement.add(lancement);
this.fentreLancement.setLocation(200, 200);
this.fentreLancement.setVisible(true);
this.fentreLancement.pack();
this.fentreLancement.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void detruireEcranDemarrage(){
this.lancement = null;
this.fentreLancement.dispose();
}
public void init(EcouteurClavier clavier){
this.render = new PanelConduite();
Canvas3D c3d = this.render.init();
this.vue3D = new Vue3D(c3d);
JFrame fenetreRender = new JFrame("Render");
fenetreRender.add(render);
fenetreRender.setVisible(true);
fenetreRender.pack();
fenetreRender.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetreRender.setFocusable(true);
fenetreRender.setResizable(false);
fenetreRender.requestFocus();
fenetreRender.addKeyListener(clavier);
this.fenetreCtrl = new JFrame("Driver Simulator");
this.visuRoute = new PanelVisuRoute();
this.fenetreCtrl.add(visuRoute);
this.fenetreCtrl.setVisible(true);
this.fenetreCtrl.pack();
this.fenetreCtrl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.fenetreCtrl.setLocation(800, 0);
}
public void chargerTerrain(Terrain terrain){
for (Section section : terrain.getSections()){
vue3D.dessinerSurface(section.getFrontiere().getSommets());
for (CourbeConduite cc : section.getCourbesConduites()){
vue3D.dessinerLigne(cc.getPositionsIntermediaires());
}
}
vue3D.creerVoiture1(1.7f, 1.7f, 3f);
vue3D.creerVoiture2(1.7f, 1.7f, 3f);
//vue3D.setHeure(12);
}
public void afficherScene(Scene scene) {
visuRoute.setScene(scene);
visuRoute.repaint();
Point point = scene.getVoitureJoueur().getPositionAvant();
vue3D.deplacerCamera((float)point.y, (float)point.z + 1.0f, (float)point.x, (float)(scene.getVoitureJoueur().getAngle().theta + Math.PI), 0);
Voiture voiture = scene.getVoitures().get(0);
Point pVoiture = voiture.getPositionAvant();
Angle3D angleVoiture = voiture.getAngle();
vue3D.deplacerVoiture1((float)pVoiture.y, (float)pVoiture.z, (float)pVoiture.x, (float)angleVoiture.theta, 0);
Voiture voiture2 = scene.getVoitures().get(1);
Point pVoiture2 = voiture2.getPositionAvant();
Angle3D angleVoiture2 = voiture2.getAngle();
vue3D.deplacerVoiture2((float)pVoiture2.y, (float)pVoiture2.z, (float)pVoiture2.x, (float)angleVoiture2.theta, 0);
render.getTableauBord().afficherVoiture(scene.getVoitureJoueur());
}
}