예제 #1
0
        void UpdateJoiningSession()
        {
            VNet.Inst.m_availableSessions.RemoveStaleSessions();
            if (m_sessionUID == VNetCommon.NET_SESSION_INVALID_UID)
            {
                return;
            }

            // Potentially check for timeout
            m_attemptingToJoinTimer -= VNetTimer.Inst.GetFrameTimeFloat();
            if (m_attemptingToJoinTimer > 0)
            {
                return;
            }
            m_attemptingToJoinTimer = VNetCommon.NET_CLIENT_CONNECTION_TIME;
            if (m_attemptingToJoinSession == null)
            {
                return;
            }

            // send a message to join
            VNetMessageJoinSession jsm = new VNetMessageJoinSession();

            jsm.sessionUID = m_attemptingToJoinSession.sessionUID;
            jsm.role       = m_attemptingToJoinRole;
            VNetPlatform.FillLocalUsername(ref jsm.userName);

            // Send
            VNet.Inst.SendToGlobal(jsm);
        }
예제 #2
0
        void UpdateLookingForClients()
        {
            // see if we should send a message
            m_lookingForClientsTimer -= VNetTimer.Inst.GetFrameTimeFloat();
            if (m_lookingForClientsTimer > 0.0f)
            {
                return;
            }

            m_lookingForClientsTimer = VNetCommon.NET_HOST_LOBBY_SEND_TIME;

            // Send out a game message
            VNetMessageSessionAvailable session = new VNetMessageSessionAvailable();

            session.UID = VNetSession.Inst.GetSessionUID();
            session.sessionAvaliable = 1;
            session.host             = new VNetSimpleClientData();
            session.host.active      = 1;
            session.host.uid         = VNet.Inst.GetUID();
            session.host.ip          = null;
            session.host.port        = 0;
            session.host.role        = m_hostRole;
            VNetPlatform.FillLocalUsername(ref session.host.name);

            session.numClients = (SByte)VNetSession.Inst.GetNumConnectedClients();

            int i = 0;

            foreach (VNetClient client in VNetSession.Inst.m_clientsByUID.Values)
            {
                session.client[i]        = new VNetLib.VNetSimpleClientData();
                session.client[i].active = 0;
                if (client.GetIsActive())
                {
                    session.client[i].active = 1;
                    session.client[i].ip     = client.GetIP();
                    session.client[i].port   = client.GetPort();
                    session.client[i].name   = client.GetName();
                    session.client[i].role   = client.GetRole();
                }
            }

            VNet.Inst.SendToGlobal(session);
        }