Пример #1
0
        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");
            }
        }
Пример #2
0
        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}");
                }
            }
        }