@Override
  public void update(double delta) {
    player.update(delta);
    level.update(delta, blocks);

    if (level.isGameOver()) {
      gameOverTimer.tick(delta);
      if (gameOverTimer.isEventReady()) {
        level.reset();
        blocks.reset();
        getStateMachine().setState((byte) 0);
        SCORE = 0;
      }
    }

    if (level.isComplete()) {
      completeTimer.tick(delta);
      if (completeTimer.isEventReady()) {
        level.reset();
      }
    }
  }