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)); } }
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); } }
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); } }
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); } }
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); } }