コード例 #1
0
        static void ModifySuccess(ref ModifyMsg msg, MyNetworkClient sender)
        {
            Dictionary<int, MyGps> gpsList;
            var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList);

            if (result)
            {
                MyGps gps;
                if (gpsList.TryGetValue(msg.Hash, out gps))
                {
                    gps.Name = msg.Name;
                    gps.Description = msg.Description;
                    gps.Coords = msg.Coords;
                    gps.DiscardAt = null;//finalize at edit
                    var handler = MySession.Static.Gpss.GpsChanged;//because of name in table
                    if (handler != null)
                    {
                        handler(msg.IdentityId, gps.Hash);
                    }
                    gpsList.Remove(gps.Hash);
                    MyHud.GpsMarkers.UnregisterMarker(gps);
                    gps.UpdateHash();
                    //if an entry exists, we will remove it, then isert this => user overwrited old entry:
                    if (gpsList.ContainsKey(gps.Hash))
                    {
                        MyGps oldGps;
                        gpsList.TryGetValue(gps.Hash, out oldGps);
                        MyHud.GpsMarkers.UnregisterMarker(oldGps);
                        gpsList.Remove(gps.Hash);
                        gpsList.Add(gps.Hash, gps);//new key
                        var handlerList = MySession.Static.Gpss.ListChanged;//we have merged two entries...
                        if (handlerList != null)
                        {
                            handlerList(msg.IdentityId);
                        }
                    }
                    else
                        gpsList.Add(gps.Hash, gps);//new key

                    if (msg.IdentityId == MySession.LocalPlayerId && gps.ShowOnHud)
                        MyHud.GpsMarkers.RegisterMarker(gps);
                }
            }
        }
コード例 #2
0
        static void ModifyRequest(ref ModifyMsg 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);
        }
コード例 #3
0
        static void ModifyRequest(ModifyMsg msg)
        {
            Dictionary<int, MyGps> gpsList;
            var result = MySession.Static.Gpss.m_playerGpss.TryGetValue(msg.IdentityId, out gpsList);

            if (result)
                if (gpsList.ContainsKey(msg.Hash))
                    MyMultiplayer.RaiseStaticEvent(s => MyGpsCollection.ModifySuccess, msg);
        }
コード例 #4
0
        //MODIFY:
        public void SendModifyGps(long identityId, MyGps gps)
        {//beware: gps must still contain original hash. Recompute during/after success.
            var msg = new ModifyMsg();
            msg.IdentityId = identityId;
            msg.Name = gps.Name;
            msg.Description = gps.Description;
            msg.Coords = gps.Coords;
            msg.Hash = gps.Hash;

            Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request);
        }
コード例 #5
0
        //MODIFY:
        public void SendModifyGps(long identityId, MyGps gps)
        {//beware: gps must still contain original hash. Recompute during/after success.
            var msg = new ModifyMsg();
            msg.IdentityId = identityId;
            msg.Name = gps.Name;
            msg.Description = gps.Description;
            msg.Coords = gps.Coords;
            msg.Hash = gps.Hash;

            MyMultiplayer.RaiseStaticEvent(s => MyGpsCollection.ModifyRequest, msg);
        }