private static void HandleVesselsSync(ClientStructure client, VesselBaseMsgData message) { var msgData = (VesselSyncMsgData)message; var allVessels = VesselStoreSystem.CurrentVesselsInXmlFormat.Keys.ToList(); for (var i = 0; i < msgData.VesselsCount; i++) { allVessels.Remove(msgData.VesselIds[i]); } var vesselsToSend = allVessels; foreach (var vesselId in vesselsToSend) { var vesselData = VesselStoreSystem.GetVesselInConfigNodeFormat(vesselId); if (vesselData.Length > 0) { var protoMsg = ServerContext.ServerMessageFactory.CreateNewMessageData <VesselProtoMsgData>(); protoMsg.Vessel.Data = Encoding.UTF8.GetBytes(vesselData); protoMsg.Vessel.NumBytes = vesselData.Length; protoMsg.Vessel.VesselId = vesselId; MessageQueuer.SendToClient <VesselSrvMsg>(client, protoMsg); } } if (allVessels.Count > 0) { LunaLog.Debug($"Sending {client.PlayerName} {vesselsToSend.Count} vessels"); } }
private static void HandleVesselsSync(ClientStructure client, VesselBaseMsgData message) { var msgData = (VesselSyncMsgData)message; var allVessels = VesselStoreSystem.CurrentVessels.Keys.ToList(); //Here we only remove the vessels that the client ALREADY HAVE so we only send the vessels he DOESN'T have for (var i = 0; i < msgData.VesselsCount; i++) { allVessels.Remove(msgData.VesselIds[i]); } var vesselsToSend = allVessels; foreach (var vesselId in vesselsToSend) { var vesselData = VesselStoreSystem.GetVesselInConfigNodeFormat(vesselId); if (vesselData.Length > 0) { var protoMsg = ServerContext.ServerMessageFactory.CreateNewMessageData <VesselProtoMsgData>(); protoMsg.Data = Encoding.UTF8.GetBytes(vesselData); protoMsg.NumBytes = vesselData.Length; protoMsg.VesselId = vesselId; MessageQueuer.SendToClient <VesselSrvMsg>(client, protoMsg); LunaLog.Debug($"Sending {client.PlayerName} vessel {vesselId}"); } } }