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