Esempio n. 1
0
        public static void OnServerRemovePin(ZRpc _, ZPackage pinData)
        {
            if (!Store.IsSharingPin())
            {
                return;
            }
            pinData.SetPos(0);

            Utility.Log("Client deleted pin by server");

            var pin = ExplorationDatabase.UnpackPin(pinData);

            foreach (var clientPin in ExplorationDatabase.ClientPins.ToList())
            {
                if (UtilityPin.ArePinsEqual(clientPin, pin))
                {
                    ExplorationDatabase.ClientPins.Remove(clientPin);
                }
            }

            var mapPin = UtilityPin.GetMapPin(pin);

            if (mapPin == null)
            {
                return;
            }
            _Minimap.RemovePin(_Minimap._instance, mapPin);
        }
Esempio n. 2
0
        public static void OnClientRemovePin(ZRpc client, ZPackage pinData)
        {
            if (!Store.IsSharingPin())
            {
                return;
            }
            pinData.SetPos(0);

            var znet   = Traverse.Create(typeof(ZNet)).Field("m_instance").GetValue() as ZNet;
            var mPeers = Traverse.Create((znet)).Field("m_peers").GetValue() as List <ZNetPeer>;

            var pin = ExplorationDatabase.UnpackPin(pinData);

            ExplorationDatabase.RemovePinEqual(pin);

            Utility.Log("Server deleted pin by client");

            foreach (var peer in mPeers)
            {
                if (peer.IsReady())
                {
                    if (peer.m_rpc == client)
                    {
                        continue;
                    }
                    peer.m_rpc.Invoke("OnServerRemovePin", (object)ExplorationDatabase.PackPin(pin));
                }
            }

            if (client != null)
            {
                OnServerRemovePin(null, ExplorationDatabase.PackPin(pin));
            }
        }
Esempio n. 3
0
        public static void OnServerCheckPin(ZRpc client, ZPackage data)
        {
            if (!Store.IsSharingPin())
            {
                return;
            }
            data.SetPos(0);

            Utility.Log("Client checked pin by server");

            var pin   = ExplorationDatabase.UnpackPin(data);
            var state = data.ReadBool();

            foreach (var clientPin in ExplorationDatabase.ClientPins.ToList())
            {
                if (UtilityPin.ArePinsEqual(clientPin, pin))
                {
                    clientPin.Checked = state;
                    var mapPin = UtilityPin.GetMapPin(clientPin);
                    if (mapPin != null)
                    {
                        mapPin.m_checked = state;
                    }
                }
            }
        }
Esempio n. 4
0
        public static void OnServerAddPin(ZRpc client, ZPackage pinData)
        {
            if (!Store.IsSharingPin())
            {
                return;
            }
            pinData.SetPos(0);

            var pin = ExplorationDatabase.UnpackPin(pinData);

            _Minimap.AddPin(_Minimap._instance, pin.Pos, pin.Type, pin.Name, false, pin.Checked, 0);
            ExplorationDatabase.ClientPins.Add(pin);

            Utility.Log("Client received pin by server");
        }
Esempio n. 5
0
        public static void OnClientCheckPin(ZRpc client, ZPackage data)
        {
            if (!Store.IsSharingPin())
            {
                return;
            }
            data.SetPos(0);

            Utility.Log("Server checked pin by client");

            var pin   = ExplorationDatabase.UnpackPin(data);
            var state = data.ReadBool();

            ExplorationDatabase.SetPinState(pin, state);

            var znet   = Traverse.Create(typeof(ZNet)).Field("m_instance").GetValue() as ZNet;
            var mPeers = Traverse.Create((znet)).Field("m_peers").GetValue() as List <ZNetPeer>;

            foreach (var peer in mPeers)
            {
                if (peer.IsReady())
                {
                    if (peer.m_rpc == client)
                    {
                        continue;
                    }
                    var z = ExplorationDatabase.PackPin(pin, true);
                    z.Write(state);
                    peer.m_rpc.Invoke("OnServerCheckPin", (object)z);
                }
            }

            if (client != null)
            {
                var z = ExplorationDatabase.PackPin(pin, true);
                z.Write(state);
                OnServerCheckPin(null, z);
            }
        }