private ChessData.ChessMove ParseMove(string json) { var parsed = JSON.Parse(json); var pieceType = (ChessData.ChessPieceType) int.Parse(parsed["chess_piece_type"]); var isCapture = bool.Parse(parsed["is_capture"]); var isPromotioToQueen = bool.Parse(parsed["is_promotion_to_queen"]); var drawOfferExtended = bool.Parse(parsed["draw_offer_extended"]); var isCheck = bool.Parse(parsed["is_check"]); var isCheckMate = bool.Parse(parsed["is_check_mate"]); var kingsideCastle = bool.Parse(parsed["kingsideCastle"]); var queensideCastle = bool.Parse(parsed["queenside_castle"]); var fromRow = int.Parse(parsed["from"]["row"]); var fromColumn = int.Parse(parsed["from"]["column"]); var fromCoord = new ChessData.Coordinate(fromRow, fromColumn); var toRow = int.Parse(parsed["to"]["row"]); var toColumn = int.Parse(parsed["to"]["column"]); var toCoord = new ChessData.Coordinate(toRow, toColumn); var move = new ChessData.ChessMove(fromCoord, toCoord, pieceType, isCapture, isPromotioToQueen, drawOfferExtended, isCheck, isCheckMate, kingsideCastle, queensideCastle); return(move); }
public bool TryApplyMove(ChessData.ChessMove newMove) { var request = new Dictionary <string, string>(); request.Add("from_row", newMove.From.Row.ToString()); request.Add("to_row", newMove.To.Row.ToString()); request.Add("from_column", newMove.From.Column.ToString()); request.Add("to_column", newMove.To.Column.ToString()); request.Add("chess_piece_type", ((int)newMove.PieceType).ToString()); request.Add("is_capture", newMove.IsCapture.ToString()); request.Add("is_promotion_to_queen", newMove.IsPromotionToQueen.ToString()); request.Add("draw_offer_extended", newMove.DrawOfferExtended.ToString()); request.Add("is_check", newMove.IsCheck.ToString()); request.Add("is_check_mate", newMove.IsCheckMate.ToString()); request.Add("kingside_castle", newMove.KingsideCastle.ToString()); request.Add("queenside_castle", newMove.QueensideCastle.ToString()); var status = bool.Parse(GetResponse("try_apply_move", request)); if (status) { PreviousMove = newMove; } return(status); }