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;
    }
}