class Menu {
    constructor() {
    }

    homescreen() {
        textAlign(CENTER, CENTER);
        textSize(70);
        fill(100, 255, 100);
        text("Slime\nSymphony", width / 2, height / 4);

        button.button(255, 255, 255, width / 2, height / 2, "Start Game")
        button.button(255, 255, 255, width / 2, height / 2 + height / 12, "Scores")

        push()
        fill(255, 255, 255)
        textSize(25)
        textAlign(CENTER, CENTER)
        for (let i = 0; i < requesteddata.length; i++) {
            text(i + 1 + ". " + requesteddata[i].Naam + ": " + requesteddata[i].Score, width / 5, height / 3 + (i * 30))
        }
        pop()

        //Scores rectangle
        push()
        stroke(4, 217, 255)
        strokeWeight(5)
        fill(0, 255, 0, 0)
        rect(width / 5, height / 2, width / 4, height / 1.5)
        rect(width / 5 * 4, height / 2, width / 4, height / 1.5)
        imageMode(CENTER)
        image(controlsImage, width / 5 * 4, height / 2, width / 4, height / 1.5)
        pop()

        push()
        textSize(50)
        fill(255, 255, 255)
        text("Highscores", width / 5, height / 4)
        fill(255, 255, 255)
        stroke('black');
        strokeWeight(4);
        text("Controls", width / 5 * 4, height / 4)
        pop()
    }

    pauseMenu() {
        textAlign(CENTER);
        textSize(50);
        fill(255, 255, 255);
        text("Paused", width / 2, height / 2 - height / 6);
        button(255, 255, 255, width / 2, height / 2, "Resume");
        button(255, 255, 255, width / 2, height / 2 + height / 12, "Main Menu");
    }

    scoreMenu() {
        textAlign(CENTER, CENTER);
        textSize(50);
        fill(255, 255, 255);
        text("Score", width / 2, height / 5);
        textSize(32);
        text(letters[currentIndex[0]], width / 2 - 30, height / 3);
        text(letters[currentIndex[1]], width / 2, height / 3);
        text(letters[currentIndex[2]], width / 2 + 30, height / 3);
        if (!clearDataOnce) {
            requesteddata = [];
            clearDataOnce = true;
        }

        if (scorescreenOn && keyReleasedFlag) {
            nameSubmit();
        }

        if (entered) {
            push()
            stroke(205, 205, 205)
            strokeWeight(2)
            fill(0, 0, 0, 0)
            rect(width / 2, height / 3, 90, 40)
            pop()
            if (!dataIsCalled) {
                DB.getData(nameHS);
                dataIsCalled = true;
            }
        }
        else {
            nameDraw(3);
        }

        push()
        fill(255, 255, 255)
        textSize(25)
        textAlign(CENTER, CENTER)
        //text for name, score, achievements
        for (let i = 0; i < requesteddata.length; i++) {
            text(i + 1 + ". " + requesteddata[i].Naam + ": " + requesteddata[i].Score + " " + requesteddata[i].Datum, width / 4, height / 3 + (i * 30))
        }
        pop()

        push()
        fill(255, 255, 255)
        textSize(16)
        textAlign(CENTER, CENTER)
        for (let i = 0; i < requesteddata.length; i++) {
            text(i + 1 + ". " + requesteddata[i].Achievements, width / 4 * 3, height / 3 + (i * 30))
        }
        pop()

        push()
        stroke(4, 217, 255)
        strokeWeight(5)
        fill(0, 255, 0, 0)
        //box left
        rect(width / 4 * 3, height / 2, width / 3.5, height / 1.25)
        //box right
        rect(width / 4, height / 2, width / 3.5, height / 1.25)
        pop()
        push()
        text("Your scores", width / 4, height / 6)
        text("Your achievements", width / 4 * 3, height / 6)
        pop()

        push()
        button.button(255, 255, 255, width / 2, height / 2, "Main Menu")
        pop()
    }

    gameOver() {
        if (lives <= 0) {
            //game over screen
            iIndex = constrain(iIndex, 0, 2);
            isDead = true;
            push();
            fill(255, 0, 0);
            textSize(60);
            textAlign(CENTER, CENTER);
            text("Game Over", width / 2, height / 2 - height / 5);

            fill(255, 255, 255)
            textSize(18);
            text("Score: " + int(time), width / 2, height / 2 - height / 8);

            textSize(32);
            textAlign(CENTER, CENTER);
            text(letters[currentIndex[0]], width / 2 - 30, height / 2);
            text(letters[currentIndex[1]], width / 2, height / 2);
            text(letters[currentIndex[2]], width / 2 + 30, height / 2);


            text("Restart", width / 2, height / 2 + height / 12);

            text("Main Menu", width / 2, height / 2 + height / 6);
            pop();
        }
    }


    dodgeBanner() {
        push()
        fill(255, 0, 0)
        textSize(100)
        textAlign(CENTER, CENTER)
        text("Dodge!", width / 2, height / 2)
        pop()
    }
}