IOS Photon Cloud SDK getRoomList功能不起作用

时间:2013-11-23 16:16:01

标签: ios cloud photon

我正在开发具有在线游戏模式的cocos2d-x游戏。 由Photon Cloud SDK(http://www.exitgames.com)设计和实现的在线游戏。 我只实现了ios版本,但它不起作用。 我实施的代码是打击。

void NetworkLogic :: opJoinRandomRoom() {

ExitGames::Common::JVector<ExitGames::LoadBalancing::Room> roomList;
roomList = mLoadBalancingClient.getRoomList();

int count = roomList.getSize();
CCLog("Room Count = %d", count);
if(count == 0)
{

    this->opCreateRoom();

}else{

    mLoadBalancingClient.opJoinRandomRoom();

}

}

void NetworkLogic :: update(float dt) {

this->run();

}

void NetworkLogic :: run(void) {

if(mLastInput == INPUT_EXIT && mStateAccessor.getState() != STATE_DISCONNECTING && mStateAccessor.getState() != STATE_DISCONNECTED)
{
    disconnect();
    mStateAccessor.setState(STATE_DISCONNECTING);
}
else
{
    State state = mStateAccessor.getState();
    switch(state)
    {
    case STATE_INITIALIZED:
        connect();
        mStateAccessor.setState(STATE_CONNECTING);
        break;
    case STATE_CONNECTING:
        break; // wait for callback
    case STATE_CONNECTED:
        {
            ExitGames::Common::JVector<ExitGames::LoadBalancing::Room> roomList;
            roomList = mLoadBalancingClient.getRoomList();

            int count = roomList.getSize();
            ExitGames::Common::JString tmp;
            tmp = count;
            EGLOG(ExitGames::Common::DebugLevel::INFO, tmp);
            CCLog("Room count in Room = %d", count);
            switch(mLastInput)
            {

                case INPUT_CREATE_GAME: // create Game
                    opCreateRoom();
                    break;
                case INPUT_JOIN_RANDOM_GAME: // join Game
                    opJoinRandomRoom();
                    mStateAccessor.setState(STATE_JOINING);
                    break;
                default: // no or illegal input -> stay waiting for legal input
                    break;
            }
            break;
        }
    case STATE_JOINING:
        break; // wait for callback
    case STATE_JOINED:
        switch(mLastInput)
        {
        case INPUT_LEAVE_GAME: // leave Game
            mLoadBalancingClient.opLeaveRoom();
            mStateAccessor.setState(STATE_LEAVING);
            break;
        default: // no or illegal input -> stay waiting for legal input
            break;
        }
        break;
    case STATE_LEAVING:
        break; // wait for callback
    case STATE_LEFT:
        mStateAccessor.setState(STATE_CONNECTED);
        break;
    case STATE_DISCONNECTING:
        break; // wait for callback
    default:
        break;
    }
}
mLastInput = INPUT_NON;
mLoadBalancingClient.service();

} 首先我运行一个应用程序然后getRoomList函数返回0值。 在第一个房间创建并运行第二个应用程序后,它也返回getRoomList函数0。 请帮我。

1 个答案:

答案 0 :(得分:0)

我刚刚使用了您在问题中提供的代码,并将其复制到了Photon C ++ Client SDK的另外版本3.2.2.0版本的演示中的相应位置(并删除了两个CCLog()行让它在没有cocos2d-x的情况下编译,它对我来说效果很好: 演示打印0表示房间列表的大小,直到我让一个客户创建一个房间。之后另一个客户打印1。