2014-10-04 95 views
3

我創建了一個實時多人遊戲與兩個其他玩家(都是直接邀請)。這裏是我是怎麼做的:onDisconnectedFromRoom()當被邀請的玩家離開遊戲時被調用

創造的球員選擇意圖

Intent intent = Games.RealTimeMultiplayer.getSelectOpponentsIntent(getApiClient(), 1, MAX_PLAYERS); 
startActivityForResult(intent, REQ_GOOGLE_INVITE); 

onActivityResult()執行此:

private void onPlayersInvited(Intent data) { 
    // get the invitee list 
    final ArrayList<String> invitees = data.getStringArrayListExtra(Games.EXTRA_PLAYER_IDS); 

    Bundle autoMatchCriteria = RoomConfig.createAutoMatchCriteria(1, 5, 0); 

    // create the activeRoom and specify a variant if appropriate 
    RoomConfig.Builder roomConfigBuilder = makeBasicRoomConfigBuilder(); 
    roomConfigBuilder.addPlayersToInvite(invitees); 
    roomConfigBuilder.setAutoMatchCriteria(autoMatchCriteria); 
    RoomConfig roomConfig = roomConfigBuilder.build(); 
    Games.RealTimeMultiplayer.create(getApiClient(), roomConfig); 

    // prevent screen from sleeping during handshake 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
} 


private RoomConfig.Builder makeBasicRoomConfigBuilder() { 
    return RoomConfig.builder(this).setMessageReceivedListener(this).setRoomStatusUpdateListener(this).setSocketCommunicationEnabled(true) 
      .setVariant(subcategory.getId().intValue()); 
} 

我的遊戲開始在所有3個設備,但當我拔下從一臺受邀設備上的遊戲中,然後在主設備上調用onDisconnectedFromRoom(),所以我猜遊戲會自動取消,這很讓人傷心,因爲我希望繼續比賽,直到球員出場所需的最少人數。

有沒有辦法阻止?

回答

1

奇怪的行爲是由AutomatchCryteria造成的。我刪除它,現在它表現不錯

2

在onDisconnectedFromRoom()回調函數中,您將獲得Room對象。您可以通過致電

int count = room.getParticipantIds().size(); 

查看有多少玩家待在房間裏。如果玩家超過最小限度,則繼續遊戲。

+0

但是,即使onDisconnectedFromRoom()被調用,這個用戶會保持從其他玩家geting消息? – 2014-10-08 10:38:10

+0

您可以輕鬆地進行測試。嘗試在調用onDisconnectedFromRoom()之後嘗試發送數據。 – Nik 2014-10-08 10:58:00

+0

你是否從RoomStatusUpdateListener實現了其他方法? – Nik 2014-10-08 10:59:05