package fr.wolf.engine;
import fr.wolf.game.Wolf;
import fr.wolf.game.utils.Time;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
public class Main
{
public static int WIDTH = 800;
public static int HEIGHT = 600;
public static void main(String[] args)
{
initDisplay();
initGL();
initGame();
gameLoop();
cleanUp();
}
private static void initGame()
{
Wolf.wolf = new Wolf();
Wolf.getWolf().init();
}
public static void cleanUp()
{
Display.destroy();
Keyboard.destroy();
}
private static void gameLoop()
{
Time.init();
int frames = 0;
long lastTime = System.nanoTime();
long totalTime = 0;
while(!Display.isCloseRequested())
{
long now = System.nanoTime();
long passed = now - lastTime;
lastTime = now;
totalTime += passed;
if(totalTime >= 1000000000)
{
// System.out.println(frames);
totalTime = 0;
frames = 0;
}
Time.update();
getInput();
update();
render();
frames++;
}
}
private static void render()
{
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
GL11.glLoadIdentity();
Wolf.wolf.render();
Display.update();
Display.sync(60);
}
private static void update()
{
Wolf.wolf.update();
}
private static void getInput()
{
Wolf.wolf.getInput();
}
private static void initDisplay()
{
try
{
Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
Display.create();
Keyboard.create();
Display.setVSyncEnabled(true);
Display.setTitle("Wolf");
}
catch(LWJGLException e)
{
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, e);
}
}
private static void initGL()
{
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, Display.getWidth(), 0, Display.getHeight(), -1, 1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glClearColor(0, 0, 0, 0);
}
}