2014-10-25 2 views
0

제 논리가 처음으로 게임을 만들고 돌아서는 순간입니다. 두 번째 플레이어는 자신의 턴을 끝내고 finish()로 경기를 마칩니다.턴 기반 멀티 플레이 게임이 끝나지 않았습니다.

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

네 버그라고 생각합니다!

당신은 상태가 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입니다. 이 기능은 나에게 도움이되지만 해결 방법 일 뿐이므로 Google에 버그 신고서를 보내드립니다 ... 여기에서 볼 수 있습니다 : https://code.google.com/p/play-games-platform/issues/detail?id=191&thanks=191&ts=1414438242

관련 문제