// IDs
var id_cat = 0, id_theme = 0, id_quest = 0;
// Shortcuts
var json, category, theme;
// Timer
var timing = 5, secRestantes, timer;
var baseWidth;
var score = 0;
var reponseUser = -1, bonneReponse;
var canClick = true;
function apiReq() {
$.ajax({
async: false,
url: "./api/",
dataType: 'json',
success: function(data) {
json = data;
}
});
}
function loadCat(id) {
if(id === 0) category = json.cat1;
if(id === 1) category = json.cat2;
console.log(category);
$("#game").html("
Catégorie : "+category.nom_cat+"
");
$("#game").append("");
$("#game").append("");
$("#game").append("Score : "+score+"
");
loadTheme(id_theme);
}
function loadTheme(id) {
theme = category.themes[id];
$("#theme").html("");
$("#theme").append("- "+theme.reponse1+"
"
+"- "+theme.reponse2+"
- Les deux
");
quest(id_quest);
}
function quest(id) {
$("#question").html(theme.questions[id].intitule);
startTimer();
bonneReponse = parseInt(theme.questions[id].bonneReponse);
console.info('Question ' + (id_quest + 1) + '/' + theme.questions.length + ' : '
+theme.questions[id].intitule);
if(canClick) {
$("#rep1").off('click');
$("#rep1").one("click", function() { reponseUser = 1; checkAnswer(); });
$("#rep2").off('click');
$("#rep2").one("click", function() { reponseUser = 2; checkAnswer(); });
$("#both").off('click');
$("#both").one("click", function() { reponseUser = 0; checkAnswer(); });
}
}
function checkAnswer() {
canClick = false;
$("#rep1").off('click');
$("#rep2").off('click');
$("#both").off('click');
stopTimer();
if(reponseUser == bonneReponse) {
score += secRestantes+1;
}
$("#score").html("Score : "+score);
switch(bonneReponse) {
case 0: $("#rep1").addClass("wrong-answer");
$("#rep2").addClass("wrong-answer");
$("#both").addClass("good-answer");
break;
case 1: $("#rep1").addClass("good-answer");
$("#rep2").addClass("wrong-answer");
$("#both").addClass("wrong-answer");
break;
case 2: $("#rep1").addClass("wrong-answer");
$("#rep2").addClass("good-answer");
$("#both").addClass("wrong-answer");
break;
}
window.setTimeout(nextQuestion, 2000);
}
function nextQuestion() {
$("#rep1").removeClass();
$("#rep2").removeClass();
$("#both").removeClass();
canClick = true;
// Dernière question du thème en cours
if((id_quest+1) == theme.questions.length) {
// Dernier thème de la catégorie en cours
if((id_theme+1) == category.themes.length) {
// Dernière catégorie
if((id_cat+1) == 2) {
endGame();
} else {
id_quest = 0;
id_theme = 0;
id_cat++;
loadCat(id_cat);
}
} else {
id_quest = 0;
id_theme++;
loadTheme(id_theme);
}
} else {
id_quest++;
quest(id_quest);
}
}
function play() {
$("#play").remove();
apiReq();
loadCat(id_cat);
}
function startTimer() {
$("#timer").css("width", "100%");
baseWidth = $("#timer").width();
$("#timer").animate({'width' : '0%'}, timing*1000);
timer = window.setTimeout(checkAnswer, timing*1000);
}
function stopTimer() {
window.clearTimeout(timer);
$("#timer").stop();
secRestantes = Math.round($("#timer").width()/baseWidth*timing);
}
function endGame() {
$("#game").html("Vous avez marqué "+score+" miams
"
+"Enregistrez votre score : "
+"
");
$("#sendScore").on('click', scoreConfirm);
$("#login").on('keypress', function(event) {
if(event.which == 13) {
scoreConfirm();
}
});
}
function scoreConfirm() {
addScore($("#login").val(), score);
var message = json.message;
$("#registerScore").fadeOut();
console.log(message);
if(message == "score_add_success") {
window.setTimeout(function() {
$("#registerScore").addClass("success");
$("#registerScore").html("Votre score a bien été enregistré
"+
"Voir les meilleurs scores");
}, 400);
} else {
if(message === "higher_score_present") {
window.setTimeout(function() {
$("#registerScore").addClass("error");
$("#registerScore").html("Un score supérieur ou égal existe déjà avec ce pseudonyme
"
+"Essayez avec un autre pseudonyme : "
+"
"
+"Voir les meilleurs scores");
}, 400);
$("#sendScore").on('click', scoreConfirm);
$("#login").on('keypress', function(event) {
if(event.which == 13) {
scoreConfirm();
}
});
} else {
window.setTimeout(function() {
$("#registerScore").addClass("error");
$("#registerScore").html("Une erreur est survenue ("+status.message+")
"+
"Voir les meilleurs scores");
}, 400);
}
}
$("#registerScore").fadeIn();
}
function addScore(userLogin, userScore) {
$.ajax({
async: false,
url: "./api/?page=palmares",
type: "POST",
dataType: 'json',
data: {login: userLogin, score: userScore},
success: function(data) {
json = data;
}
});
}
function displayScores() {
$.get("./api/?page=palmares", function(data) {
var list = "";
for(var i = 0; i < 10; i++) {
list += "- "+data[i].login+" - "+data[i].score+"
";
}
list += "
";
$("#palmares").html(list);
});
}