getturnstatus()不工作

时间:2014-10-08 09:42:32

标签: multiplayer google-play-games

我正在尝试实现一个基于回合制的多人游戏,我有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

1 个答案:

答案 0 :(得分:0)

确定。我想出来了,我发布这个以防其他人有同样的问题。 Google IMO没有很好地记录这一点。

您不仅要创建一个侦听器,还必须注册它才能接收更新。

我这样做了如下:

            Games.TurnBasedMultiplayer.registerMatchUpdateListener(MainActivity.mHelper.getApiClient(), this);

现在我在另一位玩家转弯时得到更新。然后,您需要使用将在相关侦听器进程中返回的更新匹配数据,并使用该数据更新转弯数据。然后当你轮到你时,你将保留新的转弯数据。冲洗并重复。