Esempio n. 1
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. 2
0
        public static void RemovePinFromServer(PinData pin)
        {
            if (!Store.IsSharingPin())
            {
                return;
            }

            var data = ExplorationDatabase.PackPin(pin);

            ExplorationDatabase.ClientPins.Remove(pin);

            if (!_ZNet.IsServer(_ZNet._instance))
            {
                _ZNet.GetServerRPC(_ZNet._instance).Invoke("OnClientRemovePin", data);
            }
            else
            {
                OnClientRemovePin(null, data);
            }
        }
Esempio n. 3
0
        public static void CheckPinOnServer(PinData pin, bool state)
        {
            if (!Store.IsSharingPin())
            {
                return;
            }

            var data = ExplorationDatabase.PackPin(pin, true);

            data.Write(state);
            data.SetPos(0);

            if (!_ZNet.IsServer(_ZNet._instance))
            {
                _ZNet.GetServerRPC(_ZNet._instance).Invoke("OnClientCheckPin", data);
            }
            else
            {
                OnClientCheckPin(null, data);
            }
        }
Esempio n. 4
0
        public static void SendPinToServer(Minimap.PinData pin, bool deletePin = true)
        {
            if (!Store.IsSharingPin())
            {
                return;
            }

            var convertedPin = UtilityPin.ConvertPin(pin);
            var data         = ExplorationDatabase.PackPin(convertedPin);

            pin.m_save = !deletePin && pin.m_save;
            ExplorationDatabase.ClientPins.Add(convertedPin);

            if (!_ZNet.IsServer(_ZNet._instance))
            {
                _ZNet.GetServerRPC(_ZNet._instance).Invoke("OnClientAddPin", data);
            }
            else
            {
                OnClientAddPin(null, data);
            }
        }
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);
            }
        }