package tk.captainsplexx.Game;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.util.vector.Vector2f;
import org.lwjgl.util.vector.Vector3f;
import tk.captainsplexx.Entity.Entity;
import tk.captainsplexx.Player.PlayerEntity;
import tk.captainsplexx.Player.PlayerHandler;
public class InputHandler {
public float speedMultipShift = 1f;
public void listen() {
Entity en = Core.getGame().getEntityHandler().getFocussedEntity();
speedMultipShift += (Mouse.getDWheel()/50);
if (speedMultipShift<=0){
speedMultipShift = 1;
}
if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT))
{
speedMultipShift = 0.1f;
}
PlayerHandler pl = Core.getGame().getPlayerHandler();
PlayerEntity pe = pl.getPlayerEntity();
if (Keyboard.isKeyDown(Keyboard.KEY_W))//move forward
{
pe.velZ -= 0.1f*speedMultipShift;
}
if (Keyboard.isKeyDown(Keyboard.KEY_S))//move backwards
{
pe.velZ += 0.1f*speedMultipShift;
}
if (Keyboard.isKeyDown(Keyboard.KEY_A))//strafe left
{
pe.velX -= 0.1f*speedMultipShift;
}
if (Keyboard.isKeyDown(Keyboard.KEY_D))//strafe right
{
pe.velX += 0.1f*speedMultipShift;
}
if (Keyboard.isKeyDown(Keyboard.KEY_SPACE))//move up
{
pe.velY += pe.jumpStrength*speedMultipShift;
}
if (Keyboard.isKeyDown(Keyboard.KEY_LCONTROL))//move down
{
pe.velY -= pe.jumpStrength*speedMultipShift;
}
if (Mouse.isButtonDown(2)){//middle click
System.err.println("Middle mouse click TODO!");
}
if (Keyboard.isKeyDown(Keyboard.KEY_ADD))
{
Core.getRender().updateProjectionMatrix(Core.FOV+1, Core.DISPLAY_WIDTH, Core.DISPLAY_HEIGHT, Core.zNear, Core.zFar);
}
if (Keyboard.isKeyDown(Keyboard.KEY_SUBTRACT))
{
Core.getRender().updateProjectionMatrix(Core.FOV-1, Core.DISPLAY_WIDTH, Core.DISPLAY_HEIGHT, Core.zNear, Core.zFar);
}
if (Keyboard.isKeyDown(Keyboard.KEY_NUMPAD0))
{
Core.getGame().getEntityHandler().clear();
}
if (Keyboard.isKeyDown(Keyboard.KEY_NUMPAD1))
{
System.err.println("Reloading Terrain DEBUG!");
Core.getGame().getTerrainHandler().getTerrainList().clear();
Core.getGame().getTerrainHandler().generate(0, 0);
Core.getGame().getTerrainHandler().distance=10;
}
if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))//KEY_ESCAPE down
{
Mouse.setGrabbed(false);
Core.DISPLAY_RATE=24;
}
if (Mouse.isButtonDown(0)){
Core.DISPLAY_RATE=60;
Mouse.setGrabbed(true);
}
if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)&&
!Keyboard.isKeyDown(Keyboard.KEY_R)&&
!Keyboard.isKeyDown(Keyboard.KEY_T))//Object Left
{
if (en!=null){
Vector2f relCoords = pe.moveLeft(speedMultipShift);
en.changePosition(new Vector3f(relCoords.x, 0, -relCoords.y));
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)&&
!Keyboard.isKeyDown(Keyboard.KEY_R)&&
!Keyboard.isKeyDown(Keyboard.KEY_T))//Object Right
{
if (en!=null){
Vector2f relCoords = pe.moveRight(speedMultipShift);
en.changePosition(new Vector3f(relCoords.x, 0, -relCoords.y));
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_UP)&&
!Keyboard.isKeyDown(Keyboard.KEY_R)&&
!Keyboard.isKeyDown(Keyboard.KEY_T))//Object Forward
{
if (en!=null){
Vector2f relCoords = pe.moveForward(speedMultipShift);
en.changePosition(new Vector3f(relCoords.x, 0, -relCoords.y));
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)&&
!Keyboard.isKeyDown(Keyboard.KEY_R)&&
!Keyboard.isKeyDown(Keyboard.KEY_T))//Object Backwards
{
if (en!=null){
Vector2f relCoords = pe.moveBackwards(speedMultipShift);
en.changePosition(new Vector3f(-relCoords.x, 0, relCoords.y));
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_T)&&Keyboard.isKeyDown(Keyboard.KEY_UP))//Object Up
{
if (en!=null){
Vector3f rel = new Vector3f(0f, speedMultipShift, 0f);
pe.changePosition(rel);
en.changePosition(rel);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_T)&&Keyboard.isKeyDown(Keyboard.KEY_DOWN))//Object Down
{
if (en!=null){
Vector3f rel = new Vector3f(0f, -speedMultipShift, 0f);
pe.changePosition(rel);
en.changePosition(rel);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_R)&&Keyboard.isKeyDown(Keyboard.KEY_DOWN))//Rotate Neg X
{
if (en!=null){
en.changeRotation(-speedMultipShift*0.01f, 0f, 0f);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_R)&&Keyboard.isKeyDown(Keyboard.KEY_UP))//Rotate Pos X
{
if (en!=null){
en.changeRotation(speedMultipShift*0.01f, 0f, 0f);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_R)&&Keyboard.isKeyDown(Keyboard.KEY_LEFT))//Rotate Neg Z
{
if (en!=null){
en.changeRotation(0f, 0f, -speedMultipShift*0.01f);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_R)&&Keyboard.isKeyDown(Keyboard.KEY_RIGHT))//Rotate Pos Z
{
if (en!=null){
en.changeRotation(0f, 0f, speedMultipShift*0.01f);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_T)&&Keyboard.isKeyDown(Keyboard.KEY_LEFT))//Scale Neg XYZ
{
if (en!=null){
en.changeScaling(-speedMultipShift*0.01f, -speedMultipShift*0.01f, -speedMultipShift*0.01f);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_T)&&Keyboard.isKeyDown(Keyboard.KEY_RIGHT))//Scale Pos XYZ
{
if (en!=null){
en.changeScaling(speedMultipShift*0.01f, speedMultipShift*0.01f, speedMultipShift*0.01f);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_NUMPAD5))//Reset Object
{
if (en!=null){
en.setScaling(new Vector3f(1f, 1f, 1f));
en.setRotation(new Vector3f());
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_Q))
{
if (en!=null){
en.changeRotation(0f, -speedMultipShift*0.01f, 0f);
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_E))
{
if (en!=null){
en.changeRotation(0f, speedMultipShift*0.01f, 0f);
}
}
}
}