WinScreenLogic.java

package io.github.some_example_name;

public class WinScreenLogic {

    private StringBuilder input;
    private boolean nameConfirmed;
    private float cursorTimer;
    private boolean cursorVisible;

    public WinScreenLogic() {
        input = new StringBuilder();
        nameConfirmed = false;
        cursorTimer = 0f;
        cursorVisible = true;
    }

    public String getName() {
        return input.toString();
    }

    public boolean isNameConfirmed() {
        return nameConfirmed;
    }

    public void processKeyTyped(char character) {
        if (nameConfirmed) return;

        if (character == '\b') {
            if (input.length() > 0) {
                input.deleteCharAt(input.length() - 1);
            }
            return;
        }

        if (character == '\r' || character == '\n') {
            if (input.length() > 0) {
                nameConfirmed = true;
            }
            return;
        }

        if (input.length() >= 12) return;

        if (Character.isLetterOrDigit(character) || character == ' ') {
            input.append(character);
        }
    }

    public void update(float delta) {
        cursorTimer += delta;
        if (cursorTimer >= 0.5f) {
            cursorVisible = !cursorVisible;  // Toggle cursor visibility
            cursorTimer = 0f;
        }
    }

    public boolean isCursorVisible() {
        return cursorVisible;
    }

    public void resetInput() {
        input.setLength(0);
        nameConfirmed = false;
    }
}