这是我的finishTurnBasedGame()函数,当第二个玩家轮到他时,我正在运行它。
public void finishTurnBasedGame(TurnBasedMatch mMatch){
showSpinner();
Games.TurnBasedMultiplayer.finishMatch(mHelper.getApiClient(), mMatch.getMatchId())
.setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
@Override
public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
processResult(result);
}
});
isTurnBasedGameComplete = false;
isDoingTurn = false;
setViewVisibility();
}
这是我从Logcats得到的错误。没有完成并转回第一名球员。
E / TurnBasedAgent:未能完成匹配:null
W / TurnBasedAgent:{“code”:409,“errors”:[{“message”:“播放器的无效操作106811846324577577566.原因:首次调用Finish必须由待处理的播放器。”,“domain”:“全球”, “理由”: “InvalidParticipantState”}]}
不知道这样做的正确方法是什么,但基本上我想要的是一旦第二个玩家轮到他,游戏应该以结果结束。如果没有必要,我不希望转牌再次回到第一名球员。
答案 0 :(得分:0)
有两种方法可以做到:
当您为玩家2调用takeTurn时,请将玩家2指定为下一个参与者。这样玩家2仍然可以转弯,然后你可以调用finishMatch。
请勿为播放器2调用takeTurn。而是调用包含匹配数据和参与者结果的finishMatch方法:
finishMatch(GoogleApiClient apiClient, String matchId, byte[] matchData, List<ParticipantResult> results).
这将更新两个玩家设备上的匹配数据并完成匹配。