Advertisement
Guest User

YC_GameEngine

a guest
Oct 1st, 2010
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.71 KB | None | 0 0
  1. package no.kjempehemmelig.gameengine;
  2.  
  3. import org.lwjgl.opengl.Display;
  4. import org.lwjgl.opengl.DisplayMode;
  5. import org.lwjgl.opengl.GL11;
  6. import org.lwjgl.LWJGLException;
  7. import org.lwjgl.Sys;
  8. import org.lwjgl.util.glu.GLU;
  9. import org.lwjgl.input.Keyboard;
  10.  
  11. import no.kjempehemmelig.gameengine.graphics.*;
  12.  
  13. public class GameEngine {
  14.  
  15. public boolean running = false;
  16.  
  17.  
  18. private final int WWIDTH = 800;
  19. private final int WHEIGHT = 600;
  20.  
  21. private Sprite sprite1;
  22.  
  23. private float building_x, building_y;
  24.  
  25. private Building building1;
  26.  
  27.     public GameEngine() {
  28.         running = true;
  29.     }
  30.  
  31.     public void onExecute() {
  32.         onInit();
  33.         while(running) {
  34.             onEvent();
  35.             onLoop();
  36.             onRender();
  37.         }
  38.         onCleanup();
  39.     }
  40.  
  41.     public static void main(String[] args) {
  42.         GameEngine game = new GameEngine();
  43.         game.onExecute();
  44.     }
  45.  
  46.  
  47.  
  48.     private void onInit() {
  49.         try {
  50.             int currentBpp = Display.getDisplayMode().getBitsPerPixel();
  51.             DisplayMode mode = findDisplayMode(WWIDTH, WHEIGHT, currentBpp);
  52.  
  53.             if(mode == null) {
  54.                 Sys.alert("Error", WWIDTH+"x"+WHEIGHT+"x"+currentBpp+"display mode unavaiable");
  55.                 return;
  56.             }
  57.  
  58.             Display.setTitle("Lolengine");
  59.             Display.setDisplayMode(mode);
  60.             Display.setFullscreen(false);
  61.             Display.create();
  62.  
  63.             GL11.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
  64.             GL11.glClearDepth(1.0f);
  65.            
  66.             GL11.glEnable(GL11.GL_TEXTURE_2D);
  67.             GL11.glEnable(GL11.GL_CULL_FACE);
  68.             GL11.glEnable(GL11.GL_DEPTH_TEST);
  69.             GL11.glEnable(GL11.GL_BLEND);
  70.             GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  71.             GL11.glDepthFunc(GL11.GL_LEQUAL);
  72.             //GL11.glShadeModel(GL11.GL_SMOOTH);
  73.  
  74.             GL11.glMatrixMode(GL11.GL_PROJECTION);
  75.             GL11.glLoadIdentity();
  76.             GLU.gluPerspective(45.0f, ((float)WWIDTH / (float)WHEIGHT), 0.1f, 150.0f);
  77.             GL11.glMatrixMode(GL11.GL_MODELVIEW);
  78.             GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
  79.  
  80.  
  81.             sprite1 = new Sprite("res/walkman_charset.png", 4, 4);
  82.             sprite1.position(0.0f, 0.0f);
  83.  
  84.             building1 = new Building();
  85.             building_x = 50.0f;
  86.             building_y = 0.0f;
  87.            
  88.         }catch (LWJGLException e) {
  89.             e.printStackTrace();
  90.             Sys.alert("Error", "Failed: "+e.getMessage());
  91.         }
  92.     }
  93.     private void onEvent() {
  94.         if(Display.isCloseRequested()) {
  95.             running = false;
  96.             System.exit(0);
  97.         }
  98.  
  99.         if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
  100.             sprite1.rotate(3.5f);
  101.         }
  102.         if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
  103.             sprite1.rotate(-3.5f);
  104.         }
  105.         if(Keyboard.isKeyDown(Keyboard.KEY_UP)) {
  106.             sprite1.startAnim();
  107.             sprite1.move(-2.5f, 2.5f);
  108.         }
  109.         if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
  110.             sprite1.startAnim();
  111.             sprite1.move(4.5f, -4.5f);
  112.         }
  113.         if(Keyboard.isKeyDown(Keyboard.KEY_SPACE) && !Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
  114.             sprite1.setZ(1.0f);
  115.         }
  116.         if(Keyboard.isKeyDown(Keyboard.KEY_SPACE) && Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
  117.             sprite1.setZ(-1.0f);
  118.         }
  119.         if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
  120.             running = false;
  121.             System.exit(0);
  122.         }
  123.  
  124.         if(!Keyboard.isKeyDown(Keyboard.KEY_UP) && !Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
  125.             sprite1.stopAnim();
  126.         }
  127.  
  128.         return;
  129.     }
  130.     private void onLoop() {
  131.         Display.update();
  132.  
  133.         Display.sync(60);
  134.  
  135.         sprite1.onLoop();
  136.     }
  137.     private void onRender() {
  138.         GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
  139.  
  140.         sprite1.onRender();
  141.         //building1.onRender(building_x, building_y);
  142.     }
  143.     private void onCleanup() {
  144.         GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
  145.         Display.destroy();
  146.     }
  147.  
  148.     private DisplayMode findDisplayMode(int width, int height, int bpp) throws LWJGLException {
  149.         DisplayMode[] modes = Display.getAvailableDisplayModes();
  150.         DisplayMode mode = null;
  151.  
  152.         for(int i = 0; i < modes.length; i++) {
  153.             if((modes[i].getBitsPerPixel() == bpp) || (mode == null)) {
  154.                 if((modes[i].getWidth() == width) && (modes[i].getHeight() == height)) {
  155.                     mode = modes[i];
  156.                 }
  157.             }
  158.         }
  159.  
  160.         return mode;
  161.     }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement