1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
public class Vehicle { private String Name = "Panzer"; private org.lwjgl.opengl.GL gl; private float posX, posY, posZ; private Player player; private int texID, FPS; private Chrono chrono; private double currentSpeed, maxSpeed, slowdownForward, slowdownBackwards, accForward, accBackwards, angle, angleSpeed; public Vehicle(int texID) { this.gl = Schlug.gl; this.texID = texID; chrono = new Chrono(); player = null; maxSpeed = 1; currentSpeed = 0; slowdownForward = 0.1; slowdownBackwards = 0.1; accForward = 0.01; accBackwards = 0.001; angle = 0; angleSpeed = 2; } public void draw() { posX += currentSpeed * java.lang.Math.cos(java.lang.Math.toRadians(angle)); posY += currentSpeed * java.lang.Math.sin(java.lang.Math.toRadians(angle)); if(player != null) player.setPos(posX, posY, posZ); if(currentSpeed > 0) currentSpeed -= java.lang.Math.abs(currentSpeed) * slowdownForward * chrono.getFrameTime(); else if(currentSpeed < 0) currentSpeed += java.lang.Math.abs(currentSpeed) * slowdownBackwards * chrono.getFrameTime(); gl.loadIdentity();
if(player != null) gl.translatef(0.0f, 0.0f, posZ); else gl.translatef(posX, posY, posZ); gl.rotatef((float) angle, 0.0f, 0.0f, 1.0f); gl.bindTexture(org.lwjgl.opengl.GL.TEXTURE_2D, texID); gl.begin(org.lwjgl.opengl.GL.QUADS); gl.texCoord2f(0.0f, 1.0f); gl.vertex3f(-1.0f, -1.0f, 0.0f); gl.texCoord2f(1.0f, 1.0f); gl.vertex3f(1.0f, -1.0f, 0.0f); gl.texCoord2f(1.0f, 0.0f); gl.vertex3f(1.0f, 1.0f, 0.0f); gl.texCoord2f(0.0f, 0.0f); gl.vertex3f(-1.0f, 1.0f, 0.0f); gl.end(); } public void setPos(float posX, float posY, float posZ) { this.posX = posX; this.posY = posY; this.posZ = posZ; } public void setAngle (double angle) { this.angle = angle%360; } public double getAngle() { return angle; } public double getAngleSpeed() { return angleSpeed * chrono.getFrameTime(); } public void accelerate(boolean forward) { if(java.lang.Math.abs(currentSpeed) < maxSpeed) { if(forward) currentSpeed += accForward * chrono.getFrameTime(); else currentSpeed -= accBackwards * chrono.getFrameTime(); } } public void setPlayer(Player player) { this.player = player; } public float getX() { return posX; } public float getY() { return posY; } }
|