如果用户在等候室阶段取消比赛,如何正确取消实时多人比赛?目前,没有“房间ID”可用来调用leave
API。
首先创建一个快速游戏:
Bundle am = RoomConfig.createAutoMatchCriteria(1, 1, 0);
RoomConfig.Builder roomConfigBuilder = configRoom();
roomConfigBuilder.setAutoMatchCriteria(am);
RoomConfig roomConfig = roomConfigBuilder.build();
Games.RealTimeMultiplayer.create(getApiClient(), roomConfig);
然后触发
onRoomCreated
并显示一个等候室:Intent i = Games.RealTimeMultiplayer.getWaitingRoomIntent(getApiClient(), room, Integer.MAX_VALUE);
startActivityForResult(i, RC_WAITING_ROOM);
之后,用户按回去,取消匹配。然后,用
onActivityResult
和RC_WAITING_ROOM
触发responseCode == Activity.RESULT_CANCELED
。问题在于比赛仍然在那里,正在等待其他玩家。如果有人在10分钟后也开始快速游戏,游戏将开始!
用户取消后如何清理?
最佳答案
onActivityResult
Extra具有房间信息(即使取消)。
Room room = intent.getExtras().getParcelable(Multiplayer.EXTRA_ROOM);
然后,您只需要离开房间:
Games.RealTimeMultiplayer.leave(getApiClient(), this, room.getRoomId());