//DELETE:
        public void SendDelete(long identityId, int gpsHash)
        {
            var msg = new DeleteMsg();

            msg.IdentityId = identityId;
            msg.Hash       = gpsHash;

            Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request);
        }
Exemple #2
0
 public void DestoryDisconnected(DeleteMsg data)
 {
     for (int i = 0; i < data.deleteID.Count; ++i)
     {
         if (listOfOldClients.ContainsKey(data.deleteID[i]))
         {
             Destroy(listOfOldClients[data.deleteID[i]]);
             listOfOldClients.Remove(data.deleteID[i]);
         }
     }
 }
        static void DeleteRequest(ref DeleteMsg msg, MyNetworkClient sender)
        {
            Dictionary <int, MyGps> gpsList;
            var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList);

            if (result)
            {
                if (gpsList.ContainsKey(msg.Hash))
                {
                    Sync.Layer.SendMessageToAllAndSelf(ref msg, MyTransportMessageEnum.Success);
                }
            }
        }
    // heart beat
    void HeatbeatCheck()
    {
        // List<String> - thie list of that contains IDs which need to be deleted.
        List <string> deleteID = new List <string>();

        foreach (KeyValuePair <string, float> dic in ClientsHeatbeatCheck)
        {
            if (Time.time - dic.Value >= 5.0f)
            {
                Debug.Log(dic.Key.ToString() + " Disconnected!");
                deleteID.Add(dic.Key);
            }
        }

        // if there is data that need to be removed
        if (deleteID.Count != 0)
        {
            // delete
            for (int i = 0; i < deleteID.Count; ++i)
            {
                allClients.Remove(deleteID[i]);
                ClientsHeatbeatCheck.Remove(deleteID[i]);
            }

            // make c# class to give to clients
            DeleteMsg dm = new DeleteMsg();
            dm.deleteID = deleteID;

            // send to clients
            for (int i = 0; i < m_Connections.Length; ++i)
            {
                // but we dont need to send already disconnected values.
                if (deleteID.Contains(m_Connections[i].InternalId.ToString()))
                {
                    // skip
                    continue;
                }

                SendToClient(JsonUtility.ToJson(dm), m_Connections[i]);
            }
        }
    }
        static void DeleteSuccess(ref DeleteMsg msg, MyNetworkClient sender)
        {
            Dictionary <int, MyGps> gpsList;
            var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList);

            if (result)
            {
                MyGps gps;
                result = gpsList.TryGetValue(msg.Hash, out gps);
                if (result)
                {
                    if (gps.ShowOnHud)
                    {
                        MyHud.GpsMarkers.UnregisterMarker(gps);
                    }
                    gpsList.Remove(msg.Hash);
                    var handler = MySession.Static.Gpss.ListChanged;
                    if (handler != null)
                    {
                        handler(msg.IdentityId);
                    }
                }
            }
        }
 static void DeleteSuccess(ref DeleteMsg msg, MyNetworkClient sender)
 {
     Dictionary<int, MyGps> gpsList;
     var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList);
     if (result)
     {
         MyGps gps;
         result = gpsList.TryGetValue(msg.Hash, out gps);
         if (result)
         {
             if (gps.ShowOnHud)
                 MyHud.GpsMarkers.UnregisterMarker(gps);
             gpsList.Remove(msg.Hash);
             var handler = MySession.Static.Gpss.ListChanged;
             if (handler != null)
                 handler(msg.IdentityId);
         }
         
     }
 }
        static void DeleteRequest(ref DeleteMsg msg, MyNetworkClient sender)
        {
            Dictionary<int, MyGps> gpsList;
            var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList);

            if (result)
                if (gpsList.ContainsKey(msg.Hash))
                    Sync.Layer.SendMessageToAllAndSelf(ref msg, MyTransportMessageEnum.Success);
        }
        //DELETE:
        public void SendDelete(long identityId, int gpsHash)
        {
            var msg = new DeleteMsg();
            msg.IdentityId = identityId;
            msg.Hash = gpsHash;

            Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request);
        }
Exemple #9
0
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");

            for (int i = 0; i < suMsg.players.Count; ++i)
            {
                Debug.Log(suMsg.players[i].id + "  " + suMsg.players[i].cubPos);
            }
            // server가 보내주는 모든 정보 받기, 현교 데이터만 받아와서 내 업데이트에 적용
            // -> get all data from server, and only update other clients(updates)' data to my update
            UpdateOldClientsInfo(suMsg);

            break;

        case Commands.INTERNAL_ID:
            // get internal id from server
            PlayerUpdateMsg internalID = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            //Debug.Log(internalID.player.id);
            id = internalID.player.id;
            break;

        case Commands.OLD_CLIENTS_INFO:
            // get old clients info  from server
            ServerUpdateMsg oldClientsInfo = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            //for(int i = 0; i < oldClientsInfo.players.Count; ++i)
            //{
            //    Debug.Log(oldClientsInfo.players[i].id);
            //}
            // spawn old clients
            SpawnOldClients(oldClientsInfo);
            break;

        case Commands.NEW_CLIENTS_INFO:
            PlayerUpdateMsg newClientsInfo = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            // spawn new client
            SpawnNewClients(newClientsInfo);
            break;

        case Commands.DISCONNECTED:
            DeleteMsg dm = JsonUtility.FromJson <DeleteMsg>(recMsg);
            // destroy method
            DestoryDisconnected(dm);

            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }