Как вы используете CustomRoomData на Appwarps с cocos2d-x
Я только начал писать код в Appwarps, и у меня возникла проблема. У меня есть вестибюль с живыми комнатами, но я действительно не хочу показывать комнаты для матчей, которые уже начались. Я подумал, что буду использовать
void Client::setCustomRoomData(std::string roomId, std::string customData)
Но у меня есть некоторые сомнения относительно того, как его использовать. Как только игра начнется, я планирую отправить
SetCustomRoomData(roomId, "Closed");
уведомить сервер о том, что открытая рассадка закрыта. Однако, когда я проверяю свойства комнаты на другом устройстве, когда оно вызывает
void CCAppwarpDelegate::onGetLiveRoomInfoDone(AppWarp::liveroom revent)
{
CCLog("CustomData=%s",revent.customData.c_str());
...
возвращается пустым. Что мне здесь не хватает? Помимо того, что код не работает, я действительно задаюсь вопросом, что я не понимаю механику свойств. Как у вас есть несколько пользовательских свойств, так как вы не назначаете ему какой-либо индекс... или у комнаты есть только одно пользовательское свойство в любой момент времени?
1 ответ
Вам не нужно использовать customData и вместо этого использовать только свойства комнаты. Свойства комнаты - это набор пар ключ / значение, которые можно связать с комнатой.
Я рекомендую вам прочитать следующую ссылку http://appwarp.shephertz.com/game-development-center/matchmaking-basic-concept/
Таким образом, поток выглядит следующим образом -
сначала вы создаете комнату с помощью API createRoom и передаете словарь свойств, содержащий <"closed", "false">.
Затем, когда игра активна, вы используете API updateRoomProperties для комнаты и передаете <"closed", "true"> в API.
Затем, когда вы хотите показать список, вы должны использовать getRoomWithProperties и передать <"closed", "false">. Это даст вам список комнат, которые еще не "закрыты".