我正在尝试实现一个基于回合制的多人游戏,我有90%的工作,但我从getTurnStatus()得到一个奇怪的结果。
似乎总是返回MATCH_TURN_STATUS_THEIR_TURN。如果我退出游戏线程活动并返回,它只会检测到它是玩家的回合。
我有一个基于SkeletonActivity示例的MainActivity执行播放器匹配等...
要检查我打电话的状态
在游戏线程中
int turnStatus = MainActivity.mMatch.getTurnStatus(); //返回错误的结果
在MainActivity中
public static TurnBasedMatch mMatch;
Games.TurnBasedMultiplayer.takeTurn(getApiClient(), mMatch.getMatchId(),
mTurnData.persist(), nextParticipantId).setResultCallback(
new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
@Override
public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
processResult(result);
}
});
private void processResult(TurnBasedMultiplayer.InitiateMatchResult result) {
TurnBasedMatch match = result.getMatch();
mMatch = result.getMatch();
dismissSpinner();
if (!checkStatusCode(match, result.getStatus().getStatusCode())) {
return;
}
if (match.getData() != null) {
updateMatch(match);
return;
}
startMatch(match);
}
有什么想法吗?
我也可以通过我的GameThread看到
String nameMatch = MainActivity.mMatch.getMatchId();
int numberMatch = MainActivity.mMatch.getMatchNumber();
Log.d("updateMultiWait","nameMatch = "+nameMatch);
Log.d("updateMultiWait","numberMatch = "+numberMatch);
在Logcat中显示
nameMatch = ChEKCQjf7I234789234WieaM0dnEzuQB numberMatch = 1 MATCH_TURN_STATUS_THEIR_TURN
答案 0 :(得分:0)
确定。我想出来了,我发布这个以防其他人有同样的问题。 Google IMO没有很好地记录这一点。
您不仅要创建一个侦听器,还必须注册它才能接收更新。
我这样做了如下:
Games.TurnBasedMultiplayer.registerMatchUpdateListener(MainActivity.mHelper.getApiClient(), this);
现在我在另一位玩家转弯时得到更新。然后,您需要使用将在相关侦听器进程中返回的更新匹配数据,并使用该数据更新转弯数据。然后当你轮到你时,你将保留新的转弯数据。冲洗并重复。