2014-10-04 100 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