Как правильно отменить многопользовательский матч в реальном времени?
Как правильно отменить многопользовательский матч в реальном времени, если пользователь отменяет матч на этапе ожидания? В настоящее время нет номера комнаты для вызова 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 минут, игра начнется!
Как очистить его после отмены пользователем?
1 ответ
Решение
onActivityResult
дополнительная информация о номере (даже если она отменена):
Room room = intent.getExtras().getParcelable(Multiplayer.EXTRA_ROOM);
Тогда вам просто нужно покинуть комнату:
Games.RealTimeMultiplayer.leave(getApiClient(), this, room.getRoomId());