public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = message.Data as HandshakeBaseMsgData;

            switch (data?.HandshakeMessageType)
            {
            case HandshakeMessageType.Request:
                SetAndSendHandshakeChallangeMessage(client);
                break;

            case HandshakeMessageType.Response:
                try
                {
                    HandshakeHandler.HandleHandshakeResponse(client, (HandshakeResponseMsgData)data);
                }
                catch (Exception e)
                {
                    LunaLog.Debug($"Error in HANDSHAKE_REQUEST from {((HandshakeResponseMsgData)data).PlayerName}: {e}");
                    HandshakeSystemSender.SendHandshakeReply(client, HandshakeReply.MalformedHandshake, "Malformed handshake");
                }
                break;

            default:
                throw new NotImplementedException("Handshake type not implemented");
            }

            //We don't use this message so we can recycle it
            message.Recycle();
        }
        public static void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = message.Data as KerbalBaseMsgData;

            switch (data?.KerbalMessageType)
            {
            case KerbalMessageType.Request:
                KerbalSystem.HandleKerbalsRequest(client);
                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            case KerbalMessageType.Proto:
                KerbalSystem.HandleKerbalProto(client, (KerbalProtoMsgData)data);
                break;

            case KerbalMessageType.Remove:
                KerbalSystem.HandleKerbalRemove(client, (KerbalRemoveMsgData)data);

                break;

            default:
                throw new NotImplementedException("Kerbal type not implemented");
            }
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (CraftLibraryBaseMsgData)message.Data;

            if (data.PlayerName != client.PlayerName)
            {
                return;
            }

            switch (data.CraftMessageType)
            {
            case CraftMessageType.UploadFile:
                CraftLibraryHandler.HandleUploadFileMessage(client, (CraftLibraryUploadMsgData)data);
                break;

            case CraftMessageType.RequestFile:
                CraftLibraryHandler.HandleRequestFileMessage(client, (CraftLibraryRequestMsgData)data);
                break;

            case CraftMessageType.DeleteFile:
                CraftLibraryHandler.HandleDeleteFileMessage(client, (CraftLibraryDeleteMsgData)data);
                break;

            case CraftMessageType.ListRequest:
                //We don't use this message anymore so we can recycle it
                message.Recycle();
                CraftLibrarySystem.SendCraftList(client);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (LockBaseMsgData)message.Data;

            switch (data.LockMessageType)
            {
            case LockMessageType.ListRequest:
                LockSystemSender.SendAllLocks(client);
                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            case LockMessageType.Acquire:
                var acquireData = (LockAcquireMsgData)data;
                if (acquireData.Lock.PlayerName == client.PlayerName)
                {
                    LockSystemSender.SendLockAcquireMessage(client, acquireData.Lock, acquireData.Force);
                }
                break;

            case LockMessageType.Release:
                var releaseData = (LockReleaseMsgData)data;
                if (releaseData.Lock.PlayerName == client.PlayerName)
                {
                    LockSystemSender.ReleaseAndSendLockReleaseMessage(client, releaseData.Lock);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #5
0
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (QuicksaveBaseMsgData)message.Data;

            switch (data.MessageType)
            {
            case QuicksaveMessageType.ListRequest:
                QuicksaveSystem.SendQuicksaveList(client, (QuicksaveListRequestMsgData)data);
                break;

            case QuicksaveMessageType.LoadRequest:
                QuicksaveSystem.LoadQuicksave(client, (QuicksaveLoadRequestMsgData)data);
                break;

            case QuicksaveMessageType.SaveRequest:
                QuicksaveSystem.SaveQuicksave(client, (QuicksaveSaveRequestMsgData)data);
                break;

            case QuicksaveMessageType.RemoveRequest:
                QuicksaveSystem.RemoveQuicksave(client, (QuicksaveRemoveRequestMsgData)data);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #6
0
        //Fire OnMessageReceived
        public static void FireOnMessageReceived(ClientStructure client, IClientMessageBase message)
        {
            var handledByAny = false;

            lock (ListLock)
            {
                foreach (var plugin in LoadedPlugins)
                {
                    try
                    {
                        plugin.OnMessageReceived(client, message);

                        //prevent plugins from unhandling other plugin's Handled requests
                        if (message.Handled)
                        {
                            handledByAny = true;
                        }
                    }
                    catch (Exception e)
                    {
                        var type = plugin.GetType();
                        LunaLog.Debug($"Error thrown in OnMessageReceived event for {type.FullName} ({type.Assembly.FullName}), Exception: {e}");
                    }
                    message.Handled = handledByAny;
                }
            }
        }
Example #7
0
        public static void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var messageData = message.Data as PlayerStatusBaseMsgData;

            switch (messageData?.PlayerStatusMessageType)
            {
            case PlayerStatusMessageType.Request:
                SendOtherPlayerStatusesToNewPlayer(client);
                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            case PlayerStatusMessageType.Set:
                var data = (PlayerStatusSetMsgData)messageData;
                if (data.PlayerStatus.PlayerName != client.PlayerName)
                {
                    return;
                }

                client.PlayerStatus.VesselText = data.PlayerStatus.VesselText;
                client.PlayerStatus.StatusText = data.PlayerStatus.StatusText;
                MessageQueuer.RelayMessage <PlayerStatusSrvMsg>(client, data);
                break;
            }
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (ScreenshotBaseMsgData)message.Data;

            switch (data.ScreenshotMessageType)
            {
            case ScreenshotMessageType.FoldersRequest:
                ScreenshotSystem.SendScreenshotFolders(client);
                break;

            case ScreenshotMessageType.ListRequest:
                ScreenshotSystem.SendScreenshotList(client, (ScreenshotListRequestMsgData)data);
                break;

            case ScreenshotMessageType.ScreenshotData:
                ScreenshotSystem.SaveScreenshot(client, (ScreenshotDataMsgData)data);
                break;

            case ScreenshotMessageType.DownloadRequest:
                ScreenshotSystem.SendScreenshot(client, (ScreenshotDownloadRequestMsgData)data);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #9
0
        public static void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (GroupBaseMsgData)message.Data;

            switch (data.GroupMessageType)
            {
            case GroupMessageType.ListRequest:

                var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <GroupListResponseMsgData>();
                msgData.Groups      = GroupSystem.Groups.Values.ToArray();
                msgData.GroupsCount = msgData.Groups.Length;
                MessageQueuer.SendToClient <GroupSrvMsg>(client, msgData);

                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            case GroupMessageType.CreateGroup:
                GroupSystem.CreateGroup(client.PlayerName, ((GroupCreateMsgData)data).GroupName);
                break;

            case GroupMessageType.RemoveGroup:
                GroupSystem.RemoveGroup(client.PlayerName, ((GroupRemoveMsgData)data).GroupName);
                break;

            case GroupMessageType.GroupUpdate:
                GroupSystem.UpdateGroup(client.PlayerName, ((GroupUpdateMsgData)data).Group);
                break;
            }
        }
Example #10
0
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var messageData = message.Data as PlayerColorBaseMsgData;

            switch (messageData?.PlayerColorMessageType)
            {
            case PlayerColorMessageType.Request:
                SendAllPlayerColors(client);

                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            case PlayerColorMessageType.Set:
                var data = (PlayerColorSetMsgData)messageData;
                if (data.PlayerColor.PlayerName != client.PlayerName)
                {
                    return;
                }

                Array.Copy(data.PlayerColor.Color, client.PlayerColor, data.PlayerColor.Color.Length);
                MessageQueuer.RelayMessage <PlayerColorSrvMsg>(client, data);
                break;
            }
        }
        public static void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (CraftLibraryBaseMsgData)message.Data;

            switch (data.CraftMessageType)
            {
            case CraftMessageType.FoldersRequest:
                CraftLibrarySystem.SendCraftFolders(client);
                break;

            case CraftMessageType.ListRequest:
                CraftLibrarySystem.SendCraftList(client, (CraftLibraryListRequestMsgData)data);
                break;

            case CraftMessageType.DownloadRequest:
                CraftLibrarySystem.SendCraft(client, (CraftLibraryDownloadRequestMsgData)data);
                break;

            case CraftMessageType.DeleteRequest:
                CraftLibrarySystem.DeleteCraft(client, (CraftLibraryDeleteRequestMsgData)data);
                break;

            case CraftMessageType.CraftData:
                CraftLibrarySystem.SaveCraft(client, (CraftLibraryDataMsgData)data);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var messageData = message.Data as VesselBaseMsgData;

            switch (messageData?.VesselMessageType)
            {
            case VesselMessageType.Sync:
                HandleVesselsSync(client, messageData);
                message.Recycle();
                break;

            case VesselMessageType.Proto:
                HandleVesselProto(client, messageData);
                break;

            case VesselMessageType.Dock:
                HandleVesselDock(client, messageData);
                break;

            case VesselMessageType.Remove:
                HandleVesselRemove(client, messageData);
                break;

            case VesselMessageType.Position:
                VesselRelaySystem.HandleVesselMessage(client, messageData);
                if (!GeneralSettings.SettingsStore.ShowVesselsInThePast || client.Subspace == WarpContext.LatestSubspace)
                {
                    VesselDataUpdater.WritePositionDataToFile(messageData);
                }
                break;

            case VesselMessageType.Flightstate:
                VesselRelaySystem.HandleVesselMessage(client, messageData);
                break;

            case VesselMessageType.Update:
                VesselDataUpdater.WriteUpdateDataToFile(messageData);
                MessageQueuer.RelayMessage <VesselSrvMsg>(client, messageData);
                break;

            case VesselMessageType.Resource:
                VesselDataUpdater.WriteResourceDataToFile(messageData);
                MessageQueuer.RelayMessage <VesselSrvMsg>(client, messageData);
                break;

            case VesselMessageType.PartSync:
                VesselDataUpdater.WriteModuleDataToFile(messageData);
                MessageQueuer.RelayMessage <VesselSrvMsg>(client, messageData);
                break;

            case VesselMessageType.Fairing:
                VesselDataUpdater.WriteFairingDataToFile(messageData);
                MessageQueuer.RelayMessage <VesselSrvMsg>(client, messageData);
                break;

            default:
                throw new NotImplementedException("Vessel message type not implemented");
            }
        }
        public override void OnMessageReceived(ClientStructure client, IClientMessageBase messageData)
        {
            ChatMsgData chatMsgData = messageData.Data as ChatMsgData;

            if (chatMsgData != null)
            {
                connector.SendToDiscord("[" + chatMsgData.From + "] " + chatMsgData.Text);
            }
        }
Example #14
0
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (ModMsgData)message.Data;

            if (data.Relay)
            {
                MessageQueuer.RelayMessage <ModSrvMsg>(client, data);
            }
            LmpModInterface.OnModMessageReceived(client, data.ModName, data.Data, data.NumBytes);
        }
Example #15
0
        public static void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var messageData = (AdminBaseMsgData)message.Data;

            if (!string.IsNullOrEmpty(GeneralSettings.SettingsStore.AdminPassword) && GeneralSettings.SettingsStore.AdminPassword == messageData.AdminPassword)
            {
                var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <AdminReplyMsgData>();
                switch (messageData.AdminMessageType)
                {
                case AdminMessageType.Ban:
                    var banMsg = (AdminBanMsgData)message.Data;
                    LunaLog.Debug($"{client.PlayerName}: Requested a ban against {banMsg.PlayerName}. Reason: {banMsg.Reason}");
                    msgData.Response = CommandHandler.Commands["ban"].Func($"{banMsg.PlayerName} {banMsg.Reason}") ? AdminResponse.Ok : AdminResponse.Error;
                    break;

                case AdminMessageType.Kick:
                    var kickMsg = (AdminKickMsgData)message.Data;
                    LunaLog.Debug($"{client.PlayerName}: Requested a kick against {kickMsg.PlayerName}. Reason: {kickMsg.Reason}");
                    msgData.Response = CommandHandler.Commands["kick"].Func($"{kickMsg.PlayerName} {kickMsg.Reason}") ? AdminResponse.Ok : AdminResponse.Error;
                    break;

                case AdminMessageType.Dekessler:
                    LunaLog.Debug($"{client.PlayerName}: Requested a dekessler");
                    CommandHandler.Commands["dekessler"].Func(null);
                    msgData.Response = AdminResponse.Ok;
                    break;

                case AdminMessageType.Nuke:
                    LunaLog.Debug($"{client.PlayerName}: Requested a nuke");
                    CommandHandler.Commands["nukeksc"].Func(null);
                    msgData.Response = AdminResponse.Ok;
                    break;

                case AdminMessageType.RestartServer:
                    LunaLog.Debug($"{client.PlayerName}: Requested a server restart");
                    CommandHandler.Commands["restartserver"].Func(null);
                    msgData.Response = AdminResponse.Ok;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                MessageQueuer.SendToClient <AdminSrvMsg>(client, msgData);
            }
            else
            {
                LunaLog.Warning($"{client.PlayerName}: Tried to run an admin command with an invalid password");

                var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <AdminReplyMsgData>();
                msgData.Response = AdminResponse.InvalidPassword;
                MessageQueuer.SendToClient <AdminSrvMsg>(client, msgData);
            }
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (ShareProgressBaseMsgData)message.Data;

            switch (data.ShareProgressMessageType)
            {
            case ShareProgressMessageType.FundsUpdate:
                ShareFundsSystem.FundsReceived(client, (ShareProgressFundsMsgData)data);
                break;

            case ShareProgressMessageType.ScienceUpdate:
                ShareScienceSystem.ScienceReceived(client, (ShareProgressScienceMsgData)data);
                break;

            case ShareProgressMessageType.ScienceSubjectUpdate:
                ShareScienceSubjectSystem.ScienceSubjectReceived(client, (ShareProgressScienceSubjectMsgData)data);
                break;

            case ShareProgressMessageType.ReputationUpdate:
                ShareReputationSystem.ReputationReceived(client, (ShareProgressReputationMsgData)data);
                break;

            case ShareProgressMessageType.TechnologyUpdate:
                ShareTechnologySystem.TechnologyReceived(client, (ShareProgressTechnologyMsgData)data);
                break;

            case ShareProgressMessageType.ContractsUpdate:
                ShareContractsSystem.ContractsReceived(client, (ShareProgressContractsMsgData)data);
                break;

            case ShareProgressMessageType.AchievementsUpdate:
                ShareAchievementsSystem.AchievementsReceived(client, (ShareProgressAchievementsMsgData)data);
                break;

            case ShareProgressMessageType.StrategyUpdate:
                ShareStrategySystem.StrategyReceived(client, (ShareProgressStrategyMsgData)data);
                break;

            case ShareProgressMessageType.FacilityUpgrade:
                ShareUpgradeableFacilitiesSystem.UpgradeReceived(client, (ShareProgressFacilityUpgradeMsgData)data);
                break;

            case ShareProgressMessageType.PartPurchase:
                SharePartPurchaseSystem.PurchaseReceived(client, (ShareProgressPartPurchaseMsgData)data);
                break;

            case ShareProgressMessageType.ExperimentalPart:
                ShareExperimentalPartSystem.ExperimentalPartReceived(client, (ShareProgressExperimentalPartMsgData)data);
                break;
            }
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = message.Data as HandshakeBaseMsgData;

            switch (data?.HandshakeMessageType)
            {
            case HandshakeMessageType.Request:
                HandshakeHandler.HandleHandshakeRequest(client, (HandshakeRequestMsgData)data);
                break;

            default:
                throw new NotImplementedException("Handshake type not implemented");
            }

            message.Recycle();
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (AdminBaseMsgData)message.Data;

            switch (data.AdminMessageType)
            {
            case AdminMessageType.ListRequest:
                AdminSystemSender.SendAdminList(client);

                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #19
0
        public static void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (FlagBaseMsgData)message.Data;

            switch (data.FlagMessageType)
            {
            case FlagMessageType.ListRequest:
                FlagSystem.HandleFlagListRequestMessage(client);
                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            case FlagMessageType.FlagData:
                FlagSystem.HandleFlagDataMessage(client, (FlagDataMsgData)data);
                break;
            }
        }
Example #20
0
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var messageData = message.Data as ScenarioBaseMsgData;

            switch (messageData?.ScenarioMessageType)
            {
            case ScenarioMessageType.Request:
                ScenarioSystem.SendScenarioModules(client);
                break;

            case ScenarioMessageType.Data:
                ScenarioSystem.ParseReceivedScenarioData(client, messageData);
                break;
            }

            //We don't use this message anymore so we can recycle it
            message.Recycle();
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            //We don't use this message anymore so we can recycle it
            message.Recycle();

            var newMotd = GeneralSettings.SettingsStore.ServerMotd;

            if (newMotd.Length > 255)
            {
                newMotd = newMotd.Substring(0, 255); //We don't wanna send a huuuge message!
            }
            newMotd = newMotd.Replace("%Name%", client.PlayerName).Replace(@"\n", Environment.NewLine);

            var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <MotdReplyMsgData>();

            msgData.MessageOfTheDay = newMotd;

            MessageQueuer.SendToClient <MotdSrvMsg>(client, msgData);
        }
        public static void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var messageData = (ChatMsgData)message.Data;

            if (messageData.From != client.PlayerName)
            {
                return;
            }

            if (messageData.Relay)
            {
                MessageQueuer.SendToAllClients <ChatSrvMsg>(messageData);
                LunaLog.ChatMessage($"{messageData.From}: {messageData.Text}");
            }
            else //Is a PM to server msg
            {
                LunaLog.Warning($"{messageData.From}: {messageData.Text}");
            }
        }
Example #23
0
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (ChatBaseMsgData)message.Data;

            if (data.From != client.PlayerName)
            {
                return;
            }

            switch (data.ChatMessageType)
            {
            case ChatMessageType.ListRequest:
                ChatSystem.SendPlayerChatChannels(client);
                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            case ChatMessageType.Join:
                ChatSystemReceiver.HandleJoinMessage(client, (ChatJoinMsgData)data);
                break;

            case ChatMessageType.Leave:
                ChatSystemReceiver.HandleLeaveMessage(client, (ChatLeaveMsgData)data);
                break;

            case ChatMessageType.ChannelMessage:
                ChatSystemReceiver.HandleChannelMessage(client, (ChatChannelMsgData)data);
                break;

            case ChatMessageType.PrivateMessage:
                ChatSystemReceiver.HandlePrivateMessage(client, (ChatPrivateMsgData)data);
                break;

            case ChatMessageType.ConsoleMessage:
                ChatSystemReceiver.HandleConsoleMessage(client, (ChatConsoleMsgData)data);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (FacilityBaseMsgData)message.Data;
            switch (data.FacilityMessageType)
            {
                case FacilityMessageType.Upgrade:
                    var upgradeMsg = (FacilityUpgradeMsgData)message.Data;
                    LunaLog.Normal($"{client.PlayerName} UPGRADED facility {upgradeMsg.ObjectId} to level: {upgradeMsg.Level}");
                    break;
                case FacilityMessageType.Repair:
                    LunaLog.Normal($"{client.PlayerName} REPAIRED facility {data.ObjectId}");
                    break;
                case FacilityMessageType.Collapse:
                    LunaLog.Normal($"{client.PlayerName} DESTROYED facility {data.ObjectId}");
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            //We don't do anything on the server side with this messages so just relay them.
            MessageQueuer.RelayMessage<FacilitySrvMsg>(client, message.Data);
        }
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (FacilityBaseMsgData)message.Data;

            switch (data.FacilityMessageType)
            {
            case FacilityMessageType.Repair:
                LunaLog.Normal($"{client.PlayerName} REPAIRED facility {data.ObjectId}");
                ScenarioDataUpdater.WriteRepairedDestroyedDataToFile(data.ObjectId, true);
                break;

            case FacilityMessageType.Collapse:
                LunaLog.Normal($"{client.PlayerName} DESTROYED facility {data.ObjectId}");
                ScenarioDataUpdater.WriteRepairedDestroyedDataToFile(data.ObjectId, false);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            //We don't do anything on the server side with this messages so just relay them.
            MessageQueuer.RelayMessage <FacilitySrvMsg>(client, message.Data);
        }
Example #26
0
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var messageData = message.Data as WarpBaseMsgData;

            switch (messageData?.WarpMessageType)
            {
            case WarpMessageType.NewSubspace:
                WarpReceiver.HandleNewSubspace(client, (WarpNewSubspaceMsgData)messageData);
                break;

            case WarpMessageType.ChangeSubspace:
                WarpReceiver.HandleChangeSubspace(client, (WarpChangeSubspaceMsgData)messageData);
                break;

            case WarpMessageType.SubspacesRequest:
                WarpSystemSender.SendAllSubspaces(client);
                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            default:
                throw new NotImplementedException("Warp Type not implemented");
            }
        }
Example #27
0
 public abstract void HandleMessage(ClientStructure client, IClientMessageBase message);
Example #28
0
        public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            //We don't use this message anymore so we can recycle it
            message.Recycle();

            var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <SettingsReplyMsgData>();

            msgData.WarpMode                         = WarpSettings.SettingsStore.WarpMode;
            msgData.GameMode                         = GeneralSettings.SettingsStore.GameMode;
            msgData.TerrainQuality                   = GeneralSettings.SettingsStore.TerrainQuality;
            msgData.AllowCheats                      = GeneralSettings.SettingsStore.Cheats;
            msgData.AllowAdmin                       = !string.IsNullOrEmpty(GeneralSettings.SettingsStore.AdminPassword);
            msgData.AllowSackKerbals                 = GeneralSettings.SettingsStore.AllowSackKerbals;
            msgData.AllowQuicksaves                  = GeneralSettings.SettingsStore.AllowQuicksaves;
            msgData.MaxNumberOfAsteroids             = GeneralSettings.SettingsStore.NumberOfAsteroids;
            msgData.ConsoleIdentifier                = GeneralSettings.SettingsStore.ConsoleIdentifier;
            msgData.GameDifficulty                   = GeneralSettings.SettingsStore.GameDifficulty;
            msgData.SafetyBubbleDistance             = GeneralSettings.SettingsStore.SafetyBubbleDistance;
            msgData.MaxVesselParts                   = GeneralSettings.SettingsStore.MaxVesselParts;
            msgData.VesselUpdatesMsInterval          = IntervalSettings.SettingsStore.VesselUpdatesMsInterval;
            msgData.SecondaryVesselUpdatesMsInterval = IntervalSettings.SettingsStore.SecondaryVesselUpdatesMsInterval;
            msgData.MinScreenshotIntervalMs          = ScreenshotSettings.SettingsStore.MinScreenshotIntervalMs;
            msgData.MaxScreenshotWidth               = ScreenshotSettings.SettingsStore.MaxScreenshotWidth;
            msgData.MaxScreenshotHeight              = ScreenshotSettings.SettingsStore.MaxScreenshotHeight;
            msgData.MinCraftLibraryRequestIntervalMs = CraftSettings.SettingsStore.MinCraftLibraryRequestIntervalMs;
            msgData.PrintMotdInChat                  = GeneralSettings.SettingsStore.PrintMotdInChat;

            if (GeneralSettings.SettingsStore.GameDifficulty == GameDifficulty.Custom && GameplaySettings.SettingsStore != null)
            {
                msgData.EnableCommNet                    = GameplaySettings.SettingsStore.CommNetwork;
                msgData.RespawnTimer                     = GameplaySettings.SettingsStore.RespawnTime;
                msgData.AllowOtherLaunchSites            = GameplaySettings.SettingsStore.AllowOtherLaunchSites;
                msgData.AllowStockVessels                = GameplaySettings.SettingsStore.AllowStockVessels;
                msgData.AutoHireCrews                    = GameplaySettings.SettingsStore.AutoHireCrews;
                msgData.BypassEntryPurchaseAfterResearch = GameplaySettings.SettingsStore.BypassEntryPurchaseAfterResearch;
                msgData.IndestructibleFacilities         = GameplaySettings.SettingsStore.IndestructibleFacilities;
                msgData.MissingCrewsRespawn              = GameplaySettings.SettingsStore.MissingCrewsRespawn;
                msgData.ReentryHeatScale                 = GameplaySettings.SettingsStore.ReentryHeatScale;
                msgData.ResourceAbundance                = GameplaySettings.SettingsStore.ResourceAbundance;
                msgData.FundsGainMultiplier              = GameplaySettings.SettingsStore.FundsGainMultiplier;
                msgData.CanRevert             = GameplaySettings.SettingsStore.CanRevert;
                msgData.RepLossDeclined       = GameplaySettings.SettingsStore.RepLossDeclined;
                msgData.FundsLossMultiplier   = GameplaySettings.SettingsStore.FundsLossMultiplier;
                msgData.RepGainMultiplier     = GameplaySettings.SettingsStore.RepGainMultiplier;
                msgData.RepLossMultiplier     = GameplaySettings.SettingsStore.RepLossMultiplier;
                msgData.ScienceGainMultiplier = GameplaySettings.SettingsStore.ScienceGainMultiplier;
                msgData.StartingFunds         = GameplaySettings.SettingsStore.StartingFunds;
                msgData.StartingReputation    = GameplaySettings.SettingsStore.StartingReputation;
                msgData.StartingScience       = GameplaySettings.SettingsStore.StartingScience;
                //Advanced
                msgData.ActionGroupsAlways             = GameplaySettings.SettingsStore.ActionGroupsAlways;
                msgData.GKerbalLimits                  = GameplaySettings.SettingsStore.GKerbalLimits;
                msgData.GPartLimits                    = GameplaySettings.SettingsStore.GPartLimits;
                msgData.KerbalGToleranceMult           = GameplaySettings.SettingsStore.KerbalGToleranceMult;
                msgData.PressurePartLimits             = GameplaySettings.SettingsStore.PressurePartLimits;
                msgData.EnableKerbalExperience         = GameplaySettings.SettingsStore.KerbalExp;
                msgData.ImmediateLevelUp               = GameplaySettings.SettingsStore.ImmediateLevelUp;
                msgData.AllowNegativeCurrency          = GameplaySettings.SettingsStore.AllowNegativeCurrency;
                msgData.ResourceTransferObeyCrossfeed  = GameplaySettings.SettingsStore.ObeyCrossfeedRules;
                msgData.BuildingImpactDamageMult       = GameplaySettings.SettingsStore.BuildingDamageMultiplier;
                msgData.PartUpgradesInCareerAndSandbox = GameplaySettings.SettingsStore.PartUpgrades;
                //Commnet
                msgData.RequireSignalForControl = GameplaySettings.SettingsStore.RequireSignalForControl;
                msgData.DsnModifier             = GameplaySettings.SettingsStore.DsnModifier;
                msgData.RangeModifier           = GameplaySettings.SettingsStore.RangeModifier;
                msgData.OcclusionMultiplierVac  = GameplaySettings.SettingsStore.OcclusionModifierVac;
                msgData.OcclusionMultiplierAtm  = GameplaySettings.SettingsStore.OcclusionModifierAtm;
                msgData.EnableGroundStations    = GameplaySettings.SettingsStore.ExtraGroundstations;
                msgData.PlasmaBlackout          = GameplaySettings.SettingsStore.ReentryBlackout;
            }

            MessageQueuer.SendToClient <SetingsSrvMsg>(client, msgData);
        }
Example #29
0
 public virtual void OnMessageReceived(ClientStructure client, IClientMessageBase messageData)
 {
 }
Example #30
0
 public void OnMessageReceived(ClientStructure client, IClientMessageBase messageData)
 {
     LuaScriptManger.CallHandler("OnMessageReceived", client, messageData);
 }