public void HandleMessage(IMessageData messageData)
        {
            var msgData = messageData as SettingsReplyMsgData;

            if (msgData == null)
            {
                return;
            }

            SettingsSystem.ServerSettings.WarpMode                             = msgData.WarpMode;
            SettingsSystem.ServerSettings.GameMode                             = msgData.GameMode;
            SettingsSystem.ServerSettings.AllowCheats                          = msgData.AllowCheats;
            SettingsSystem.ServerSettings.MaxNumberOfAsteroids                 = msgData.MaxNumberOfAsteroids;
            SettingsSystem.ServerSettings.ConsoleIdentifier                    = msgData.ConsoleIdentifier;
            SettingsSystem.ServerSettings.SafetyBubbleDistance                 = msgData.SafetyBubbleDistance;
            SettingsSystem.ServerSettings.VesselUpdatesSendMsInterval          = msgData.VesselUpdatesSendMsInterval;
            SettingsSystem.ServerSettings.SecondaryVesselUpdatesSendMsInterval = msgData.SecondaryVesselUpdatesSendMsInterval;
            SettingsSystem.ServerSettings.DropControlOnVesselSwitching         = msgData.DropControlOnVesselSwitching;
            SettingsSystem.ServerSettings.DropControlOnExitFlight              = msgData.DropControlOnExitFlight;
            SettingsSystem.ServerSettings.SendScenarioDataMsInterval           = msgData.SendScenarioDataMsInterval;
            SettingsSystem.ServerSettings.VesselKillCheckMsInterval            = msgData.VesselKillCheckMsInterval;
            SettingsSystem.ServerSettings.StrandedVesselsCheckMsInterval       = msgData.StrandedVesselsCheckMsInterval;
            SettingsSystem.ServerSettings.VesselDefinitionSendMsInterval       = msgData.VesselDefinitionSendMsInterval;
            SettingsSystem.ServerSettings.VesselDefinitionSendFarMsInterval    = msgData.VesselDefinitionSendFarMsInterval;
            SettingsSystem.ServerSettings.AbandonedVesselsUpdateMsInterval     = msgData.AbandonedVesselsUpdateMsInterval;
            SettingsSystem.ServerSettings.ShowVesselsInThePast                 = msgData.ShowVesselsInThePast;
            SettingsSystem.ServerSettings.ClockSetMsInterval                   = msgData.ClockSetMsInterval;
            SettingsSystem.ServerSettings.WarpMaster                           = msgData.WarpMaster;
            SettingsSystem.ServerSettings.DropControlOnExit                    = msgData.DropControlOnExit;
            SettingsSystem.ServerSettings.GameDifficulty                       = msgData.GameDifficulty;

            if (SettingsSystem.ServerSettings.GameDifficulty != GameDifficulty.Custom)
            {
                SettingsSystem.ServerSettings.ServerParameters =
                    GameParameters.GetDefaultParameters(
                        SystemsContainer.Get <MainSystem>().ConvertGameMode(SettingsSystem.ServerSettings.GameMode),
                        (GameParameters.Preset)SettingsSystem.ServerSettings.GameDifficulty);
            }
            else
            {
                SettingsSystem.ServerSettings.ServerParameters = new GameParameters
                {
                    Difficulty =
                    {
                        AllowStockVessels = msgData.AllowStockVessels,
                        AutoHireCrews     = msgData.AutoHireCrews,
                        BypassEntryPurchaseAfterResearch = msgData.BypassEntryPurchaseAfterResearch,
                        IndestructibleFacilities         = msgData.IndestructibleFacilities,
                        MissingCrewsRespawn = msgData.MissingCrewsRespawn,
                        ReentryHeatScale    = msgData.ReentryHeatScale,
                        ResourceAbundance   = msgData.ResourceAbundance,
                        RespawnTimer        = msgData.RespawnTimer,
                        EnableCommNet       = msgData.EnableCommNet
                    },
                    Career =
                    {
                        FundsGainMultiplier   = msgData.FundsGainMultiplier,
                        FundsLossMultiplier   = msgData.FundsLossMultiplier,
                        RepGainMultiplier     = msgData.RepGainMultiplier,
                        RepLossMultiplier     = msgData.RepLossMultiplier,
                        RepLossDeclined       = msgData.RepLossDeclined,
                        ScienceGainMultiplier = msgData.ScienceGainMultiplier,
                        StartingFunds         = msgData.StartingFunds,
                        StartingReputation    = msgData.StartingReputation,
                        StartingScience       = msgData.StartingScience
                    },
                    Flight =
                    {
                        CanQuickLoad     = msgData.CanQuickLoad,
                        CanRestart       = msgData.CanQuickLoad,
                        CanLeaveToEditor = msgData.CanQuickLoad
                    }
                };

                SettingsSystem.ServerSettings.ServerAdvancedParameters = new GameParameters.AdvancedParams
                {
                    ActionGroupsAlways            = msgData.ActionGroupsAlways,
                    GKerbalLimits                 = msgData.GKerbalLimits,
                    GPartLimits                   = msgData.GPartLimits,
                    KerbalGToleranceMult          = msgData.KerbalGToleranceMult,
                    PressurePartLimits            = msgData.PressurePartLimits,
                    AllowNegativeCurrency         = msgData.AllowNegativeCurrency,
                    EnableKerbalExperience        = msgData.EnableKerbalExperience,
                    ImmediateLevelUp              = msgData.ImmediateLevelUp,
                    ResourceTransferObeyCrossfeed = msgData.ResourceTransferObeyCrossfeed,
                    BuildingImpactDamageMult      = msgData.BuildingImpactDamageMult,
                    PartUpgradesInCareer          = msgData.PartUpgradesInCareerAndSandbox,
                    PartUpgradesInSandbox         = msgData.PartUpgradesInCareerAndSandbox
                };

                SettingsSystem.ServerSettings.ServerCommNetParameters = new CommNetParams
                {
                    requireSignalForControl = msgData.RequireSignalForControl,
                    DSNModifier             = msgData.DsnModifier,
                    rangeModifier           = msgData.RangeModifier,
                    occlusionMultiplierVac  = msgData.OcclusionMultiplierVac,
                    occlusionMultiplierAtm  = msgData.OcclusionMultiplierAtm,
                    enableGroundStations    = msgData.EnableGroundStations,
                    plasmaBlackout          = msgData.PlasmaBlackout
                };
            }

            SystemsContainer.Get <MainSystem>().NetworkState = ClientState.SettingsSynced;
        }
