function mobile_movehmm($config) { if ($_GET['gameid'] != "" && $_GET['from'] != "" && $_GET['to'] != "") { //Instantiate theCR3DCQuery Class $oR3DCQuery = new CR3DCQuery($config); $xsid = $_GET['sid']; $session = base64_decode($xsid); list($uniq, $player_id) = preg_split("/\\|/", $session); $movefrom = $_GET['from']; $moveto = $_GET['to']; $bmove_error = false; //Create Move String $movestr = $movefrom . "," . $moveto; $movestr2 = $movefrom . "-" . $moveto; // get the fen for the game $fen = $oR3DCQuery->GetHackedFEN($xsid, $_GET['gameid']); //$fen3 = $oR3DCQuery->GetHackedFEN($xsid, $_GET['gameid']); $bturn = $oR3DCQuery->IsPlayersTurn($config, $player_id, $_GET['gameid']); echo "FEN: {$fen}<br/>"; ChessHelper::load_chess_game($_GET['gameid']); $turn = $fen = ChessHelper::$CB->GetFENForCurrentPosition(); echo "FEN: {$fen}<br/>"; if ($bturn) { //check to see if the move is valid if (is_Move_legal($fen, $movestr2)) { $oR3DCQuery->CurrentGameMovePiece($config, $_GET['gameid'], $xsid, $player_id, $movestr); $initiator = ""; $w_player_id = ""; $b_player_id = ""; $status = ""; $completion_status = ""; $start_time = ""; $next_move = ""; $oR3DCQuery->GetGameInfoByRef($config, $_GET['gameid'], $initiator, $w_player_id, $b_player_id, $status, $completion_status, $start_time, $next_move); //checkmate if (get_GameState() == 1) { //if($w_player_id == $player_id){ if ($next_move == 'w') { /////////////////////////////////////////////////////////////////////// //ELO Point Calculation if ($oR3DCQuery->ELOIsActive() && $oR3DCQuery->IsGameRated($_GET['gameid'])) { $bcurpoints = $oR3DCQuery->ELOGetRating($b_player_id); $wcurpoints = $oR3DCQuery->ELOGetRating($w_player_id); //Calculate black player $bnewpoints = $oR3DCQuery->ELOCalculation($bcurpoints, $wcurpoints, 1, 1, $oR3DCQuery->GetPlayerGameCount($b_player_id)); //Calculate white player $wnewpoints = $oR3DCQuery->ELOCalculation($wcurpoints, $bcurpoints, 0, 1, $oR3DCQuery->GetPlayerGameCount($w_player_id)); //update points $oR3DCQuery->ELOUpdateRating($b_player_id, $bnewpoints); $oR3DCQuery->ELOUpdateRating($w_player_id, $wnewpoints); } /////////////////////////////////////////////////////////////////////// $oR3DCQuery->UpdateGameStatus($config, $_GET['gameid'], "C", "B"); } else { /////////////////////////////////////////////////////////////////////// //ELO Point Calculation if ($oR3DCQuery->ELOIsActive() && $oR3DCQuery->IsGameRated($_GET['gameid'])) { $bcurpoints = $oR3DCQuery->ELOGetRating($b_player_id); $wcurpoints = $oR3DCQuery->ELOGetRating($w_player_id); //Calculate black player $bnewpoints = $oR3DCQuery->ELOCalculation($bcurpoints, $wcurpoints, 0, 1, $oR3DCQuery->GetPlayerGameCount($b_player_id)); //Calculate white player $wnewpoints = $oR3DCQuery->ELOCalculation($wcurpoints, $bcurpoints, 1, 1, $oR3DCQuery->GetPlayerGameCount($w_player_id)); //update points $oR3DCQuery->ELOUpdateRating($b_player_id, $bnewpoints); $oR3DCQuery->ELOUpdateRating($w_player_id, $wnewpoints); } /////////////////////////////////////////////////////////////////////// $oR3DCQuery->UpdateGameStatus($config, $_GET['gameid'], "C", "W"); } $oR3DCQuery->CachePlayerPointsByPlayerID($b_player_id); $oR3DCQuery->CachePlayerPointsByPlayerID($w_player_id); } else { if (get_GameState() == 2) { /////////////////////////////////////////////////////////////////////// //ELO Point Calculation if ($oR3DCQuery->ELOIsActive() && $oR3DCQuery->IsGameRated($_GET['gameid'])) { $bcurpoints = $oR3DCQuery->ELOGetRating($b_player_id); $wcurpoints = $oR3DCQuery->ELOGetRating($w_player_id); //Calculate black player $bnewpoints = $oR3DCQuery->ELOCalculation($bcurpoints, $wcurpoints, 0.5, 1, $oR3DCQuery->GetPlayerGameCount($b_player_id)); //Calculate white player $wnewpoints = $oR3DCQuery->ELOCalculation($wcurpoints, $bcurpoints, 0.5, 1, $oR3DCQuery->GetPlayerGameCount($w_player_id)); //update points $oR3DCQuery->ELOUpdateRating($b_player_id, $bnewpoints); $oR3DCQuery->ELOUpdateRating($w_player_id, $wnewpoints); } /////////////////////////////////////////////////////////////////////// $oR3DCQuery->UpdateGameStatus($config, $_GET['gameid'], "C", "D"); $bmove_error = false; $oR3DCQuery->CachePlayerPointsByPlayerID($b_player_id); $oR3DCQuery->CachePlayerPointsByPlayerID($w_player_id); } } } else { $bmove_error = true; } } else { $bmove_error = true; } $oR3DCQuery->Close(); unset($oR3DCQuery); } else { $bmove_error = true; } if ($bmove_error) { echo "<RESPONSE>\n"; echo "<MOVE>false</MOVE>\n"; echo "</RESPONSE>\n"; } else { echo "<RESPONSE>\n"; echo "<MOVE>true</MOVE>\n"; mobile_get_full_game_update(); echo "<LASTMOVE>" . ChessHelper::get_last_move() . "</LASTMOVE>"; echo "</RESPONSE>\n"; } }
// Check if the game is not playable by the viewer if (!$oR3DCQuery->IsGameControlsViewableByPlayer($gid, $_SESSION['id'])) { header('Location: ./chess_members.php'); } // Make move if ($movefrom != "" && $moveto != "" && $cmdMove != "") { //Create Move String $movestr = $movefrom . "," . $moveto; $movestr2 = $movefrom . "-" . $moveto; // get the fen for the game $fen = $oR3DCQuery->GetHackedFEN($_SESSION['sid'], $gid); //$fen3 = $oR3DCQuery->GetHackedFEN($_SESSION['sid'], $gid); $bturn = $oR3DCQuery->IsPlayersTurn($config, $_SESSION['id'], $gid); if ($bturn) { //check to see if the move is valid if (is_Move_legal($fen, $movestr2)) { $_SESSION['GAME_MOVE'] = $movestr; // if ! promotion screen if (!($move_promotion_figur && strlen($movestr2) == 5)) { $oR3DCQuery->CurrentGameMovePiece($config, $gid, $_SESSION['sid'], $_SESSION['id'], $movestr); $initiator = ""; $w_player_id = ""; $b_player_id = ""; $status = ""; $completion_status = ""; $start_time = ""; $next_move = ""; $oR3DCQuery->GetGameInfoByRef($config, $gid, $initiator, $w_player_id, $b_player_id, $status, $completion_status, $start_time, $next_move); //checkmate if (get_GameState() == 1) { //if($w_player_id == $_SESSION['id']){