<script lang="ts">
    import AudioPlayerComponent from "./AudioPlayerComponent.svelte";
    import type { AudioMultipleChoiceQuestion } from "./games/games";

    const path = "/sounds/";

    interface Props {
        question: AudioMultipleChoiceQuestion;
        showAnswer: boolean;
        showQuestion: boolean;
        showPlayer: boolean;
        [key: string]: unknown;
    }

    let { question, showAnswer, showQuestion, showPlayer }: Props = $props();

    function shuffle<T>(array: T[]) {
        let currentIndex = array.length;

        // While there remain elements to shuffle...
        while (currentIndex != 0) {
            // Pick a remaining element...
            let randomIndex = Math.floor(Math.random() * currentIndex);
            currentIndex--;

            // And swap it with the current element.
            [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
        }
    }

    const answer = question.data.choices[0];

    let _choices = [...question.data.choices];
    shuffle(_choices);
</script>

<div class="mb-4 flex grow flex-col items-center text-6xl">
    {#if showQuestion}
        <div class="flex grow-1 items-center">
            <div class="text-center">{question.data.question}</div>
        </div>
    {/if}
    {#if showPlayer}
        <div class="flex w-full flex-col justify-center">
            <AudioPlayerComponent src={path + question.data.audio} />
        </div>
    {/if}
    {#if showQuestion}
        <div class="flex w-full grow-1 flex-wrap items-center justify-around gap-2">
            {#each _choices as choice}
                <div class="choiceCard {showAnswer && choice === answer ? 'choice-answer' : ''}">
                    {choice}
                </div>
            {/each}
        </div>
    {/if}
</div>
