<?php

include('backend.php');

include('../include/partie.php');
include('../include/joueur.php');
include('../include/session.php');


if( !$scMoi->exist() )
  exit();

/*
 * LANCER UNE NOUVELLE PARTIE
 */
if( isset($_GET['new']) ) {
  $db->req("UPDATE parties SET statut=0 WHERE id=".$scPartie->id.";");
  $db->req("UPDATE joueurs SET statut=0 WHERE partie_id=".$scPartie->id.";");
  exit();
}

/*
 * POSITIONNER UN MEEPLE
 */
if( isset($_GET['meeple']) ) {
  if($scPartie->statut % 2 != 1 && $scPartie->statut >= 9)
    exit();

  $meepleId = ($scPartie->statut + 1) / 2;
  $db->req("UPDATE joueurs SET position_meeple".$meepleId."=".(100 + intval($_GET['meeple']))." WHERE partie_id=".$scPartie->id." AND statut>0;");
  $db->req("UPDATE parties SET statut=(statut+1) WHERE id=".$scPartie->id.";");
  exit();
}

/*
 * POSITIONNER UN TEMPLE
 */
if( isset($_GET['temple']) ) {
  if($scPartie->statut % 2 != 0 && $scPartie->statut >= 9)
    exit();

  $templeId = $scPartie->statut / 2;
  $db->req("UPDATE joueurs SET position_temple".$templeId."=".intval($_GET['temple'])." WHERE partie_id=".$scPartie->id." AND statut>0;");
  $db->req("UPDATE parties SET statut=(statut+1) WHERE id=".$scPartie->id.";");
  exit();
}

/*
 * JOUE
 */
function compileDernierCoup($j, $tuile) {
  global $db, $scPartie;

  $dcAction = $j->dernier_coup[0];
  $dcVal = substr($j->dernier_coup, 1);

  // Pose de la tuile sur le plateau
  if($dcAction == 'c') {
    $j->plateau[ $dcVal - 1 ] = $tuile;
  }
  // Deplacement d'un meeple
  elseif($dcAction == 'm') {
    $dcMeeple = $dcVal[0];
    $dcActionType = $dcVal[1];
    $dcInfo = substr($dcVal, 2);

    // Deplacement du meeple sur une case du plateau
    if($dcActionType == 'c') {
      $caseHasPepite = substr($j->plateau[ $dcInfo - 1 ], -1);
      if($caseHasPepite == 'o' || $caseHasPepite == 'd') {
        $j->plateau[ $dcInfo - 1 ] = substr( $j->plateau[ $dcInfo - 1 ], 0, -1 );
        if($caseHasPepite == 'o') $j->or++;
        if($caseHasPepite == 'd') $j->diamant++;
      }
      $j->meeple[ $dcMeeple - 1 ] = $dcInfo;
    }
    // Deplacement du meeple sur un temple
    elseif($dcActionType == 't') {
      $templeId = 0;
      for($i = 0 ; $i < count($j->temple) ; $i++)
        if($t == $dcInfo)
          $templeId = $i;
      $j->tresor[$i] = $scPartie->gagneTresor($i);
      $j->meeple[ $dcMeeple - 1 ] = $dcInfo + 200;
    }
  }

  $db->req("UPDATE joueurs SET plateau='".$j->plateauTxt()."', tresor1='".$j->tresor[0]."', tresor2='".$j->tresor[1]."', tresor3='".$j->tresor[2]."', tresor4='".$j->tresor[3]."', pepite_diamant=".$j->diamant.", pepite_or=".$j->or.", dernier_coup='', position_meeple1=".$j->meeple[0].", position_temple1=".$j->temple[0].", position_meeple2=".$j->meeple[1].", position_temple2=".$j->temple[1].", position_meeple3=".$j->meeple[2].", position_temple3=".$j->temple[2].", position_meeple4=".$j->meeple[3].", position_temple4=".$j->temple[3]."   WHERE id=".$j->id.";");
}

function verifFinPartie($j) {
  $fin = 0;

  for($i = 0 ; $i < count($j->meeple) ; $i++)
    if($j->meeple[$i] >= 200)
      $fin++;

  if( $fin == count($j->meeple) )
    return true;

  return false;
}


if( isset($_GET['dc']) ) {
  $db->req("UPDATE joueurs SET dernier_coup='".$_GET['dc']."' WHERE id=".$scMoi->id.";");
  $scMoi->dernier_coup = $_GET['dc'];


  /*
   * SI TOUT LE MONDE A DEJA JOUE
   */
  $nbDejaJoue = 0;
  foreach($scJoueurs as $j) {
    if($j->dernier_coup != "")
      $nbDejaJoue++;
  }

  if($nbDejaJoue == count($scJoueurs)) {
    // Extrait la 1ere tuile de la pioche
    $tuile = array_shift( $scPartie->pioche );

    compileDernierCoup($scMoi, $tuile);
    foreach($scJoueurs as $j)
      compileDernierCoup($j, $tuile);

    // Verification des conditions de fin de partie
    $fin = false;

    if( count($scPartie->pioche) == 0 )
      $fin = true;

    if( verifFinPartie($scMoi) )
      $fin = true;
    foreach($scJoueurs as $j)
      if( verifFinPartie($j) )
        $fin = true;

    if($fin)
      $scPartie->statut++;


    $db->req("UPDATE parties SET statut='".$scPartie->statut."', pioche='".$scPartie->piocheTxt()."', tresor1='".$scPartie->tresor[0]."', tresor2='".$scPartie->tresor[1]."', tresor3='".$scPartie->tresor[2]."', tresor4='".$scPartie->tresor[3]."' WHERE id=".$scPartie->id.";");

  }

  exit();
}




/*
 * ENVOI LES INFOS
 */

// Affiche un tableau
function JsonTab($data) {
  $echoreturn = '[';
  for($i = 0 ; $i < count($data) ; $i++) {
    if($i > 0) $echoreturn .= ", ";
    $echoreturn .= '"'.$data[$i].'"';
  }
  $echoreturn .= ']';
  return $echoreturn;
}

// Affiche les infos d'un joueur
function JsonJoueur($j) {
  $echoreturn = '"'.$j->id.'":{';
//  $echoreturn .= '"id":'.$j->id.', ';
  $echoreturn .= '"tresor":'.JsonTab($j->tresor).', ';
  $echoreturn .= '"diamant":'.$j->diamant.', ';
  $echoreturn .= '"or":'.$j->or.', ';
  $echoreturn .= '"dernier_coup":"'.$j->dernier_coup.'", ';
  $echoreturn .= '"meeple":'.JsonTab($j->meeple).', ';
  $echoreturn .= '"temple":'.JsonTab($j->temple).', ';
  $echoreturn .= '"plateau":'.JsonTab($j->plateau);
  $echoreturn .= '}';
  return $echoreturn;
}


// Debut du JSON
//  * Partie
echo '{"statut":'.$scPartie->statut.', ';
echo '"pioche":"'.$scPartie->pioche[0].'", ';
echo '"nbpioche":'.(count($scPartie->pioche) - 1).', ';
echo '"tresor":'.JsonTab( $scPartie->nextTresor() ).', ';

//  * Joueurs
echo '"joueur":{';
echo JsonJoueur( $scMoi );
foreach($scJoueurs as $j)
  echo ', '.JsonJoueur($j);
echo '}';

echo '}';
// Fin du JSON

?>