Exemplo n.º 2
0
        public void HandleMessage(IServerMessageBase msg)
        {
            if (!(msg.Data is SettingsReplyMsgData msgData))
            {
                return;
            }

            SettingsSystem.ServerSettings.WarpMode                         = msgData.WarpMode;
            SettingsSystem.ServerSettings.GameMode                         = msgData.GameMode;
            SettingsSystem.ServerSettings.TerrainQuality                   = msgData.TerrainQuality;
            SettingsSystem.ServerSettings.AllowCheats                      = msgData.AllowCheats;
            SettingsSystem.ServerSettings.AllowAdmin                       = msgData.AllowAdmin;
            SettingsSystem.ServerSettings.AllowSackKerbals                 = msgData.AllowSackKerbals;
            SettingsSystem.ServerSettings.MaxNumberOfAsteroids             = msgData.MaxNumberOfAsteroids;
            SettingsSystem.ServerSettings.ConsoleIdentifier                = msgData.ConsoleIdentifier;
            SettingsSystem.ServerSettings.SafetyBubbleDistance             = msgData.SafetyBubbleDistance;
            SettingsSystem.ServerSettings.VesselUpdatesMsInterval          = msgData.VesselUpdatesMsInterval;
            SettingsSystem.ServerSettings.SecondaryVesselUpdatesMsInterval = msgData.SecondaryVesselUpdatesMsInterval;
            SettingsSystem.ServerSettings.GameDifficulty                   = msgData.GameDifficulty;
            SettingsSystem.ServerSettings.MinScreenshotIntervalMs          = msgData.MinScreenshotIntervalMs;
            SettingsSystem.ServerSettings.MaxScreenshotWidth               = msgData.MaxScreenshotWidth;
            SettingsSystem.ServerSettings.MaxScreenshotHeight              = msgData.MaxScreenshotHeight;
            SettingsSystem.ServerSettings.MinCraftLibraryRequestIntervalMs = msgData.MinScreenshotIntervalMs;

            SettingsSystem.ServerSettings.ServerParameters =
                GameParameters.GetDefaultParameters(
                    MainSystem.Singleton.ConvertGameMode(SettingsSystem.ServerSettings.GameMode),
                    (GameParameters.Preset)SettingsSystem.ServerSettings.GameDifficulty);

            if (SettingsSystem.ServerSettings.GameDifficulty == GameDifficulty.Custom)
            {
                SettingsSystem.ServerSettings.ServerParameters = new GameParameters
                {
                    preset     = GameParameters.Preset.Custom,
                    Difficulty =
                    {
                        AllowOtherLaunchSites            = msgData.AllowOtherLaunchSites,
                        AllowStockVessels                = msgData.AllowStockVessels,
                        AutoHireCrews                    = msgData.AutoHireCrews,
                        BypassEntryPurchaseAfterResearch = msgData.BypassEntryPurchaseAfterResearch,
                        IndestructibleFacilities         = msgData.IndestructibleFacilities,
                        MissingCrewsRespawn              = msgData.MissingCrewsRespawn,
                        ReentryHeatScale                 = msgData.ReentryHeatScale,
                        ResourceAbundance                = msgData.ResourceAbundance,
                        RespawnTimer  = msgData.RespawnTimer,
                        EnableCommNet = msgData.EnableCommNet
                    },
                    Career =
                    {
                        FundsGainMultiplier   = msgData.FundsGainMultiplier,
                        FundsLossMultiplier   = msgData.FundsLossMultiplier,
                        RepGainMultiplier     = msgData.RepGainMultiplier,
                        RepLossMultiplier     = msgData.RepLossMultiplier,
                        RepLossDeclined       = msgData.RepLossDeclined,
                        ScienceGainMultiplier = msgData.ScienceGainMultiplier,
                        StartingFunds         = msgData.StartingFunds,
                        StartingReputation    = msgData.StartingReputation,
                        StartingScience       = msgData.StartingScience
                    },
                    Flight =
                    {
                        CanRestart       = msgData.CanRevert,
                        CanLeaveToEditor = msgData.CanRevert
                    }
                };

                SettingsSystem.ServerSettings.ServerAdvancedParameters = new GameParameters.AdvancedParams
                {
                    ActionGroupsAlways            = msgData.ActionGroupsAlways,
                    GKerbalLimits                 = msgData.GKerbalLimits,
                    GPartLimits                   = msgData.GPartLimits,
                    KerbalGToleranceMult          = msgData.KerbalGToleranceMult,
                    PressurePartLimits            = msgData.PressurePartLimits,
                    AllowNegativeCurrency         = msgData.AllowNegativeCurrency,
                    EnableKerbalExperience        = msgData.EnableKerbalExperience,
                    ImmediateLevelUp              = msgData.ImmediateLevelUp,
                    ResourceTransferObeyCrossfeed = msgData.ResourceTransferObeyCrossfeed,
                    BuildingImpactDamageMult      = msgData.BuildingImpactDamageMult,
                    PartUpgradesInCareer          = msgData.PartUpgradesInCareerAndSandbox,
                    PartUpgradesInSandbox         = msgData.PartUpgradesInCareerAndSandbox
                };

                SettingsSystem.ServerSettings.ServerCommNetParameters = new CommNetParams
                {
                    requireSignalForControl = msgData.RequireSignalForControl,
                    DSNModifier             = msgData.DsnModifier,
                    rangeModifier           = msgData.RangeModifier,
                    occlusionMultiplierVac  = msgData.OcclusionMultiplierVac,
                    occlusionMultiplierAtm  = msgData.OcclusionMultiplierAtm,
                    enableGroundStations    = msgData.EnableGroundStations,
                    plasmaBlackout          = msgData.PlasmaBlackout
                };
            }

            //Never allow quickload, it's useless in a multiplayer game
            SettingsSystem.ServerSettings.ServerParameters.Flight.CanQuickLoad = false;

            MainSystem.NetworkState = ClientState.SettingsSynced;
        }