[Client] Improve game HTML code
This commit is contained in:
parent
0d4b8ed3ac
commit
4acbb6214a
@ -81,6 +81,10 @@ html {
|
|||||||
margin: 0.25em;
|
margin: 0.25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.home_button, .next_btn, .suspects {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.home_button, .next_btn, .suspect_emotion_chooser {
|
.home_button, .next_btn, .suspect_emotion_chooser {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
@ -101,6 +105,10 @@ html {
|
|||||||
margin: 1em;
|
margin: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.suspect {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
.suspect_picture {
|
.suspect_picture {
|
||||||
height: 15em;
|
height: 15em;
|
||||||
width: 15em;
|
width: 15em;
|
||||||
@ -118,7 +126,6 @@ html {
|
|||||||
.home_button, .next_btn {
|
.home_button, .next_btn {
|
||||||
fill: var(--game-red);
|
fill: var(--game-red);
|
||||||
height: 5em;
|
height: 5em;
|
||||||
padding: 0;
|
|
||||||
width: 5em;
|
width: 5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,13 +199,8 @@ html {
|
|||||||
.culprit_icon {
|
.culprit_icon {
|
||||||
fill: var(--game-white);
|
fill: var(--game-white);
|
||||||
height: 1em;
|
height: 1em;
|
||||||
width: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.culprit_btn_text {
|
|
||||||
margin: 0;
|
|
||||||
margin-left: 0.25em;
|
|
||||||
margin-right: 0.25em;
|
margin-right: 0.25em;
|
||||||
|
width: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.culprit_btn_checked {
|
.culprit_btn_checked {
|
||||||
|
@ -74,9 +74,12 @@ function showEmotionAndCulpritChoicesView() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the gamedata object to retreive the room in which the npc passed as parameter is
|
* Parse the gamedata object to retreive the room in which the npc passed as parameter is located
|
||||||
* located and the second npc located in the same room. When the passed npc is alone in the
|
* and the second npc located in the same room.
|
||||||
* room, a npc is choosen at random as the returned partener
|
*
|
||||||
|
* <p>
|
||||||
|
* When the passed npc is alone in the room, a npc is chosen at random as the returned partener.
|
||||||
|
* </p>
|
||||||
*/
|
*/
|
||||||
function getNpcLocationAndPartner(npcid) {
|
function getNpcLocationAndPartner(npcid) {
|
||||||
const data = {};
|
const data = {};
|
||||||
@ -102,9 +105,12 @@ function getNpcLocationAndPartner(npcid) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the gamedata object to retreive the room in which the npc passed as parameter is
|
* Parse the gamedata object to retreive the room in which the npc passed as parameter is located
|
||||||
* located and the second npc located in the same room. When the passed npc is alone in the
|
* and the second npc located in the same room.
|
||||||
* room, a npc is choosen at random as the returned partener
|
*
|
||||||
|
* <p>
|
||||||
|
* When the passed npc is alone in the room, a npc is chosen at random as the returned partner.
|
||||||
|
* </p>
|
||||||
*/
|
*/
|
||||||
function disableCulpritButtons(culprit_choices_element, selected_suspect) {
|
function disableCulpritButtons(culprit_choices_element, selected_suspect) {
|
||||||
let childrenCulpritChoicesElement = culprit_choices_element.children;
|
let childrenCulpritChoicesElement = culprit_choices_element.children;
|
||||||
@ -123,8 +129,8 @@ function disableCulpritButtons(culprit_choices_element, selected_suspect) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the npc designed as the "culprit" of the crime, the culprit
|
* Return the npc designed as the "culprit" of the crime, the culprit is determined by being the
|
||||||
* is determined by being the only npc alone in a room.
|
* only npc alone in a room.
|
||||||
*/
|
*/
|
||||||
function getCulprit() {
|
function getCulprit() {
|
||||||
let culprit = null;
|
let culprit = null;
|
||||||
@ -140,8 +146,8 @@ function getCulprit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* handler for the function call "askQuestion" for a type_zero question
|
* Handler for the function call {@link askQuestion} for a type_zero question also known as
|
||||||
* also known as "Where were you ?"
|
* "Where were you ?".
|
||||||
*/
|
*/
|
||||||
async function askTypeZeroQuestion() {
|
async function askTypeZeroQuestion() {
|
||||||
askQuestion(npcLocationAndPartner => gameData["npcs"][currentNpc]["QA_0"].replace(
|
askQuestion(npcLocationAndPartner => gameData["npcs"][currentNpc]["QA_0"].replace(
|
||||||
@ -149,8 +155,8 @@ async function askTypeZeroQuestion() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* handler for the function call "askQuestion" for a type_one question
|
* Handler for the function call {@link askQuestion} for a type_one question also known as
|
||||||
* also known as "With who were you with ?"
|
* "With who were you with ?".
|
||||||
*/
|
*/
|
||||||
async function askTypeOneQuestion() {
|
async function askTypeOneQuestion() {
|
||||||
askQuestion(npcLocationAndPartner => gameData["npcs"][currentNpc]["QA_1"].replace(
|
askQuestion(npcLocationAndPartner => gameData["npcs"][currentNpc]["QA_1"].replace(
|
||||||
@ -158,11 +164,14 @@ async function askTypeOneQuestion() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function primary goal is to display the answer to the question the player
|
* This function's primary goal is to display the answer to the question the player
|
||||||
* asked to a npc.
|
* asked to a npc.
|
||||||
* It parses the gamedata object to retreive the answer of the npc
|
*
|
||||||
* and fill the variables left in the string accordingly to the type of the question.
|
* <p>
|
||||||
* Then it fetches the reacion of the npc and diplays it all.
|
* It parses the gamedata object to retreive the answer of the npc and fill the variables left in
|
||||||
|
* the string accordingly to the type of the question; then it fetches the reacion of the npc and
|
||||||
|
* diplays it all.
|
||||||
|
* </p>
|
||||||
*/
|
*/
|
||||||
async function askQuestion(buildAnswer) {
|
async function askQuestion(buildAnswer) {
|
||||||
unsetQuestionButtonsListeners();
|
unsetQuestionButtonsListeners();
|
||||||
@ -187,7 +196,7 @@ async function askQuestion(buildAnswer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function sends the player's answers to the server
|
* Send the player's answers to the server.
|
||||||
*/
|
*/
|
||||||
async function sendAnswers() {
|
async function sendAnswers() {
|
||||||
const selections = document.getElementsByClassName("suspect_emotion_chooser");
|
const selections = document.getElementsByClassName("suspect_emotion_chooser");
|
||||||
@ -209,8 +218,10 @@ async function sendAnswers() {
|
|||||||
* then decide on which npc is the culprit.
|
* then decide on which npc is the culprit.
|
||||||
*/
|
*/
|
||||||
function renderAnswerSelectionPanel() {
|
function renderAnswerSelectionPanel() {
|
||||||
|
const culpritChoices = document.getElementById("culprits_choices");
|
||||||
|
|
||||||
npcsIds.forEach(element => {
|
npcsIds.forEach(element => {
|
||||||
const suspect = document.createElement("div");
|
const suspect = document.createElement("li");
|
||||||
suspect.classList.add("suspect");
|
suspect.classList.add("suspect");
|
||||||
|
|
||||||
const suspectEmotionChooser = document.createElement("select");
|
const suspectEmotionChooser = document.createElement("select");
|
||||||
@ -228,14 +239,20 @@ function renderAnswerSelectionPanel() {
|
|||||||
|
|
||||||
const img = document.createElement('img');
|
const img = document.createElement('img');
|
||||||
img.classList.add("suspect_picture");
|
img.classList.add("suspect_picture");
|
||||||
|
img.setAttribute("alt", "Image d'un suspect");
|
||||||
img.src = NPC_IMAGE_PATH + element;
|
img.src = NPC_IMAGE_PATH + element;
|
||||||
suspect.appendChild(img);
|
suspect.appendChild(img);
|
||||||
|
|
||||||
const button = document.createElement("button");
|
const button = document.createElement("button");
|
||||||
button.classList.add("culprit_btn", "action_button");
|
button.classList.add("culprit_btn", "action_button");
|
||||||
button.innerHTML = '<svg class="culprit_checked_icon hidden culprit_icon" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48"><path d="M18.9 36.75 6.65 24.5l3.3-3.3 8.95 9L38 11.1l3.3 3.25Z"></path></svg><svg class="culprit_unchecked_icon culprit_icon" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48"><path d="M12.45 38.7 9.3 35.55 20.85 24 9.3 12.5l3.15-3.2L24 20.8 35.55 9.3l3.15 3.2L27.2 24l11.5 11.55-3.15 3.15L24 27.2Z"></svg><p class="culprit_btn_text">Couplable</p>';
|
|
||||||
|
|
||||||
const culpritChoices = document.getElementById("culprits_choices");
|
button.appendChild(createCulpritSvgElement("culprit_checked_icon",
|
||||||
|
"M18.9 36.75 6.65 24.5l3.3-3.3 8.95 9L38 11.1l3.3 3.25Z", true));
|
||||||
|
button.appendChild(createCulpritSvgElement("culprit_unchecked_icon",
|
||||||
|
"M12.45 38.7 9.3 35.55 20.85 24 9.3 12.5l3.15-3.2L24 20.8 35.55 9.3l3.15 3.2L27.2 24l11.5 11.55-3.15 3.15L24 27.2Z",
|
||||||
|
false));
|
||||||
|
|
||||||
|
button.appendChild(document.createTextNode("Couplable"));
|
||||||
|
|
||||||
button.addEventListener("click", () => {
|
button.addEventListener("click", () => {
|
||||||
disableCulpritButtons(culpritChoices, suspect);
|
disableCulpritButtons(culpritChoices, suspect);
|
||||||
@ -248,7 +265,30 @@ function renderAnswerSelectionPanel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the screen in which the player asks auestions to the npcs
|
* Create a culprit SVG {@link Element}.
|
||||||
|
*
|
||||||
|
* @param {String} buttonCssClass the specific CSS class to add to the culprit button
|
||||||
|
* @param {String} pathAttributeValue the value of the path attribute of the SVG element generated
|
||||||
|
* @returns a svg {@link Element} with a culprit button depending of the custom CSS class, path
|
||||||
|
* attribute value and isHidden values
|
||||||
|
*/
|
||||||
|
function createCulpritSvgElement(buttonCssClass, pathAttributeValue, isHidden) {
|
||||||
|
const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
||||||
|
svgElement.classList.add(buttonCssClass, "culprit_icon");
|
||||||
|
if (isHidden) {
|
||||||
|
svgElement.classList.add("hidden");
|
||||||
|
}
|
||||||
|
svgElement.setAttribute("viewBox", "0 0 48 48");
|
||||||
|
|
||||||
|
const pathElement = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
||||||
|
pathElement.setAttribute("d", pathAttributeValue);
|
||||||
|
|
||||||
|
svgElement.appendChild(pathElement);
|
||||||
|
return svgElement;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the screen in which the player asks questions to the npcs.
|
||||||
*/
|
*/
|
||||||
function renderInterrogation() {
|
function renderInterrogation() {
|
||||||
document.getElementById("QA_0").textContent = gameData["questions"]["QA_0"];
|
document.getElementById("QA_0").textContent = gameData["questions"]["QA_0"];
|
||||||
@ -257,11 +297,12 @@ function renderInterrogation() {
|
|||||||
const interrogationSuspects = document.getElementById("interrogation_suspects");
|
const interrogationSuspects = document.getElementById("interrogation_suspects");
|
||||||
|
|
||||||
npcsIds.forEach(element => {
|
npcsIds.forEach(element => {
|
||||||
const suspect = document.createElement("div");
|
const suspect = document.createElement("li");
|
||||||
suspect.classList.add("suspect");
|
suspect.classList.add("suspect");
|
||||||
|
|
||||||
const img = document.createElement('img');
|
const img = document.createElement('img');
|
||||||
img.classList.add("suspect_picture");
|
img.classList.add("suspect_picture");
|
||||||
|
img.setAttribute("alt", "Image d'un suspect");
|
||||||
img.src = NPC_IMAGE_PATH + element;
|
img.src = NPC_IMAGE_PATH + element;
|
||||||
suspect.appendChild(img);
|
suspect.appendChild(img);
|
||||||
|
|
||||||
@ -281,12 +322,14 @@ function renderInterrogation() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the websocket for this page, its primary use is to
|
* Initialize the websocket for this page, its primary use is to show the final page once it
|
||||||
* show the final page once it receive the event that all player have finished
|
* receives the event that all players have finished.
|
||||||
* it parses the payload send by the server containing the other players
|
*
|
||||||
|
* <p>
|
||||||
|
* It parses the payload send by the server containing the other players
|
||||||
* nicknames and scores.
|
* nicknames and scores.
|
||||||
|
* </p>
|
||||||
*/
|
*/
|
||||||
function initSock() {
|
function initSock() {
|
||||||
const socket = io({
|
const socket = io({
|
||||||
@ -306,9 +349,12 @@ function initSock() {
|
|||||||
|
|
||||||
socket.on("gamefinished", finalResults => {
|
socket.on("gamefinished", finalResults => {
|
||||||
hideFirstClassElement("emotion_and_culprit_choices");
|
hideFirstClassElement("emotion_and_culprit_choices");
|
||||||
document.querySelector(".reveal_score").textContent =
|
const revealScoreElement = document.createElement("h2");
|
||||||
Object.values(finalResults["player"][username])
|
revealScoreElement.classList.add("reveal_score");
|
||||||
.filter(x => x == true).length + " / 5";
|
revealScoreElement.textContent = Object.values(finalResults["player"][username])
|
||||||
|
.filter(x => x == true).length + " / 5";
|
||||||
|
|
||||||
|
document.querySelector(".player_score").appendChild(revealScoreElement);
|
||||||
|
|
||||||
const playerListElement = document.querySelector(".players_list");
|
const playerListElement = document.querySelector(".players_list");
|
||||||
|
|
||||||
@ -331,9 +377,14 @@ function initSock() {
|
|||||||
const culpritName = gameData["npcs"][culprit]["name"];
|
const culpritName = gameData["npcs"][culprit]["name"];
|
||||||
document.querySelector(".reveal_culprit_title").textContent += " " + culpritName;
|
document.querySelector(".reveal_culprit_title").textContent += " " + culpritName;
|
||||||
|
|
||||||
const culpritElement = document.getElementById("culprit");
|
const culpritElement = document.createElement("img");
|
||||||
culpritElement.src = NPC_IMAGE_PATH + culprit;
|
culpritElement.classList.add("suspect_picture");
|
||||||
culpritElement.setAttribute("alt", "Image du ou de la coupable, " + culpritName);
|
culpritElement.setAttribute("alt", "Image du ou de la coupable, " + culpritName);
|
||||||
|
culpritElement.src = NPC_IMAGE_PATH + culprit;
|
||||||
|
culpritElement.setAttribute("draggable", "false");
|
||||||
|
|
||||||
|
document.querySelector(".reveal_culprit")
|
||||||
|
.appendChild(culpritElement);
|
||||||
|
|
||||||
showFirstClassElement("results_game");
|
showFirstClassElement("results_game");
|
||||||
setGameBackground(RESULTS_IMAGE_PATH);
|
setGameBackground(RESULTS_IMAGE_PATH);
|
||||||
@ -346,6 +397,7 @@ function initSock() {
|
|||||||
suspect.classList.add("summary_suspect");
|
suspect.classList.add("summary_suspect");
|
||||||
|
|
||||||
const img = document.createElement("img");
|
const img = document.createElement("img");
|
||||||
|
img.setAttribute("alt", "Image d'un suspect");
|
||||||
img.src = NPC_IMAGE_PATH + npcid;
|
img.src = NPC_IMAGE_PATH + npcid;
|
||||||
suspect.appendChild(img);
|
suspect.appendChild(img);
|
||||||
|
|
||||||
@ -366,12 +418,11 @@ function initSock() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* This function retreive the initial gamedata of the game
|
|
||||||
* containing all of the needed textual ressources to make
|
|
||||||
* the game playable
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retreive the initial gamedata of the game containing all of the needed textual ressources to
|
||||||
|
* make the game playable.
|
||||||
|
*/
|
||||||
async function setGameData() {
|
async function setGameData() {
|
||||||
const response = await makeAPIRequest("getGameData");
|
const response = await makeAPIRequest("getGameData");
|
||||||
gameData = response["gamedata"];
|
gameData = response["gamedata"];
|
||||||
@ -380,7 +431,7 @@ async function setGameData() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the game, by setting the game data, initializing the socket, rendering the answer
|
* Initialize the game by setting the game data, initializing the socket, rendering the answer
|
||||||
* selection panel, rendering the interrogation view, setting questions buttons listeners,
|
* selection panel, rendering the interrogation view, setting questions buttons listeners,
|
||||||
* setting introduction and interrogation listeners, showing the introduction view and setting the
|
* setting introduction and interrogation listeners, showing the introduction view and setting the
|
||||||
* introduction image as the game background.
|
* introduction image as the game background.
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="fr">
|
<html lang="fr">
|
||||||
<head>
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
<title>Truth Inquiry</title>
|
<title>Truth Inquiry</title>
|
||||||
<link rel="stylesheet" href="/static/css/game_ui.css">
|
<link rel="stylesheet" href="/static/css/game_ui.css">
|
||||||
<link rel="stylesheet" href="/static/css/game_ui_game.css">
|
<link rel="stylesheet" href="/static/css/game_ui_game.css">
|
||||||
@ -13,89 +14,80 @@
|
|||||||
<link rel="icon" href="/static/images/favicon/favicon_256.png" type="image/png" sizes="512x512">
|
<link rel="icon" href="/static/images/favicon/favicon_256.png" type="image/png" sizes="512x512">
|
||||||
<meta name="color-scheme" content="dark light">
|
<meta name="color-scheme" content="dark light">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta charset="UTF-8">
|
|
||||||
</head>
|
</head>
|
||||||
<body class="game_app">
|
<body class="game_app">
|
||||||
<div class="current_background"></div>
|
<div class="current_background"></div>
|
||||||
<div class="introduction hidden">
|
<section class="introduction hidden">
|
||||||
<h1 class="introduction_title">Truth Inquiry</h1>
|
<h1 class="introduction_title">Truth Inquiry</h1>
|
||||||
<p class="introduction_text">Bienvenue dans Truth Inquiry, vous allez intégrer la peau d’un enquêteur.<br><br>Vous avez été donné responsable de résoudre une enquête et devez trouver le coupable d’un vol.<br><br>Cliquez sur la flèche pour découvrir les suspects et les interroger.</p>
|
<p class="introduction_text">Bienvenue dans Truth Inquiry, vous allez intégrer la peau d’un enquêteur.<br><br>Vous avez été donné responsable de résoudre une enquête et devez trouver le coupable d’un vol.<br><br>Cliquez sur la flèche pour découvrir les suspects et les interroger.</p>
|
||||||
<button id="introduction_next_btn" class="next_btn" aria-label="Commencer">
|
<button id="introduction_next_btn" class="next_btn" aria-label="Commencer" title="Cliquez ici pour commencer à jouer">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
||||||
<path d="m23.15 36.95-17.3-11.1Q4.7 25.25 4.7 24t1.15-1.9L23.15 11q1.15-.7 2.35-.075 1.2.625 1.2 2.025v8.75h15.8q.95 0 1.625.675T44.8 24q0 .95-.675 1.6-.675.65-1.625.65H26.7V35q0 1.45-1.2 2.075-1.2.625-2.35-.125Z">
|
<path d="m23.15 36.95-17.3-11.1Q4.7 25.25 4.7 24t1.15-1.9L23.15 11q1.15-.7 2.35-.075 1.2.625 1.2 2.025v8.75h15.8q.95 0 1.625.675T44.8 24q0 .95-.675 1.6-.675.65-1.625.65H26.7V35q0 1.45-1.2 2.075-1.2.625-2.35-.125Z" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</section>
|
||||||
<div class="interrogation hidden">
|
<section class="interrogation hidden">
|
||||||
<h1 class="interrogation_title">Suspects</h1>
|
<h1 class="interrogation_title">Suspects</h1>
|
||||||
<button id="interrogation_next_btn" class="next_btn" aria-label="Passer à la suite">
|
<button id="interrogation_next_btn" class="next_btn" aria-label="Passer à la suite" title="Cliquez ici pour passer à la suite">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
||||||
<path d="m23.15 36.95-17.3-11.1Q4.7 25.25 4.7 24t1.15-1.9L23.15 11q1.15-.7 2.35-.075 1.2.625 1.2 2.025v8.75h15.8q.95 0 1.625.675T44.8 24q0 .95-.675 1.6-.675.65-1.625.65H26.7V35q0 1.45-1.2 2.075-1.2.625-2.35-.125Z">
|
<path d="m23.15 36.95-17.3-11.1Q4.7 25.25 4.7 24t1.15-1.9L23.15 11q1.15-.7 2.35-.075 1.2.625 1.2 2.025v8.75h15.8q.95 0 1.625.675T44.8 24q0 .95-.675 1.6-.675.65-1.625.65H26.7V35q0 1.45-1.2 2.075-1.2.625-2.35-.125Z" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<div class="suspects" id="interrogation_suspects">
|
<ul class="suspects" id="interrogation_suspects"></ul>
|
||||||
</div>
|
</section>
|
||||||
</div>
|
<section class="emotion_and_culprit_choices hidden">
|
||||||
<div class="emotion_and_culprit_choices hidden">
|
|
||||||
<h1 class="emotion_and_culprit_choices_title">Choix du coupable et émotion des suspects</h1>
|
<h1 class="emotion_and_culprit_choices_title">Choix du coupable et émotion des suspects</h1>
|
||||||
<button id="emotion_and_culprit_choices_next_btn" class="next_btn hidden" aria-label="Passer à la suite">
|
<button id="emotion_and_culprit_choices_next_btn" class="next_btn hidden" aria-label="Passer à la suite" title="Cliquez ici pour passer à la suite">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
||||||
<path d="m23.15 36.95-17.3-11.1Q4.7 25.25 4.7 24t1.15-1.9L23.15 11q1.15-.7 2.35-.075 1.2.625 1.2 2.025v8.75h15.8q.95 0 1.625.675T44.8 24q0 .95-.675 1.6-.675.65-1.625.65H26.7V35q0 1.45-1.2 2.075-1.2.625-2.35-.125Z">
|
<path d="m23.15 36.95-17.3-11.1Q4.7 25.25 4.7 24t1.15-1.9L23.15 11q1.15-.7 2.35-.075 1.2.625 1.2 2.025v8.75h15.8q.95 0 1.625.675T44.8 24q0 .95-.675 1.6-.675.65-1.625.65H26.7V35q0 1.45-1.2 2.075-1.2.625-2.35-.125Z" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<div class="suspects" id="culprits_choices">
|
<ul class="suspects" id="culprits_choices"></ul>
|
||||||
</div>
|
</section>
|
||||||
</div>
|
<section class="interrogation_suspect hidden">
|
||||||
<div class="interrogation_suspect hidden">
|
|
||||||
<h1 class="interrogation_title">Poser une question au suspect</h1>
|
<h1 class="interrogation_title">Poser une question au suspect</h1>
|
||||||
<div class="questions_and_image">
|
<div class="questions_and_image">
|
||||||
<button id="interrogation_suspect_previous_btn" class="next_btn" aria-label="Revenir à la sélection du suspect">
|
<button id="interrogation_suspect_previous_btn" class="next_btn" aria-label="Revenir à la sélection du suspect" title="Cliquez ici pour revenir à la sélection du suspect">
|
||||||
<svg class="next_btn" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
<svg class="next_btn" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
||||||
<path d="m23.15 36.95-17.3-11.1Q4.7 25.25 4.7 24t1.15-1.9L23.15 11q1.15-.7 2.35-.075 1.2.625 1.2 2.025v8.75h15.8q.95 0 1.625.675T44.8 24q0 .95-.675 1.6-.675.65-1.625.65H26.7V35q0 1.45-1.2 2.075-1.2.625-2.35-.125Z"/>
|
<path d="m23.15 36.95-17.3-11.1Q4.7 25.25 4.7 24t1.15-1.9L23.15 11q1.15-.7 2.35-.075 1.2.625 1.2 2.025v8.75h15.8q.95 0 1.625.675T44.8 24q0 .95-.675 1.6-.675.65-1.625.65H26.7V35q0 1.45-1.2 2.075-1.2.625-2.35-.125Z" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<img class="image_interrogation suspect_picture" id="currentNpcPicure" src="">
|
<img class="image_interrogation suspect_picture" id="currentNpcPicure" alt="Image du suspect en cours d'interrogation" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==">
|
||||||
<div class="questions_list">
|
<div class="questions_list">
|
||||||
<button class="action_button question_button" id="QA_0" >Où étiez vous hier soir ?</button>
|
<button class="action_button question_button" id="QA_0">Où étiez vous hier soir ?</button>
|
||||||
<button class="action_button question_button" id="QA_1" >Avec qui étiez vous ?</button>
|
<button class="action_button question_button" id="QA_1">Avec qui étiez vous ?</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="question_answer hidden">
|
<div class="question_answer hidden">
|
||||||
<h1 class="anwser_title">Réponse du suspect à la question</h1>
|
<h1 class="anwser_title">Réponse du suspect à la question</h1>
|
||||||
<p class="suspect_answer"></p>
|
<p class="suspect_answer"></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
<div class="results_game hidden">
|
<section class="results_game hidden">
|
||||||
<h1 class="results_title">Résultats</h1>
|
<h1 class="results_title">Résultats</h1>
|
||||||
<a href="/" title="Cliquez ici pour revenir à la page d'accueil du jeu">
|
<a id="return_to_home_btn" class="home_button" href="/" aria-label="Revenir à la page d'accueil du jeu" title="Cliquez ici pour revenir à la page d'accueil du jeu">
|
||||||
<button id="return_to_home_btn" class="home_button" aria-label="Revenir à la page d'accueil du jeu">
|
<svg class="home_btn" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
||||||
<svg class="home_btn" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
<path d="M6.9 43.1V17.4L24 4.55 41.15 17.4v25.7h-12.9V27.7h-8.5v15.4Z" />
|
||||||
<path d="M6.9 43.1V17.4L24 4.55 41.15 17.4v25.7h-12.9V27.7h-8.5v15.4Z"/>
|
</svg>
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
</a>
|
</a>
|
||||||
<div class="reveal_and_scores">
|
<div class="reveal_and_scores">
|
||||||
<div class="scores">
|
<div class="scores">
|
||||||
<div class="player_score">
|
<div class="player_score">
|
||||||
<h1 class="score_title">Votre score est de :</h1>
|
<h1 class="score_title">Votre score est de :</h1>
|
||||||
<h2 class="reveal_score">4/5</h2>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="results_game_multiplayer">
|
<div class="results_game_multiplayer">
|
||||||
<div class="players_list">
|
<div class="players_list"></div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="reveal_culprit">
|
<div class="reveal_culprit">
|
||||||
<h2 class="reveal_culprit_title">Le coupable était ...</h2>
|
<h2 class="reveal_culprit_title">Le coupable était ...</h2>
|
||||||
<img class="suspect_picture" id="culprit" draggable="false">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="summary">
|
<div class="summary">
|
||||||
<h1 class="summary_title">Débrief</h1>
|
<h1 class="summary_title">Débrief</h1>
|
||||||
<div class="suspects_list">
|
<div class="suspects_list"></div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
<div class="alert_dialog_background"></div>
|
<div class="alert_dialog_background"></div>
|
||||||
<div class="unsupported_browser">
|
<div class="unsupported_browser">
|
||||||
<div id="unsupported_browser_dialog" class="alert_dialog">
|
<div id="unsupported_browser_dialog" class="alert_dialog">
|
||||||
|
Loading…
Reference in New Issue
Block a user