<?
//game.status -> 0 = attente; 1 = en cours
//joueur.status -> 0 = en attente; 1 = En attente de jouer ; 2 = perdu


//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//pas possible de joindre une partie si elle a commencé
//au reload d une partie, il remet des lignes, voir prk
//voir la piece suivante
//mettre des couleurs

	include('config.php');
	mysql_connect($DBhost,$DBuser,$DBpass);
	mysql_select_db($database);

	if (!isset($HTTP_GET_VARS['cmd']))
		$HTTP_GET_VARS['cmd'] = 'tagada';
	
	switch($HTTP_GET_VARS['cmd'])
	{
		case 'info':
			switch($HTTP_GET_VARS['action'])
			{
				case 'new_game':
					//on met les infos à 0
					mysql_query("UPDATE game SET  status='0', date='".time()."', winner='0' WHERE id='$HTTP_GET_VARS[game]';");
					mysql_query("UPDATE joueurs SET status='0' WHERE id='HTTP_GET_VARS[joueur]';");
				
				//le jeu est en attente de validation des joueurs
				case 'wait':
					//on update les infos dans la bdd concernant l'attente
					mysql_query("UPDATE joueurs SET  status='$HTTP_GET_VARS[status]' WHERE id='$HTTP_GET_VARS[joueur]';");
				
					//on affiche si le joueur est ready ou non
					//on détermine si tous les joueurs sont ready ou non
					$NbReady = 0;
					$NbJoueur = 0;
					$ReqJoueurs = mysql_query("SELECT nom, status FROM joueurs WHERE game='$HTTP_GET_VARS[game]';");
					while ($RowJoueurs = mysql_fetch_array($ReqJoueurs))
					{
						echo "$RowJoueurs[nom] is ";
						if ($RowJoueurs['status'] == 1)
						{
							$NbReady = $NbReady + 1;
							echo "waiting for playing<br>";
						}
						else
							echo "Not ready<br>";
						$NbJoueur = $NbJoueur + 1;
					}

					//on matte si le joueur est ready ou non
					?>
					<input name='attente' value='0' style = 'visibility:hidden'><br>
					<script language='javascript'>
					if (parent.tetris.attente.value != 'Lets go')
						attente.value = '1';

					setTimeout('Reload()',1000);

					function Reload()
					{
						window.location.href = "index.php?cmd=info&game=<?=$HTTP_GET_VARS['game']?>&joueur=<?=$HTTP_GET_VARS['joueur']?>&status=" + attente.value +"&action=wait";
					}

					function Go()
					{
						parent.tetris.GameStatus = 1;
						window.location.href = "index.php?cmd=info&game=<?=$HTTP_GET_VARS['game']?>&joueur=<?=$HTTP_GET_VARS['joueur']?>&action=go&rajout=0";
					}
					</script>
					<?
					//on matte les infos du gamez
					$ReqGame = mysql_query("SELECT max_joueur, owner, status FROM game WHERE id='$HTTP_GET_VARS[game]';");
					$RowGame = mysql_fetch_array($ReqGame);
					echo "Nb Joueur : $NbJoueur - Max Joueur : $RowGame[max_joueur]<br>";

					if (($NbJoueur == $NbReady) && ($RowGame['owner'] == $HTTP_GET_VARS['joueur']))
						echo "<input type='submit' name='go' value='Lancement du jeu' onclick='Go()'><br>";

					if ($RowGame['status'] == 1)
					{
						?>
						<script language='JavaScript'>
							parent.tetris.GameStatus = 1;
							window.location.href = "index.php?cmd=info&game=<?=$HTTP_GET_VARS['game']?>&joueur=<?=$HTTP_GET_VARS['joueur']?>&action=gaming&rajout=0";
						</script>
						<?
					}
				break;

				//on initialise la partie
				case 'go':
					//on update les infos concernant la partie en cours
					mysql_query("UPDATE game SET  status='1', date='".time()."' WHERE id='$HTTP_GET_VARS[game]';");

				//on joue la partie
				case 'gaming':
					//on rajoute les informatiosn du nombre de ligne à rajouter aux autres dans la table
					mysql_query("UPDATE joueurs SET rajout='$HTTP_GET_VARS[rajout]' WHERE id ='$HTTP_GET_VARS[joueur]';");

					//on récupère les informations du nombre de ligne à SE rajouter
					$ReqJoueur = mysql_query("SELECT SUM(rajout) AS NbLigne FROM joueurs WHERE game='$HTTP_GET_VARS[game]';");
					$RowJoueur = mysql_fetch_array($ReqJoueur);

					//on regarde combien de joueur sont vivants et combien de joueurs sont mort et si on est pas le dernier vivant
					$ReqJoueur = mysql_query("SELECT Count(status) as NbJoueurs, SUM(status) as SommeStatus FROM joueurs WHERE game='$HTTP_GET_VARS[game]';");
					$RowJoueur2 = mysql_fetch_array($ReqJoueur);

					
					echo "NbJoueurs = $RowJoueur2[NbJoueurs] - SommeStatus = $RowJoueur2[SommeStatus]<bR>";

					
					if (($RowJoueur2['NbJoueurs'] * 2 - 1) == ($RowJoueur2['SommeStatus'] ))
					{
						//le joueur a gagné la partie
						mysql_query("UPDATE game SET winner='$HTTP_GET_VARS[joueur]' WHERE id ='$HTTP_GET_VARS[game]';");
						?>
						<script language='JavaScript'>
							
							parent.tetris.GameStatus = 2;
							window.location.href =  "index.php?cmd=info&game=<?=$HTTP_GET_VARS['game']?>&joueur=<?=$HTTP_GET_VARS['joueur']?>&action=result";
						</script>
						<?
						exit();
					}
					
					?>
					<script language='JavaScript'>
					parent.tetris.focus();
					setTimeout('Refresh()',2000);

					//on regarde si le joueur a perdu
					if (parent.tetris.GameStatus == 2)	//si oui, on arrete le jeu du joueur qui a perdu
						window.location.href = "index.php?cmd=info&game=<?=$HTTP_GET_VARS['game']?>&joueur=<?=$HTTP_GET_VARS['joueur']?>&action=lost";

					function Refresh()
					{
						//on doit lire le nombre de ligne des autres qui faut rajouter pour soit et on le pass en GET
						window.location.href = "index.php?cmd=info&game=<?=$HTTP_GET_VARS['game']?>&joueur=<?=$HTTP_GET_VARS['joueur']?>&action=gaming&rajout=" + parent.tetris.NbLigneARajouterAutres;
					}
					parent.tetris.NbLigneARajouterSoit = <?=$RowJoueur['NbLigne']?> - parent.tetris.NbLigneARajouterAutres;
					</script>
					<?

					echo "Rajout aux autres : $HTTP_GET_VARS[rajout]<br>";
					echo "Rajout Soit : $RowJoueur[NbLigne]<br>";
				break;

				case 'lost':
					//on se rajoute comme étant perdant
					mysql_query("UPDATE joueurs SET status='2' WHERE id ='$HTTP_GET_VARS[joueur]';");
					//on attend qu'il y ai un gagnant
					$ReqGame = mysql_query("SELECT winner FROM game WHERE id='$HTTP_GET_VARS[game]';");
					$RowGame = mysql_fetch_array($ReqGame);

					echo '<script language=\'JavaScript\'>';

					If ($RowGame['winner'] != 0)
						echo "window.location.href = \"index.php?cmd=info&game=$HTTP_GET_VARS[game]&joueur=$HTTP_GET_VARS[joueur]&action=result\";";
					else
					{
					?>
					setTimeout('Refresh()',2000);

					function Refresh()
					{
						window.location.href = "index.php?cmd=info&game=<?=$HTTP_GET_VARS['game']?>&joueur=<?=$HTTP_GET_VARS['joueur']?>&action=lost";
					}
					<?
					}
					echo '</script>';
				break;

				case 'result':
					//on affiche le gagnant et on demande si tout le monde veut rejouer
					echo 'Et le grand gagnant EST (roulement de tambour) : <br>';
					$ReqJoueur = mysql_query("SELECT joueurs.nom FROM joueurs WHERE joueurs.game=$HTTP_GET_VARS[game] AND joueurs.status=1;");
					$RowJoueur = mysql_fetch_array($ReqJoueur);
					echo $RowJoueur['nom'];

					//dans le cas où on veut rejouer, on relance le jeu à 0
					?>
					<br><br>
					<input type="submit" onclick="new_game()" value="c'est repartie pour un tour">
					<script language='JavaScript'>
					function new_game()
					{
						parent.tetris.location.href = 'tetris.html';
						parent.info.location.href = 'index.php?cmd=info&game=<?=$HTTP_GET_VARS['game']?>&joueur=<?=$HTTP_GET_VARS['joueur']?>&action=new_game&status=0';
					}
					</script>
					<?
				break;

			}

			echo "GameId=$HTTP_GET_VARS[game] - JoueurId=$HTTP_GET_VARS[joueur]<br>";
		break;
		
		case 'game':

			srand((float) microtime()*1000000);
			$UserId = rand(9000,9999);

			if ($HTTP_POST_VARS['action'] == 'Créer une partie')
			{
				//on rajoute la partie dans la bdd
				mysql_query("INSERT INTO game (nom, owner, max_joueur, date) VALUES ('$HTTP_POST_VARS[NomPartie]', '$UserId', '$HTTP_POST_VARS[MaxNbJoueur]', '".time()."');");
				$ReqGame = mysql_query("SELECT id FROM game WHERE owner='$UserId'");
				$RowGame = mysql_fetch_array($ReqGame);

				//on rajoute le user dans la bdd
				mysql_query("INSERT INTO joueurs (nom, game) VALUES ('$HTTP_POST_VARS[Pseudo]', '$RowGame[id]');");

				//on récupère l'id du user (mouais c'est un peu bourrin quand meme)
				$ReqJoueurs = mysql_query("SELECT id FROM joueurs WHERE nom='$HTTP_POST_VARS[Pseudo]' AND game='$RowGame[id]';");
				$RowJoueurs = mysql_fetch_array($ReqJoueurs);
				//et on le rajoute dans la table partie
				mysql_query("UPDATE game SET owner='$RowJoueurs[id]' WHERE id='$RowGame[id]';");
			}
			else
			{
				//on rajoute le user dans la bdd
				mysql_query("INSERT INTO joueurs (nom, game) VALUES ('$HTTP_POST_VARS[Pseudo]', '$HTTP_POST_VARS[Partie]');");
				$ReqJoueurs = mysql_query("SELECT id FROM joueurs WHERE nom='$HTTP_POST_VARS[Pseudo]' AND game='$HTTP_POST_VARS[Partie]';");
				$RowJoueurs = mysql_fetch_array($ReqJoueurs);
				$RowGame['id'] = $HTTP_POST_VARS['Partie'];
			}

			//on lance le gamez
			?>
				<HTML><HEAD><TITLE>jljmjkmlkjm</TITLE>
				  <META content="text/html; charset=windows-1252" http-equiv=Content-Type>
				 </HEAD>
				 <FRAMESET border=0 rows=*,145 frameBorder=1 frameSpacing=0>
				  <FRAME name="tetris" src="tetris.html">
				  <FRAME name="info" src="index.php?cmd=info&game=<?=$RowGame['id']?>&joueur=<?=$RowJoueurs['id']?>&action=wait&status=0">
				 </FRAMESET>
				</HTML>
			<?
		break;

		default:
			//on regarde si des parties sont présentes depuis + de 20mn
			$ReqGame = mysql_query("SELECT id, date FROM game;");
			while ($RowGame = mysql_fetch_array($ReqGame))
				if ((time() - $RowGame['date']) >= 20*60)
				{
					mysql_query("DELETE FROM game WHERE id=$RowGame[id]");
					mysql_query("DELETE FROM joueurs WHERE party=$RowGame[id]");
				}

			?>
			Bienvenue dans Tetris :<br>
			<form method='POST' action='index.php?cmd=game' onsubmit='return FormSoumission(this)' name='Form1'>

			<input name='Pseudo' value='MonNick'><br>
			Parties en cours :<br>
			<table border=1>
			<tr><td>Sélection de la party à rejoindre</td> <td>Nom de la partie</td> <td>Nom de l'owner</td> <td>Nombre joueur</td> <td>Maximum de joueur</td> <td>Etat de la partie</td> </tr>
			<?
				$ReqGame = mysql_query("SELECT * FROM game WHERE status=0;");
				while ($RowGame = mysql_fetch_array($ReqGame))
				{
					$ReqJoueur = mysql_query("SELECT COUNT(id) as Nb_Joueur FROM joueurs WHERE game = $RowGame[id];");
					$RowJoueur = mysql_fetch_array($ReqJoueur);
					$NbJoueur = $RowJoueur['Nb_Joueur'];
					$ReqJoueur = mysql_query("SELECT nom FROM joueurs WHERE id = $RowGame[owner];");
					$RowJoueur = mysql_fetch_array($ReqJoueur);
					echo "<tr><td>";
					if ($NbJoueur != $RowGame['max_joueur'])
						echo "<input type='radio' name='Partie' value='$RowGame[id]'>";
					else
						echo "Full";
					echo "</td> <td>$RowGame[nom]</td> <td>$RowJoueur[nom]</td> <td>$NbJoueur</td> <td>$RowGame[max_joueur]</td> <td>$RowGame[status]</td></tr>";
				}
				echo '</table>';
				echo $RowGame['NbRep'];
			?>
			<input type='submit' name='action' value='Joindre une partie'><br>
			<br>
			Création d'une nouvelle partie :<br>
			Combien de Joueur Max: <input name='MaxNbJoueur' value='5'><br>
			Nom de la partie : <input name='NomPartie' value='maparti'><br>
			<input type='submit' name='action' value='Créer une partie'>
			</form>
			<script language='JavaScript'>
			function FormSoumission(Form)
			{
				if (Form.Pseudo.value == 'MonNick')
				{
					window.alert ("Mettre son nick");
					Form.Pseudo.focus();
					return false;
				}

				return true;
			}
			</script>
			<?
	}
?>