diff --git a/WEB/Client/Client.php b/WEB/Client/Client.php
new file mode 100644
index 00000000..16d83e46
--- /dev/null
+++ b/WEB/Client/Client.php
@@ -0,0 +1,39 @@
+findUsersInQueue();
+ $numberOfPlayer=count($userGroup);
+ header('Location : '.$rep.$vues['Queue']);
+ }
+ }
+ sleep(1);
+ }
+ socket_close($socket);
+ }
+}
\ No newline at end of file
diff --git a/WEB/Config/Autoload.php b/WEB/Config/Autoload.php
index 2a4ecab4..1b01a7b0 100644
--- a/WEB/Config/Autoload.php
+++ b/WEB/Config/Autoload.php
@@ -34,7 +34,7 @@ class Autoload
{
global $rep;
$filename = $class.'.php';
- $dir =array('Model/','./','Config/','Controller/','Metier/', 'Factory/');
+ $dir =array('Model/','Handler/','./','Config/','Client','Controller/','Metier/', 'Factory/');
foreach ($dir as $d){
$file=$rep.$d.$filename;
if (file_exists($file))
diff --git a/WEB/Config/Config.php b/WEB/Config/Config.php
index 00e2a8a4..71693633 100644
--- a/WEB/Config/Config.php
+++ b/WEB/Config/Config.php
@@ -34,9 +34,12 @@ $vues['queue'] = 'View/src/pages/Multijoueur/Queue.php';
// Enigme
$vues['enigmePage'] = 'View/src/pages/Enigme/EnigmePage.php';
// Server
-$server = './server.js';
-$serverAdress = "http://82.165.180.114";
+$BUFFER_SIZE = 1024;
+$serverAdress = "82.165.180.114";
$port= "3000";
+$playerNumberPerGame=2;
+//modules
+$modules = 'node_module/';
//Error
$vues['erreur'] = 'View/src/pages/Erreur.php';
diff --git a/WEB/Controller/FrontController.php b/WEB/Controller/FrontController.php
index 522e8a00..2660e2ea 100644
--- a/WEB/Controller/FrontController.php
+++ b/WEB/Controller/FrontController.php
@@ -4,7 +4,7 @@ class FrontController
function __construct()
{
try {
- global $error, $view, $rep;
+ global $error, $vues, $rep;
$nettoyage = new Nettoyage();
session_start();
// Check role permissions
@@ -23,7 +23,7 @@ class FrontController
new UserController();
} else if (method_exists('UserController', $action) == false) {
$error = "Action non valide " . $action;
- require($rep . $view['erreur']);
+ require($rep . $vues['erreur']);
} else {
//echo "action user valide";
$_REQUEST['action'] = $action;
@@ -36,7 +36,7 @@ class FrontController
new AdminController();
} else if (method_exists('AdminController', $action) == false) {
$error = "Action non valide" . $action;
- require($rep . $view['erreur']);
+ require($rep . $vues['erreur']);
} else {
//echo "action admin valide";
$_REQUEST['action'] = $action;
@@ -49,7 +49,7 @@ class FrontController
}
} catch (Exception $e) {
$error = $e->getMessage();
- require($rep . $view['erreur']);
+ require($rep . $vues['erreur']);
}
}
}
\ No newline at end of file
diff --git a/WEB/Controller/UserController.php b/WEB/Controller/UserController.php
index 6226abe5..1883f360 100644
--- a/WEB/Controller/UserController.php
+++ b/WEB/Controller/UserController.php
@@ -1,4 +1,5 @@
addToQueue();
- $userGroup = $model->findUserGroup();/*.$serverAdress.$port*/
- echo '
- ';
+ $client = Client::getInstance();
+ $client->Queuing();
+ header('Location: index.php?action=launchGame');
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
diff --git a/WEB/Model/AdminModel.php b/WEB/Model/AdminModel.php
old mode 100644
new mode 100755
diff --git a/WEB/Model/UserModel.php b/WEB/Model/UserModel.php
index 7695f703..8909bb5d 100644
--- a/WEB/Model/UserModel.php
+++ b/WEB/Model/UserModel.php
@@ -54,11 +54,6 @@ class UserModel
}
echo '8';
$this->utilisateur_gateway->addToQueue($_SESSION['utilisateur'], $partie);
- $userGroup = (string)$partie->getIdPartie();
- echo '';
}
public function findUserGroup() : int {
@@ -79,6 +74,11 @@ class UserModel
header('Location: index.php');
}
+ public function findUsersInQueue() : array
+ {
+ return $this->utilisateur_gateway->findUsersInQueue();
+ }
+
public function getEnigmeByOrdre(int $num) : Enigme
{
$tabEnigme = $this->enigme_gateway->findByOrdre($num);
diff --git a/WEB/Model/requestHandler.php b/WEB/Model/requestHandler.php
new file mode 100644
index 00000000..ee6de61b
--- /dev/null
+++ b/WEB/Model/requestHandler.php
@@ -0,0 +1,79 @@
+partie_gateway=new PartieGateway();
+ $this->arraySocketGroup=array();
+ $this->socketsFromQueue=array();
+ }
+
+ public function Queuing(Socket $socket,string $request){
+ global $playerNumberPerGame;
+
+ // Ajoute la connection à un tableau de connection des joueurs en attente
+
+ $socketsFromQueue[]=$socket;
+
+ // si le nombre de joueur par partie nécessaire est égal au nombre de connection encore dans la file d'attente
+ // alors envoie à l'utilisateur de lancer la partie et ajoute l'ensemble de connection à un tableau de groupe de sockets avec comme paire clés valeurs
+ // l'identifiant de la partie et l'ensemble de connections sinon envoie à tout les utilisateurs en file d'attente qu'il faut rafraichir la page de la file d'attente
+
+ if(count($socketsFromQueue)==$playerNumberPerGame)
+ {
+ $response="launchGame";
+ $idPartie=$this->partie_gateway->findPartieInQueue();
+ $arraySocketGroup[$idPartie]= $socketsFromQueue;
+ $arraySocketGroup[$this->partie_gateway->findPartieInQueue()]=$socketsFromQueue;
+ $socketsFromQueue=array();
+ }
+ else
+ {
+ $response="refreshQueue";
+ }
+ foreach($socketsFromQueue as $sock)
+ {
+ socket_write($sock,$response,strlen($response)) or die("N'a pas pu écrire à la socket\n");
+ }
+ }
+ public function quitQueue(Socket $client,String $request){
+ // supprime le socket de la liste des sockets en attente
+ $socketsFromQueue=array_diff($this->socketsFromQueue, array($client));
+ $response="quitQueue";
+ // envoie à tous les utilisateurs en attente de rafraichir la page
+ foreach($socketsFromQueue as $socket)
+ {
+ socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n");
+ }
+ }
+ public function quitGame(Socket $client,String $request){
+ // supprime la socket de la liste des sockets en attente
+ $this->arraySocketGroup=array_diff($this->arraySocketGroup, array($client));
+ $response="quitGame";
+ // envoie à tous les utilisateurs en attente de rafraichir la page
+ foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket)
+ {
+ socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n");
+ }
+ }
+ public function refreshDashBoard(Socket $client,String $request){
+ $response="refreshDashBoard";
+ // envoie à tous les utilisateurs en attente de rafraichir la page
+ foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket)
+ {
+ socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n");
+ }
+ }
+ public function finishGame(Socket $client,String $request){
+ // supprime la socket de la liste des sockets en attente
+ $this->arraySocketGroup=array_diff($this->arraySocketGroup, array($client));
+ $response="finishGame";
+ // envoie à tous les utilisateurs en attente de rafraichir la page
+ foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket)
+ {
+ socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n");
+ }
+ }
+}
\ No newline at end of file
diff --git a/WEB/View/assets/img/LogoScripted.png b/WEB/View/assets/img/LogoScripted.png
new file mode 100644
index 00000000..370d16fb
Binary files /dev/null and b/WEB/View/assets/img/LogoScripted.png differ
diff --git a/WEB/View/assets/svg/home.svg b/WEB/View/assets/svg/home.svg
new file mode 100644
index 00000000..08d49d96
--- /dev/null
+++ b/WEB/View/assets/svg/home.svg
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/WEB/View/assets/svg/script.svg b/WEB/View/assets/svg/script.svg
new file mode 100644
index 00000000..fe811c86
--- /dev/null
+++ b/WEB/View/assets/svg/script.svg
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/WEB/View/src/CSS/Admin2.css b/WEB/View/src/CSS/Admin2.css
new file mode 100644
index 00000000..b167f660
--- /dev/null
+++ b/WEB/View/src/CSS/Admin2.css
@@ -0,0 +1,128 @@
+@font-face {
+ font-family: Fauna;
+ src: url("../../assets/fonts/Fauna.ttf");
+}
+@font-face {
+ font-family: Equinox;
+ src: url("../../assets/fonts/Equinox.otf");
+}
+/* End Fonts CSS */
+
+body {
+ min-height: 100vh;
+ font-family: Verdana, Geneva, Tahoma, sans-serif;
+ color: white;
+ height: 100vh;
+ background-color: #111219;
+}
+
+li {
+ display: inline;
+ width: 225px;
+}
+
+a {
+ color: white;
+}
+a:hover {
+ color: white;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: Equinox;
+}
+
+.legend {
+ color: #898989;
+ font-weight: bolder;
+}
+
+.current {
+ background: rgb(146, 254, 157);
+ background: -moz-linear-gradient(
+ 50deg,
+ rgba(146, 254, 157, 1) 0%,
+ rgba(0, 201, 255, 1) 100%
+ );
+ background: -webkit-linear-gradient(
+ 50deg,
+ rgba(146, 254, 157, 1) 0%,
+ rgba(0, 201, 255, 1) 100%
+ );
+ background: linear-gradient(
+ 50deg,
+ rgba(146, 254, 157, 1) 0%,
+ rgba(0, 201, 255, 1) 100%
+ );
+ box-shadow: 0px 0px 50px -5px rgba(0, 201, 255, 0.3);
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+}
+
+.currentText {
+ color: black;
+}
+.currentText:hover {
+ color: black;
+}
+
+.nav-button {
+ color: #898989;
+}
+
+.nav-button:hover {
+ color: white;
+}
+
+.dashboard-card {
+ background: rgb(0, 0, 0);
+ background: -moz-linear-gradient(
+ 315deg,
+ rgba(0, 0, 0, 0.4192051820728291) 0%,
+ rgba(0, 0, 0, 1) 30%
+ );
+ background: -webkit-linear-gradient(
+ 315deg,
+ rgba(0, 0, 0, 0.4192051820728291) 0%,
+ rgba(0, 0, 0, 1) 30%
+ );
+ background: linear-gradient(
+ 315deg,
+ rgba(0, 0, 0, 0.4192051820728291) 0%,
+ rgba(0, 0, 0, 1) 30%
+ );
+ border-radius: 15px;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ -ms-border-radius: 15px;
+ -o-border-radius: 15px;
+ height: 350px;
+ overflow-y: scroll; /* Switch */
+}
+
+.dashboard-card-reversed {
+ background: rgb(0, 0, 0);
+ background: -moz-linear-gradient(
+ 45deg,
+ rgba(0, 0, 0, 0.4192051820728291) 0%,
+ rgba(0, 0, 0, 1) 30%
+ );
+ background: -webkit-linear-gradient(
+ 45deg,
+ rgba(0, 0, 0, 0.4192051820728291) 0%,
+ rgba(0, 0, 0, 1) 30%
+ );
+ background: linear-gradient(
+ 45deg,
+ rgba(0, 0, 0, 0.4192051820728291) 0%,
+ rgba(0, 0, 0, 1) 30%
+ );
+}
diff --git a/WEB/View/src/CSS/Main.css b/WEB/View/src/CSS/Main.css
index 8d74e8ec..681984ae 100644
--- a/WEB/View/src/CSS/Main.css
+++ b/WEB/View/src/CSS/Main.css
@@ -14,7 +14,6 @@ body {
min-height: 100vh;
font-family: "Equinox", sans-serif;
color: white;
- scroll-behavior: smooth;
height: 100vh;
background-image: url("../../assets/img/ImgMain2.png");
background-position: center center;
diff --git a/WEB/View/src/pages/Admin/Admin.html b/WEB/View/src/pages/Admin/Admin.html
new file mode 100644
index 00000000..93b0667d
--- /dev/null
+++ b/WEB/View/src/pages/Admin/Admin.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+ Admin Dashboard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ordre
+
+
+
Nom Énigme
+
+
+
+
+
+
+
1
+
+
+
Énigme 1
+
+
+
+
+
+
+
+
+
+
+
+
+
Énigmes Multi
+
+
+
+
+
+
+
+
+
Ordre
+
+
+
Nom Énigme
+
+
+
+
+
+
+
1
+
+
+
Énigme 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WEB/View/src/pages/Main.php b/WEB/View/src/pages/Main.php
index f2fe2d6d..a9e170ec 100644
--- a/WEB/View/src/pages/Main.php
+++ b/WEB/View/src/pages/Main.php
@@ -148,25 +148,28 @@
-
+
Scripted
@@ -183,7 +186,7 @@
?>
id="btn-2">
-