Package ds.moteur

Source Code of ds.moteur.Scene

package ds.moteur;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import ds.ihm.clavier.ToucheClavier;
import ds.ihm.joystick.ConfigurationJoystick;
import ds.ihm.joystick.ValeursJoystick;
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;
import ds.moteur.voiture.VoiturePilotee;

public class Scene {
  private Terrain terrain;
  private VoiturePilotee voitureJoueur;
  private List<Voiture> voitures;
  private ConfigurationJoystick confJoystick;
 
  public Scene(){
    this.voitures = new ArrayList<Voiture>();
  }
 
  public void defaultInit(File fichierTerrain){
    //Terrain terrain = new TerrainDefaut3();
    Terrain terrain = new Terrain("Toto");
    try {
      FileInputStream fis = new FileInputStream(fichierTerrain);
      DataInputStream dis = new DataInputStream(fis);
      terrain.load(dis);
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    VoiturePilotee voiture = new VoiturePilotee("Totinette", 3.7, 1.6);
    Voiture voiture2 = new Voiture("Totinette2", 3.7, 1.6);
    Voiture voiture3 = new Voiture("Totinette3", 3.7, 1.6);
    voiture.init(terrain.getInsertions().get(0));
    voiture2.init(terrain.getInsertions().get(1));
    voiture3.init(terrain.getInsertions().get(2));
    this.setTerrain(terrain);
    this.setVoitureJoueur(voiture);
    this.addVoiture(voiture2);
    this.addVoiture(voiture3);
    try {
      confJoystick = ConfigurationJoystick.readConf();
    } catch (IOException e) {
      System.out.println("Impossible de lire la configuration joystick !");
      e.printStackTrace();
    }
  }
 
  public void defaultInit(){
    Terrain terrain = new TerrainDefaut2();
    VoiturePilotee voiture = new VoiturePilotee("Totinette", 3.7, 1.6);
    Voiture voiture2 = new Voiture("Totinette2", 3.7, 1.6);
    Voiture voiture3 = new Voiture("Totinette3", 3.7, 1.6);
    voiture.init(terrain.getInsertions().get(0));
    voiture2.init(terrain.getInsertions().get(1));
    voiture3.init(terrain.getInsertions().get(2));
    this.setTerrain(terrain);
    this.setVoitureJoueur(voiture);
    this.addVoiture(voiture2);
    this.addVoiture(voiture3);
    try {
      confJoystick = ConfigurationJoystick.readConf();
    } catch (IOException e) {
      System.out.println("Impossible de lire la configuration joystick !");
      e.printStackTrace();
    }
  }
 
  public Terrain getTerrain() {
    return terrain;
  }

  public void setTerrain(Terrain terrain) {
    this.terrain = terrain;
  }

  public VoiturePilotee getVoitureJoueur() {
    return voitureJoueur;
  }

  public void setVoitureJoueur(VoiturePilotee voiture) {
    this.voitureJoueur = voiture;
  }

  public List<Voiture> getVoitures() {
    return voitures;
  }

  public void addVoiture(Voiture voiture) {
    this.voitures.add(voiture);
  }
 
  public void incrementer(long ms, boolean[] touches, ValeursJoystick valeursJoystick){
    for (Voiture voiture : voitures){
      double distance = 1000;
      for (Voiture autreVoiture : voitures){
        if (voiture != autreVoiture){
          distance = Math.min(voiture.getDistance(autreVoiture), distance);
        }
      }
      distance = Math.min(voiture.getDistance(voitureJoueur), distance);
     
      if ((distance < 1.2*voiture.getMecanique().getDistanceArret())&&(distance !=-1)){
        voiture.getMecanique().freiner(ms);
      } else if(voiture.getMecanique().getVitesse()<3){
        voiture.getMecanique().accelerer(ms);
      }
    }
   
    float valeurAcc = 0;
    if(confJoystick.isUtiliserJoystick()){
      valeurAcc = valeursJoystick.getAction(confJoystick.getAccelerer(), true);
    }
    if(touches[ToucheClavier.HAUT.ordinal()]){
      valeurAcc = 1;
    }
    double force = this.voitureJoueur.getForceMoteur();
    if ((touches[ToucheClavier.HAUT.ordinal()])||valeurAcc>0.1){
      this.voitureJoueur.getMecanique().appliquerForceMotrice(force*valeurAcc, ms);
    }

    float valeurFrein = 0;
    if(confJoystick.isUtiliserJoystick()){
      valeurFrein = valeursJoystick.getAction(confJoystick.getFreiner(), true);
    }
    if ((touches[ToucheClavier.BAS.ordinal()])||valeurFrein>0.1){
      this.voitureJoueur.getMecanique().freiner(ms);
      this.voitureJoueur.getMoteur().getForce(this.voitureJoueur.getMecanique().getVitesse());
    }

    float valeurVolant = 0;
    if(confJoystick.isUtiliserJoystick()){
      if (valeursJoystick.getFrontMontant(5)){
        this.voitureJoueur.getMoteur().retrograder();
      }

      if (valeursJoystick.getFrontMontant(4)){
        this.voitureJoueur.getMoteur().passerVitesse();
      }

      valeurVolant = valeursJoystick.getAction(confJoystick.getVolant(), false);
    }
    if(touches[ToucheClavier.DROIT.ordinal()]){
      valeurVolant = 1;
    }
    if(touches[ToucheClavier.GAUCHE.ordinal()]){
      valeurVolant = -1;
    }
    this.voitureJoueur.setRouesAvant(valeurVolant*Math.PI/5);
   
    if ((touches[ToucheClavier.PLUS.ordinal()])||valeurFrein>0.1){
      this.voitureJoueur.getMoteur().passerVitesse();
    }
    if ((touches[ToucheClavier.MOINS.ordinal()])||valeurFrein>0.1){
      this.voitureJoueur.getMoteur().retrograder();
    }

    this.voitureJoueur.incrementer(ms);
    for (Voiture voiture : voitures){
      voiture.incrementer(ms);
    }
   
    this.voitureJoueur.getMecanique().appliquerForceFreinage(ms);
   
    Point p = voitureJoueur.getPositionAvant();
    for(Section s : terrain.getSections()){
      if(s.getFrontiere().isInside(p)){
        double distance = 1000;
        double abscisse = 0;
        CourbeConduite ccRetenue = null;
        for(CourbeConduite cc : s.getCourbesConduites()){
          double distanceCC = cc.getDistance(p)[0];
          double abscisseCC = cc.getDistance(p)[1];
          if(distanceCC<distance){
            distance = distanceCC;
            abscisse = abscisseCC;
            ccRetenue = cc;
          }
          distance = Math.min(cc.getDistance(p)[0], distance);
        }
        //System.out.println(distance);
        if(ccRetenue!=null){
          Point projection = new Point();
          //ccRetenue.recupererPosition(projection, new Angle3D(), abscisse);
          voitureJoueur.setPositionProjetee(ccRetenue, abscisse);
          //voitureJoueur.set
          //ccRetenue.getAbonnes().add(voitureJoueur);
        }
      }
    }
  }
}
TOP

Related Classes of ds.moteur.Scene

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.