public GameResult SetBoardValue(string gameId, BoardMove move) { GameInstance instance = GetGame(gameId); if (instance != null) { if (instance.Config.InitBoard[move.Row, move.Column] == 0) { bool isValueValid = true; // maybe check for the correct value if (instance.Config.EnableAssistMode) { List <int> possibleValues = GetPossibleValuesForRowCol(instance.Status.CurrentBoard.Board, move.Row, move.Column); isValueValid = possibleValues.Contains(move.Value); } if (isValueValid) { instance.Status.CurrentBoard.Board[move.Row, move.Column] = move.Value; instance.Status.LastMove = move; //check if board is finished if (instance.Status.CurrentBoard.Board == ShowFinishedBoard(gameId).Board) { instance.Status.GameCompleted = BoardsAreEqual(instance.Status.CurrentBoard.Board, instance.Config.CompletedBoard); } //UpdateCloudGameStatus(instance.Status, gameId).Wait(); return(new GameResult { Result = true, Error = SudokuErrorEnum.OK }); } else { return(new GameResult { Result = false, Error = SudokuErrorEnum.InvalidMove, ErrorDescription = "Value is not a valid value" }); } } else { return(new GameResult { Result = false, Error = SudokuErrorEnum.InitialBoardValueCannotChange }); } } else { //make sure a copy of the board is filled, not actual board return(new GameResult { Error = SudokuErrorEnum.InvalidGameID, ErrorDescription = string.Format("No game found with gameID {0}", gameId) }); } }
public PossibleBoardValues GetPossibleBoardValues(string gameId, BoardMove pos) { GameInstance instance = GetGame(gameId); if (instance != null) { return(new PossibleBoardValues { Error = SudokuErrorEnum.OK, PossibleValues = GetPossibleValuesForRowCol(instance.Status.CurrentBoard.Board, pos.Row, pos.Column) }); } else { //make sure a copy of the board is filled, not actual board return(new PossibleBoardValues { Error = SudokuErrorEnum.InvalidGameID, ErrorDescription = string.Format("No game found with gameID {0}", gameId) }); } }