Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package no.kjempehemmelig.gameengine;
- import org.lwjgl.opengl.Display;
- import org.lwjgl.opengl.DisplayMode;
- import org.lwjgl.opengl.GL11;
- import org.lwjgl.LWJGLException;
- import org.lwjgl.Sys;
- import org.lwjgl.util.glu.GLU;
- import org.lwjgl.input.Keyboard;
- import no.kjempehemmelig.gameengine.graphics.*;
- public class GameEngine {
- public boolean running = false;
- private final int WWIDTH = 800;
- private final int WHEIGHT = 600;
- private Sprite sprite1;
- private float building_x, building_y;
- private Building building1;
- public GameEngine() {
- running = true;
- }
- public void onExecute() {
- onInit();
- while(running) {
- onEvent();
- onLoop();
- onRender();
- }
- onCleanup();
- }
- public static void main(String[] args) {
- GameEngine game = new GameEngine();
- game.onExecute();
- }
- private void onInit() {
- try {
- int currentBpp = Display.getDisplayMode().getBitsPerPixel();
- DisplayMode mode = findDisplayMode(WWIDTH, WHEIGHT, currentBpp);
- if(mode == null) {
- Sys.alert("Error", WWIDTH+"x"+WHEIGHT+"x"+currentBpp+"display mode unavaiable");
- return;
- }
- Display.setTitle("Lolengine");
- Display.setDisplayMode(mode);
- Display.setFullscreen(false);
- Display.create();
- GL11.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
- GL11.glClearDepth(1.0f);
- GL11.glEnable(GL11.GL_TEXTURE_2D);
- GL11.glEnable(GL11.GL_CULL_FACE);
- GL11.glEnable(GL11.GL_DEPTH_TEST);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GL11.glDepthFunc(GL11.GL_LEQUAL);
- //GL11.glShadeModel(GL11.GL_SMOOTH);
- GL11.glMatrixMode(GL11.GL_PROJECTION);
- GL11.glLoadIdentity();
- GLU.gluPerspective(45.0f, ((float)WWIDTH / (float)WHEIGHT), 0.1f, 150.0f);
- GL11.glMatrixMode(GL11.GL_MODELVIEW);
- GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
- sprite1 = new Sprite("res/walkman_charset.png", 4, 4);
- sprite1.position(0.0f, 0.0f);
- building1 = new Building();
- building_x = 50.0f;
- building_y = 0.0f;
- }catch (LWJGLException e) {
- e.printStackTrace();
- Sys.alert("Error", "Failed: "+e.getMessage());
- }
- }
- private void onEvent() {
- if(Display.isCloseRequested()) {
- running = false;
- System.exit(0);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
- sprite1.rotate(3.5f);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
- sprite1.rotate(-3.5f);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_UP)) {
- sprite1.startAnim();
- sprite1.move(-2.5f, 2.5f);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
- sprite1.startAnim();
- sprite1.move(4.5f, -4.5f);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_SPACE) && !Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
- sprite1.setZ(1.0f);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_SPACE) && Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
- sprite1.setZ(-1.0f);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
- running = false;
- System.exit(0);
- }
- if(!Keyboard.isKeyDown(Keyboard.KEY_UP) && !Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
- sprite1.stopAnim();
- }
- return;
- }
- private void onLoop() {
- Display.update();
- Display.sync(60);
- sprite1.onLoop();
- }
- private void onRender() {
- GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
- sprite1.onRender();
- //building1.onRender(building_x, building_y);
- }
- private void onCleanup() {
- GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
- Display.destroy();
- }
- private DisplayMode findDisplayMode(int width, int height, int bpp) throws LWJGLException {
- DisplayMode[] modes = Display.getAvailableDisplayModes();
- DisplayMode mode = null;
- for(int i = 0; i < modes.length; i++) {
- if((modes[i].getBitsPerPixel() == bpp) || (mode == null)) {
- if((modes[i].getWidth() == width) && (modes[i].getHeight() == height)) {
- mode = modes[i];
- }
- }
- }
- return mode;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement