diff --git a/WEB/Config/Autoload.php b/WEB/Config/Autoload.php index 2a4ecab4..84a15930 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/','Controller/','Metier/', 'Factory/'); foreach ($dir as $d){ $file=$rep.$d.$filename; if (file_exists($file)) 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/src/CSS/Admin2.css b/WEB/View/src/CSS/Admin2.css index 45b14011..f8936395 100644 --- a/WEB/View/src/CSS/Admin2.css +++ b/WEB/View/src/CSS/Admin2.css @@ -16,17 +16,42 @@ body { background-color: #111219; } - li { display: inline; width: 225px; } +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: Equinox; +} + +h6{ + 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% ); + 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; @@ -50,4 +75,48 @@ li { 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: 90%; + overflow-y: scroll; +} + +.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/pages/Admin/Admin.html b/WEB/View/src/pages/Admin/Admin.html index fc3633a5..43d8176b 100644 --- a/WEB/View/src/pages/Admin/Admin.html +++ b/WEB/View/src/pages/Admin/Admin.html @@ -34,18 +34,18 @@ element.parentElement.classList.add("current"); element.classList.remove("nav-button"); element.classList.add("currentText"); - } -