Package fr.tchocolate.qbe

Source Code of fr.tchocolate.qbe.Game

package fr.tchocolate.qbe;

import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.util.vector.Vector3f;

import fr.tchocolate.qbe.entities.Player;
import fr.tchocolate.qbe.world.Map;
import fr.tchocolate.qbe.world.MapGenerator;
import static org.lwjgl.opengl.GL11.*;

public class Game {

  //------------------------------------------------------------------------------------------variables
 
  private boolean running;
  public static Player player;
  private InputManager inputManager;
  private SettingsManager settingsManager;
  private Map map1;
 
  public static final float CUBE_SIZE = 0.05f;
 
  private long lastFPS;
  private long lastFrame;
  private int fps;
  public static int displayFPS;
 
  //_________________________________________________________________________________________init
 
  public void init(){
    settingsManager = new SettingsManager();
    Renderer.setupDisplay();
    Renderer.setupGl();
   
    try {
      Keyboard.create();
    } catch (LWJGLException e) {
      e.printStackTrace();
    }
   
    inputManager = new InputManager(this);
   
    TextureManager.loadTextures();
    MapGenerator.genMap("map1.map");
    map1 = new Map("map1.map");
   
    player = new Player(new Vector3f(1, 6, 1), new Vector3f(0, 0, 0));
    player.setWorld(map1);
  }
 
  //________________________________________________________________________________________run
 
  public void run(){
    running = true;
   
    Mouse.setGrabbed(true);
    Mouse.setCursorPosition(0, 0);
   
    getDelta();
    lastFPS = getTime();
   
    while(running && !Display.isCloseRequested()){
      getDelta();
     
      inputManager.doInput();
      update();
      render();
   
      Display.update();
    }
    destroy();
  }
 
  //______________________________________________________________________________________destroy
 
  private void destroy(){
    TextureManager.releaseTextures();
    settingsManager.saveSettings();
    Display.destroy();
  }
 
  //______________________________________________________________________________________update
 
  private void update(){
    updateFPS();
    player.update();
  }
 
  //______________________________________________________________________________________render
 
  private void render(){
    //clear
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
   
    Renderer.set3d();
   
    player.updateCamera();
    map1.renderMap();
   
    Renderer.set2d();
    Renderer.renderHUD();
  }
 
  //______________________________________________________________________________________misc
 
  private int getDelta() {
    long time = getTime();
    int delta = (int) (time - lastFrame);
    lastFrame = time;
    return delta;
  }
 
  private void updateFPS(){
    if (getTime() - lastFPS > 1000) {
          displayFPS = fps;
          fps = 0;
          lastFPS += 1000;
      }
      fps++;
  }
 
  //----------------------------------------------------------------------------------------getters/setters
 
  public Player getPlayer(){ return player; }
  public boolean isRunning(){ return running; }
  public long getTime() {  return (Sys.getTime() * 1000) / Sys.getTimerResolution(); }
}
TOP

Related Classes of fr.tchocolate.qbe.Game

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.