{gameContext && gameContext.isGameOn ? (
+ ) : gameContext && gameContext.wordsList.length > 0 ? (
+
) : (
diff --git a/Web_Application/src/components/GameBoxDisplay.tsx b/Web_Application/src/components/GameBoxDisplay.tsx
new file mode 100644
index 0000000..8bf2378
--- /dev/null
+++ b/Web_Application/src/components/GameBoxDisplay.tsx
@@ -0,0 +1,20 @@
+import React from "react";
+import { Data } from "../assets/data/Interfaces";
+import { DataProps } from "../assets/data/Types";
+
+function GameBoxDisplay(props: Data) {
+ return (
+
+
+ {props.value}
+
+ {props.letter}
+
+ );
+}
+
+export default GameBoxDisplay;
diff --git a/Web_Application/src/components/ScoreDisplay.tsx b/Web_Application/src/components/ScoreDisplay.tsx
new file mode 100644
index 0000000..e9e505d
--- /dev/null
+++ b/Web_Application/src/components/ScoreDisplay.tsx
@@ -0,0 +1,41 @@
+import React from "react";
+import { ScoreProps } from "../assets/data/Types";
+import CountDown from "./CountDown";
+
+function ScoreDisplay(props: ScoreProps) {
+ return (
+
+
+
+
+ Score:{" "}
+
+ {props.score}
+
+
+
+
+
+ Found:
+
+ {props.foundWords}
+
+
+ /{props.totalWords}
+
+
+ {props.word != "" ? (
+
+
+ {props.word}
+
+
+ ) : (
+
+ )}
+
+
+ );
+}
+
+export default ScoreDisplay;
diff --git a/Web_Application/src/components/WordDisplay.tsx b/Web_Application/src/components/WordDisplay.tsx
index ef79465..8c7d0fd 100644
--- a/Web_Application/src/components/WordDisplay.tsx
+++ b/Web_Application/src/components/WordDisplay.tsx
@@ -1,28 +1,35 @@
import React from "react";
import { WordProps } from "../assets/data/Types";
-import CountDown from "./CountDown";
-function WordDisplay(props: WordProps) {
+const WordDisplay = (props: WordProps) => {
return (
-
-
-
-
- Score:{" "}
-
- {props.score}
-
-
+
+
+ Words Found{" "}
+
+ ({props.foundWords.length})
+
+
+
+ {props.foundWords.map((word, index) => {
+ return (
+
+ {word.value}
+
+ -{word.score}
+
+
+ );
+ })}
- {props.word != "" && (
-
-
- {props.word}
-
-
- )}
);
-}
+};
export default WordDisplay;
diff --git a/Web_Application/src/containers/Game.tsx b/Web_Application/src/containers/Game.tsx
index 865dcdb..95ebcee 100644
--- a/Web_Application/src/containers/Game.tsx
+++ b/Web_Application/src/containers/Game.tsx
@@ -1,6 +1,5 @@
-import React, { useState } from "react";
+import React, { useContext, useEffect, useState } from "react";
import GameBox from "../components/GameBox";
-import WordDisplay from "../components/WordDisplay";
import letter_selector_sound from "../assets/sounds/letter_selector.mp3";
import already_present_sound from "../assets/sounds/already_present.mp3";
import accepted_word_sound from "../assets/sounds/accepted_word.mp3";
@@ -8,7 +7,10 @@ import invalid_word_sound from "../assets/sounds/invalid_word.mp3";
import bonus1_sound from "../assets/sounds/bonus1.mp3";
import useSound from "use-sound";
import { originalData, solutionData } from "../assets/data/GameDataSource";
-import { WordsData, Data } from "../assets/data/Interfaces";
+import { WordsData, Data, FoundWords } from "../assets/data/Interfaces";
+import ScoreDisplay from "../components/ScoreDisplay";
+import WordDisplay from "../components/WordDisplay";
+import { GameContext } from "../contexts/GameContext";
function Game() {
let validWordsList: Array
= [];
@@ -38,6 +40,12 @@ function Game() {
const [currentWordScore, setCurrentWordScore] = useState(0);
const [gameScore, setGameScore] = useState(0);
const [selectedBoxId, setSelectedBoxId] = useState(-1);
+ const [foundWords, setFoundWords] = useState([]);
+ const gameContext = useContext(GameContext);
+
+ useEffect(() => {
+ if (gameContext) gameContext.updateGameArray(gameData);
+ }, []);
document.addEventListener("mousedown", () => {
setIsMouseDown(true);
@@ -106,6 +114,7 @@ function Game() {
if (!tempWordsList[foundIndex].isIncluded) {
tempWordsList[foundIndex].isIncluded = true;
setValidWordsData(tempWordsList);
+ if (gameContext) gameContext.updateWordsList(tempWordsList);
return 1;
} else return 2;
}
@@ -176,9 +185,22 @@ function Game() {
specialComments.classList.remove("scale-1");
specialComments.classList.add("scale-0");
}
- if (validStatus == 1) tempScore += currentWordScore;
+ if (validStatus == 1) {
+ tempScore += currentWordScore;
+
+ let tempFoundWords = foundWords;
+ tempFoundWords.push({
+ score: currentWordScore,
+ value: currentWord,
+ });
+ setFoundWords(tempFoundWords);
+ let foundWordsDiv = document.getElementById("found-words-list");
+ if (foundWordsDiv)
+ foundWordsDiv.scrollTop = foundWordsDiv.scrollHeight;
+ }
setGameScore(tempScore);
+ if (gameContext) gameContext.updateScore(tempScore);
setCurrentWordScore(0);
setCurrentWord("");
setGameData(originalData);
@@ -256,7 +278,12 @@ function Game() {
Awesome!
-
+
{
@@ -295,6 +322,7 @@ function Game() {
);
})}
+
);
}
diff --git a/Web_Application/src/containers/ResultDisplay.tsx b/Web_Application/src/containers/ResultDisplay.tsx
new file mode 100644
index 0000000..75efbb6
--- /dev/null
+++ b/Web_Application/src/containers/ResultDisplay.tsx
@@ -0,0 +1,148 @@
+import React, { useEffect, useState } from "react";
+import { WordsData } from "../assets/data/Interfaces";
+import { ResultProps } from "../assets/data/Types";
+import GameBoxDisplay from "../components/GameBoxDisplay";
+
+const PerformaceStats = (props: { name: string; value: any }) => {
+ return (
+ <>
+