package br.com.etyllica.core.loop; import br.com.etyllica.core.GameCore; public class SimpleGameLoop extends GameLoopImpl { private static final int UPDATE_DELAY = 1000/60; public SimpleGameLoop(GameCore core) { super(core); } @Override public boolean loop() throws Exception { long previous = System.currentTimeMillis(); long countTime = previous; int fps = 0; double lag = 0.0; while (core.isRunning()) { long now = System.currentTimeMillis(); long elapsed = now - previous; long delta = (long) (elapsed/UPDATE_DELAY); previous = now; lag += elapsed; while (lag >= UPDATE_DELAY) { core.update(delta); lag -= UPDATE_DELAY; } core.render(); fps++; if(now - countTime >= 1000) { countTime += 1000; core.setFps(fps); fps = 0; } } return true; } }