We decided to go with the AnimationTimer. It runs smooth at fixed 60fps and does what we want.
It should be possible for a game loop to
- start
- stop
- pause
- resume
The AnimationTimer doesn't have a pause flag, so we'll add a simple boolean to indicate the state.
Here's what we need:
private AnimationTimer gameLoop;
private boolean gamePaused = false;
...
private void startGame() {
gameLoop.start();
}
private void pauseGame() {
gamePaused = true;
gameLoop.stop();
}
private void resumeGame() {
gamePaused = false;
gameLoop.start();
}
private void stopGame() {
// TODO: remove event handlers (player, etc)
}
private void createGameLoop() {
gameLoop = new AnimationTimer() {
@Override
public void handle(long l) {
// player AI (input)
// sprite AI
// add sprites (clouds, enemies, bullets, missiles)
// move sprites internally
// move sprites in the UI
// check if sprites can be removed (eg collsion, off-screen)
// update debug information
}
};
}
That's about it. We'll add other parts like sprite collision once the basic engine is complete.
No comments:
Post a Comment