我的逻辑是第一个创造游戏的玩家轮到他了。第二个玩家轮到他并以完成()结束比赛。
Games.TurnBasedMultiplayer.finishMatch(getApiClient(), mMatch.getMatchId(),
mTurnData.persist(), creatorResult, opponentResult)
.setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
@Override
public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
processResult(result);
}
});
第一个用户现在可以在Play游戏内置收件箱中获得现在轮到他的状态。
match.getStatus() == MATCH_STATUS_COMPLETE
但是match.getTurnStatus()不是MATCH_TURN_STATUS_COMPLETE
我如何真正结束游戏?在玩家2完成游戏后,第一个用户应该看到胜利者。
示例代码假定必须为所有玩家调用结束。这是唯一可行的方法吗?玩家一获得通知,随着游戏结束,轮到他了。这太刺激了。
// Note that in this state, you must still call "Finish" yourself,
// so we allow this to continue.
showWarning("Complete!",
"This game is over; someone finished it! You can only finish it now.");
由于
答案 0 :(得分:0)
是的,我认为是一个错误!
我找到了解决方法:
您可以检查状态是否为MATCH_COMPLETED,并为onTurnBasedMatchReceived上的第一个用户调用finishMatch!
此解决方法将MATCH_TURN_STATUS设置为完成,第一个用户看到匹配完成且结果正确。
像这样:
@Override
public void onTurnBasedMatchReceived(TurnBasedMatch match) {
Toast.makeText(this, "A match was updated.", TOAST_DELAY).show();
if (match.getStatus()==2){
Games.TurnBasedMultiplayer.finishMatch(mGoogleApiClient, mMatch.getMatchId())
.setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
@Override
public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
processResult(result);
}
});
}
int 2是MATCH_STATUS_COMPLETED。 这项工作对我有好处,但只是一种解决方法,我向谷歌发送一个错误报告... 你可以在这里看到它: https://code.google.com/p/play-games-platform/issues/detail?id=191&thanks=191&ts=1414438242