QuizLogic.java
package io.github.some_example_name;
/**
* Pure logic for quiz behaviour.
*/
public class QuizLogic {
public enum AnswerResult {
CORRECT,
INCORRECT,
NONE
}
private boolean answered;
private boolean correct;
private boolean eventTriggered;
private float waitTime;
public QuizLogic(float waitTimeSeconds) {
this.answered = false;
this.correct = false;
this.eventTriggered = false;
this.waitTime = waitTimeSeconds;
}
/**
* Processes an answer.
* @param isCorrect whether the chosen answer is correct
* @return result of the answer
*/
public AnswerResult answer(boolean isCorrect) {
if (answered) {
return AnswerResult.NONE;
}
answered = true;
correct = isCorrect;
return correct ? AnswerResult.CORRECT : AnswerResult.INCORRECT;
}
/**
* Updates timer after answering.
* @param delta time step
* @return true if quiz should exit
*/
public boolean update(float delta) {
if (!answered) return false;
waitTime -= delta;
return waitTime <= 0;
}
public boolean isAnswered() {
return answered;
}
public boolean isCorrect() {
return correct;
}
public boolean isEventTriggered() {
return eventTriggered;
}
public void markEventTriggered() {
this.eventTriggered = true;
}
}