Exemplo n.º 1
0
        public void UpdateData(VNetMessageSessionAvailable netMessage)
        {
            host      = VNetSimpleClientData.ComponentCopy(netMessage.host);
            host.ip   = netMessage._packet.IP_Port.Address;
            host.port = netMessage._packet.IP_Port.Port;

            numClients = netMessage.numClients;

            for (int i = 0; i < numClients; i++)
            {
                clients[i] = VNetSimpleClientData.ComponentCopy(netMessage.client[i]);
            }

            sessionUID     = netMessage.UID;
            discoveredTime = VNetTimer.Inst.GetSystemTimeNow();
        }
Exemplo n.º 2
0
        public override VNetMessage Clone()
        {
            VNetMessageSessionAvailable clone = (VNetMessageSessionAvailable)base.Clone();

            clone.UID = UID;
            clone.sessionAvaliable = sessionAvaliable;
            clone.numClients       = numClients;

            // copy client data
            clone.host = VNetSimpleClientData.ComponentCopy(host);
            for (int i = 0; i < clone.client.Length; i++)
            {
                clone.client[i] = VNetSimpleClientData.ComponentCopy(client[i]);
            }

            return(clone);
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        public void AddOrUpdateSession(VNetMessageSessionAvailable session)
        {
            if (VNetSession.Inst.GetSessionState() == VNetSessionState.InSession)
            {
                return;
            }

            // Not found
            if (m_openSessions.ContainsKey(session.UID) == false)
            {
                VNetOpenSession newSession = new VNetOpenSession();
                newSession.UpdateData(session);
                m_openSessions.Add(session.UID, newSession);
            }
            else
            {
                m_openSessions[session.UID].UpdateData(session);
            }
        }