Package View

Source Code of View.Perso

package View;

import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;

import javax.media.opengl.GL2;
import javax.media.opengl.glu.GLU;

import anim.Scene;
import obj.Element;
import main.Core;

public class Perso extends Element implements Camera{

  // deplacement
  private boolean haut = false;
  private boolean bas = false;
  private boolean gauche = false;
  private boolean droite = false;

  public Perso(float x, float y, float z, float dir){
    this.posX = x;
    this.posY = y;
    this.posZ = z;
    this.dir = dir;
  }

  @Override
  public void gluLookAt(GLU glu){

    glu.gluLookAt(
        posX,
        posY,
        posZ,
        posX + Math.cos( ( 0.5 * Math.PI ) - dir ),
        posY,
        posZ + Math.sin( ( 0.5 * Math.PI ) - dir ),
        Scene.upX,
        Scene.upY,
        Scene.upZ
        );
  }

  @Override
  public boolean actualise(int[][] grid) {
    //deplacement de la camera en fonction du clavier et de la souris

    float varX = 0;
    float varZ = 0;

    //mise a jour de dir en fonction de la souris
    dir -=(float)(getDelta()/700.0);


    //mise a jour de X et Z en fonction du clavier
    if ( haut ) {
      varZ += Math.cos(dir) /10;
      varX += Math.sin(dir) /10;
    }

    if ( bas) {
      varZ -= Math.cos(dir) /10;
      varX -= Math.sin(dir) /10;
    }

    if ( gauche ) {
      varX += Math.cos(dir) /20;
      varZ -= Math.sin(dir) /20;
    }

    if ( droite ) {
      varX -= Math.cos(dir) /20;
      varZ += Math.sin(dir) /20;
    }

    // test de futur collision
    int nextPosType = grid[(int)(posX+varX)][(int)(posZ+varZ)];

    // si c'est pas un mur, on bouge
    if ( nextPosType != 1 ){
      posX += varX;
      posZ += varZ;
    }

    return false;

  }//fin actualise

  @Override
  public void draw(GL2 gl) {
    //obliger a cause de l'heritage

  }

  // deplacement direct
  public void reset(float x, float z) {
    this.posX = x;
    this.posZ = z;   
  }


  // deplacement
  @Override
  public void up(boolean b) {
    haut = b;
  }

  @Override
  public void down(boolean b) {
    bas = b;
  }

  @Override
  public void left(boolean b) {
    gauche = b;
  }

  @Override
  public void right(boolean b) {
    droite = b;
  }

  @Override
  public void top(boolean b) {}

  @Override
  public void bottom(boolean b) {}

  // vue en fonction de la souris
  @Override
  public int getDelta(){      
    Point pointer=MouseInfo.getPointerInfo().getLocation();

    Dimension screen = Core.fen.getSize();

    Robot robot;

    int retval = 0;

    try {

      robot = new Robot();

      int centerx = screen.width / 2;
      int centery = screen.height / 2;

      int xDelta=pointer.x - centerx;

      if(xDelta==0) {
        retval =  0;
      }else{
        robot.mouseMove(centerx, centery);
        retval = xDelta;
      }

    } catch (AWTException e) {
      System.exit(1);
    }

    return retval;
  }

  /*
  public final Point getDelta(){      
    Point pointer=MouseInfo.getPointerInfo().getLocation();
    int xDelta=pointer.x-centerx;
    int yDelta=pointer.y-centery;

    if(xDelta==0 && yDelta==0) {
      return(new Point(0,0));
    }else{
      robot.mouseMove(centerx, centery);
      return(new Point(xDelta, yDelta));
    }     
  }
   */


}
 
TOP

Related Classes of View.Perso

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.