time limit now works and the limit shows in the hosts screen!
This commit is contained in:
parent
41941f98e8
commit
c3cfa144d3
8 changed files with 79 additions and 2 deletions
|
@ -62,11 +62,13 @@ export let DefaultQuestions = [
|
||||||
name: "What should you do when you're free?",
|
name: "What should you do when you're free?",
|
||||||
answers: ["Do something in real life!", "Play video games", "Code!", "Touch grass!"],
|
answers: ["Do something in real life!", "Play video games", "Code!", "Touch grass!"],
|
||||||
correctAnswer: 2,
|
correctAnswer: 2,
|
||||||
|
timeLimit: 30,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Is RezHackXYZ the best programmer in the world?",
|
name: "Is RezHackXYZ the best programmer in the world?",
|
||||||
answers: ["Yes :)", "No :("],
|
answers: ["Yes :)", "No :("],
|
||||||
correctAnswer: 0,
|
correctAnswer: 0,
|
||||||
|
timeLimit: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Best place in the world?",
|
name: "Best place in the world?",
|
||||||
|
@ -81,6 +83,7 @@ export let DefaultQuestions = [
|
||||||
"Twitter",
|
"Twitter",
|
||||||
],
|
],
|
||||||
correctAnswer: 4,
|
correctAnswer: 4,
|
||||||
|
timeLimit: 120,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,20 @@
|
||||||
<option value={i + 2}>{i + 2}</option>
|
<option value={i + 2}>{i + 2}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
|
<select
|
||||||
|
bind:value={questions.v[index].timeLimit}
|
||||||
|
class="h-fit rounded-xl bg-gray-800 p-1 text-center text-white"
|
||||||
|
>
|
||||||
|
<option disabled selected>Time Limit</option>
|
||||||
|
<option value={null}>infinite</option>
|
||||||
|
<option value={5}>5 sec</option>
|
||||||
|
<option value={10}>10 sec</option>
|
||||||
|
<option value={15}>15 sec</option>
|
||||||
|
<option value={30}>30 sec</option>
|
||||||
|
<option value={60}>1 min</option>
|
||||||
|
<option value={120}>2 min</option>
|
||||||
|
<option value={300}>5 min</option>
|
||||||
|
</select>
|
||||||
<DeleteQuestion {index} />
|
<DeleteQuestion {index} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ export let questions = $state({
|
||||||
name: "",
|
name: "",
|
||||||
answers: ["", "", "", ""],
|
answers: ["", "", "", ""],
|
||||||
correctAnswer: undefined,
|
correctAnswer: undefined,
|
||||||
|
timeLimit: 30,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
@ -22,6 +23,7 @@ export function AddQuestion() {
|
||||||
name: "",
|
name: "",
|
||||||
answers: ["", "", "", ""],
|
answers: ["", "", "", ""],
|
||||||
correctAnswer: undefined,
|
correctAnswer: undefined,
|
||||||
|
timeLimit: 30,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ export async function createGame(questions, gamePin) {
|
||||||
gameid: gamePin,
|
gameid: gamePin,
|
||||||
questionstext: q.name,
|
questionstext: q.name,
|
||||||
correctanswer: q.correctAnswer,
|
correctanswer: q.correctAnswer,
|
||||||
|
timelimit: q.timeLimit,
|
||||||
media: q.media || null,
|
media: q.media || null,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
<script>
|
<script>
|
||||||
import PeopleAwnsered from "./PeopleAwnsered.svelte";
|
import PeopleAwnsered from "./PeopleAwnsered.svelte";
|
||||||
import Display from "./awnseringQuetions/display.svelte";
|
import Display from "./awnseringQuetions/display.svelte";
|
||||||
|
import TimeLeft from "./timeLeft.svelte";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<h1 class="m-[0] text-7xl">HOSTING</h1>
|
<h1 class="m-[0] text-7xl">HOSTING</h1>
|
||||||
<Display />
|
<Display />
|
||||||
<PeopleAwnsered />
|
<PeopleAwnsered />
|
||||||
|
<TimeLeft />
|
|
@ -0,0 +1,15 @@
|
||||||
|
<script>
|
||||||
|
import { TotalTimeLeft, timeLeft } from "../../logic/HostsData.svelte.js";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if TotalTimeLeft.v != null}
|
||||||
|
<div class="mt-2 mb-3 flex w-full flex-col rounded-2xl border-2 border-green-400 p-2">
|
||||||
|
<h3>{timeLeft.v}sec out of {TotalTimeLeft.v}secs is left</h3>
|
||||||
|
<div class="flex-1 rounded-full border-2 border-gray-600">
|
||||||
|
<div
|
||||||
|
class="h-4 rounded-full bg-green-600 transition-all duration-500"
|
||||||
|
style="width: {(timeLeft.v / TotalTimeLeft.v) * 100}%;"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
|
@ -9,4 +9,7 @@ export let Totalplayers = $state({ v: 3 });
|
||||||
|
|
||||||
export let CurrentQuestionDetails = $state({ v: {} });
|
export let CurrentQuestionDetails = $state({ v: {} });
|
||||||
|
|
||||||
export let gamePin = $state({ v: "" });
|
export let gamePin = $state({ v: "" });
|
||||||
|
|
||||||
|
export let timeLeft = $state({ v: 0 });
|
||||||
|
export let TotalTimeLeft = $state({ v: 0 });
|
|
@ -1,12 +1,23 @@
|
||||||
import { supabase } from "$lib/supabase.js";
|
import { supabase } from "$lib/supabase.js";
|
||||||
import { onNewPlayerAwnsered } from "./onNewPlayerAwnsered.js";
|
import { onNewPlayerAwnsered } from "./onNewPlayerAwnsered.js";
|
||||||
import { currentQuestion, questions, CurrentQuestionDetails } from "./HostsData.svelte.js";
|
import {
|
||||||
|
currentQuestion,
|
||||||
|
questions,
|
||||||
|
CurrentQuestionDetails,
|
||||||
|
TotalTimeLeft,
|
||||||
|
timeLeft,
|
||||||
|
PeopleAwnseredQ,
|
||||||
|
totalQuetions,
|
||||||
|
} from "./HostsData.svelte.js";
|
||||||
|
import { GameOver } from "./GameOver.js";
|
||||||
|
|
||||||
let WaitingForAwnserConection;
|
let WaitingForAwnserConection;
|
||||||
|
let TimeLimitInterval;
|
||||||
|
|
||||||
export async function WaitForAwnser(questionid, gamePin) {
|
export async function WaitForAwnser(questionid, gamePin) {
|
||||||
if (questionid != 0) {
|
if (questionid != 0) {
|
||||||
await supabase.removeChannel(WaitingForAwnserConection);
|
await supabase.removeChannel(WaitingForAwnserConection);
|
||||||
|
clearInterval(TimeLimitInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
await supabase
|
await supabase
|
||||||
|
@ -48,5 +59,31 @@ export async function WaitForAwnser(questionid, gamePin) {
|
||||||
answers: answers.map((answer) => answer.content),
|
answers: answers.map((answer) => answer.content),
|
||||||
questionid: questionsData[currentQuestion.v].id,
|
questionid: questionsData[currentQuestion.v].id,
|
||||||
media: questionsData[currentQuestion.v].media || null,
|
media: questionsData[currentQuestion.v].media || null,
|
||||||
|
timeLimit: questionsData[currentQuestion.v].timelimit,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TotalTimeLeft.v = CurrentQuestionDetails.v.timeLimit;
|
||||||
|
timeLeft.v = CurrentQuestionDetails.v.timeLimit;
|
||||||
|
console.log("Time left:", timeLeft.v);
|
||||||
|
console.log("Total time left:", TotalTimeLeft.v);
|
||||||
|
|
||||||
|
if (TotalTimeLeft.v != null) {
|
||||||
|
TimeLimitInterval = setInterval(() => {
|
||||||
|
console.log("Time left:", timeLeft.v);
|
||||||
|
if (timeLeft.v > 0) {
|
||||||
|
timeLeft.v--;
|
||||||
|
console.log("Time left after decrement:", timeLeft.v);
|
||||||
|
} else {
|
||||||
|
supabase.removeChannel(WaitingForAwnserConection);
|
||||||
|
currentQuestion.v++;
|
||||||
|
if (currentQuestion.v == totalQuetions.v) {
|
||||||
|
//GameOver(gamePin);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PeopleAwnseredQ.v = 0;
|
||||||
|
|
||||||
|
WaitForAwnser(currentQuestion.v, gamePin);
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue