Example #1
0
 private void GuiOn()
 {
     renderDisplay = true;
     //Load initial values
     config          = LifeSupportScenario.Instance.settings.GetSettings();
     supplyTime      = string.Format("{0:0.########}", config.SupplyTime);
     ecTime          = string.Format("{0:0.########}", config.ECTime);
     evaTime         = string.Format("{0:0.########}", config.EVATime);
     ecAmount        = string.Format("{0:0.########}", config.ECAmount);
     supplyAmount    = string.Format("{0:0.########}", config.SupplyAmount);
     wasteAmount     = string.Format("{0:0.########}", config.WasteAmount);
     wearAmount      = string.Format("{0:0.########}", config.ReplacementPartAmount);
     supNoVet        = config.NoSupplyEffect;
     supVet          = config.NoSupplyEffectVets;
     habNoVet        = config.NoHomeEffect;
     habVet          = config.NoHomeEffectVets;
     ecNoVet         = config.NoECEffect;
     ecVet           = config.NoECEffectVets;
     evaNoVet        = config.EVAEffect;
     evaVet          = config.EVAEffectVets;
     habMulti        = string.Format("{0:0.########}", config.HabMultiplier);
     enableRecyclers = config.EnableRecyclers;
     scoutHabTime    = config.ScoutHabTime.ToString();
     permaHabTime    = config.PermaHabTime.ToString();
     habRange        = config.HabRange.ToString();
     homeAltitude    = config.HomeWorldAltitude.ToString();
     baseHabTime     = config.BaseHabTime.ToString();
     vetNames        = config.VetNames;
 }
        private LifeSupportConfig LoadLifeSupportConfig()
        {
            var lsNodes = GameDatabase.Instance.GetConfigNodes("LIFE_SUPPORT_SETTINGS");
            var finalSettings = new LifeSupportConfig
            {
                HabMultiplier = int.MaxValue,
                BaseHabTime = double.MaxValue,
                ECAmount = 0f,
                EVAEffect = 0,
                EVAEffectVets = 0,
                EVATime = float.MaxValue,
                HomeWorldAltitude = int.MaxValue,
                NoHomeEffect = 0,
                NoHomeEffectVets = 0,
                NoSupplyEffect = 0,
                NoSupplyEffectVets = 0,
                SupplyTime = float.MaxValue,
                ECTime = float.MaxValue,
                NoECEffectVets = 0,
                NoECEffect = 0,
                SupplyAmount = 0f,
                WasteAmount = 0f,
                ReplacementPartAmount = 0f,
                EnableRecyclers = false,
                HabRange = 2000,
                VetNames = ""
            };
            foreach (var lsNode in lsNodes)
            {
                var settings = ResourceUtilities.LoadNodeProperties<LifeSupportConfig>(lsNode);
                finalSettings.HabMultiplier = Math.Min(settings.HabMultiplier, finalSettings.HabMultiplier);
                finalSettings.BaseHabTime = Math.Min(settings.BaseHabTime, finalSettings.BaseHabTime);
                finalSettings.HomeWorldAltitude = Math.Min(settings.HomeWorldAltitude, finalSettings.HomeWorldAltitude);
                finalSettings.NoHomeEffect = Math.Max(settings.NoHomeEffect, finalSettings.NoHomeEffect);
                finalSettings.NoHomeEffectVets = Math.Max(settings.NoHomeEffectVets, finalSettings.NoHomeEffectVets);
                finalSettings.NoSupplyEffect = Math.Max(settings.NoSupplyEffect, finalSettings.NoSupplyEffect);
                finalSettings.NoSupplyEffectVets = Math.Max(settings.NoSupplyEffectVets, finalSettings.NoSupplyEffectVets);

                if(settings.ECTime > ResourceUtilities.FLOAT_TOLERANCE)
                    finalSettings.ECTime = Math.Min(settings.ECTime, finalSettings.ECTime);
                if (settings.EVATime > ResourceUtilities.FLOAT_TOLERANCE)
                    finalSettings.EVATime = Math.Min(settings.EVATime, finalSettings.EVATime);
                if (settings.SupplyTime > ResourceUtilities.FLOAT_TOLERANCE)
                    finalSettings.SupplyTime = Math.Min(settings.SupplyTime, finalSettings.SupplyTime);

                finalSettings.SupplyAmount = Math.Max(settings.SupplyAmount, finalSettings.SupplyAmount);
                finalSettings.ECAmount = Math.Max(settings.ECAmount, finalSettings.ECAmount);
                finalSettings.NoECEffect = Math.Max(settings.NoECEffect, finalSettings.NoECEffect);
                finalSettings.NoECEffectVets = Math.Max(settings.NoECEffectVets, finalSettings.NoECEffectVets);
                finalSettings.WasteAmount = Math.Max(settings.WasteAmount, finalSettings.WasteAmount);
                finalSettings.ReplacementPartAmount = Math.Max(settings.ReplacementPartAmount, finalSettings.ReplacementPartAmount);
                finalSettings.EVAEffect = Math.Max(settings.EVAEffect, finalSettings.EVAEffect);
                finalSettings.EVAEffectVets = Math.Max(settings.EVAEffectVets, finalSettings.EVAEffectVets);
                finalSettings.VetNames += settings.VetNames + ",";
                finalSettings.HabRange = Math.Min(settings.HabRange, finalSettings.HabRange);
                if (settings.EnableRecyclers)
                    finalSettings.EnableRecyclers = true;
            }
            return finalSettings;
        }
Example #3
0
 public void SaveConfig(LifeSupportConfig config)
 {
     _Settings.HabMultiplier         = config.HabMultiplier;
     _Settings.BaseHabTime           = config.BaseHabTime;
     _Settings.ECAmount              = config.ECAmount;
     _Settings.PermaHabTime          = config.PermaHabTime;
     _Settings.ScoutHabTime          = config.ScoutHabTime;
     _Settings.EVAEffect             = config.EVAEffect;
     _Settings.EVAEffectVets         = config.EVAEffectVets;
     _Settings.EVATime               = config.EVATime;
     _Settings.HomeWorldAltitude     = config.HomeWorldAltitude;
     _Settings.NoHomeEffect          = config.NoHomeEffect;
     _Settings.NoHomeEffectVets      = config.NoHomeEffectVets;
     _Settings.NoSupplyEffect        = config.NoSupplyEffect;
     _Settings.NoSupplyEffectVets    = config.NoSupplyEffectVets;
     _Settings.SupplyTime            = config.SupplyTime;
     _Settings.ECTime                = config.ECTime;
     _Settings.NoECEffectVets        = config.NoECEffectVets;
     _Settings.NoECEffect            = config.NoECEffect;
     _Settings.SupplyAmount          = config.SupplyAmount;
     _Settings.WasteAmount           = config.WasteAmount;
     _Settings.ReplacementPartAmount = config.ReplacementPartAmount;
     _Settings.EnableRecyclers       = config.EnableRecyclers;
     _Settings.HabRange              = config.HabRange;
     _Settings.VetNames              = config.VetNames;
 }
        private LifeSupportConfig SetupSettings()
        {
            print("Loading Config");
            ConfigNode[] statNodes = SettingsNode.GetNodes("LIFE_SUPPORT_CONFIG");
            print("StatNodeCount:  " + statNodes.Count());

            LifeSupportConfig tmpSettings = null;
            var defSettings = LoadLifeSupportConfig();

            if (statNodes.Any())
            {
                tmpSettings = ImportConfig(statNodes[0]);
                //Guard clauses
                if (tmpSettings.ECTime < ResourceUtilities.FLOAT_TOLERANCE)
                {
                    tmpSettings.ECTime = defSettings.ECTime;
                }
                if (tmpSettings.SupplyAmount < ResourceUtilities.FLOAT_TOLERANCE)
                {
                    tmpSettings.SupplyAmount = defSettings.SupplyAmount;
                }
            }
            else
            {
                tmpSettings = LoadLifeSupportConfig();
            }

            return(tmpSettings);
        }
Example #5
0
        private void SaveSettings(LifeSupportConfig config)
        {
            config.SupplyTime            = SaveFloat(config.SupplyTime, supplyTime);
            config.ECTime                = SaveFloat(config.ECTime, ecTime);
            config.EVATime               = SaveFloat(config.EVATime, evaTime);
            config.ECAmount              = SaveFloat(config.ECAmount, ecAmount);
            config.SupplyAmount          = SaveFloat(config.SupplyAmount, supplyAmount);
            config.WasteAmount           = SaveFloat(config.WasteAmount, wasteAmount);
            config.ReplacementPartAmount = SaveFloat(config.ReplacementPartAmount, wearAmount);
            config.EVAEffect             = evaNoVet;
            config.EVAEffectVets         = evaVet;
            config.NoHomeEffect          = habNoVet;
            config.NoHomeEffectVets      = habVet;
            config.NoSupplyEffect        = supNoVet;
            config.NoSupplyEffectVets    = supVet;

            config.NoECEffect     = ecNoVet;
            config.NoECEffectVets = ecVet;
            config.ScoutHabTime   = SaveDouble(config.ScoutHabTime, scoutHabTime);
            config.PermaHabTime   = SaveDouble(config.PermaHabTime, permaHabTime);

            config.HabMultiplier     = SaveInt(config.HabMultiplier, habMulti);
            config.EnableRecyclers   = enableRecyclers;
            config.HabRange          = SaveDouble(config.HabRange, habRange);
            config.HomeWorldAltitude = SaveInt(config.HomeWorldAltitude, homeAltitude);
            config.BaseHabTime       = SaveDouble(config.BaseHabTime, baseHabTime);
            config.VetNames          = vetNames;
            LifeSupportScenario.Instance.settings.SaveConfig(config);
            GuiOff();
        }
 private void GuiOn()
 {
     renderDisplay = true;
     //Load initial values
     config = LifeSupportScenario.Instance.settings.GetSettings();
     supplyTime = string.Format("{0:0.########}", config.SupplyTime);
     ecTime = string.Format("{0:0.########}", config.ECTime);
     evaTime = string.Format("{0:0.########}", config.EVATime);
     ecAmount = string.Format("{0:0.########}", config.ECAmount);
     supplyAmount = string.Format("{0:0.########}", config.SupplyAmount);
     wasteAmount = string.Format("{0:0.########}", config.WasteAmount);
     wearAmount = string.Format("{0:0.########}", config.ReplacementPartAmount);
     supNoVet = config.NoSupplyEffect;
     supVet = config.NoSupplyEffectVets;
     habNoVet = config.NoHomeEffect;
     habVet = config.NoHomeEffectVets;
     ecNoVet = config.NoECEffect;
     ecVet = config.NoECEffectVets;
     evaNoVet = config.EVAEffect;
     evaVet = config.EVAEffectVets;
     habMulti = string.Format("{0:0.########}", config.HabMultiplier);
     enableRecyclers = config.EnableRecyclers;
     habRange = config.HabRange.ToString();
     homeAltitude = config.HomeWorldAltitude.ToString();
     baseHabTime = config.BaseHabTime.ToString();
     vetNames = config.VetNames;
 }
Example #7
0
        private LifeSupportConfig LoadLifeSupportConfig()
        {
            var lsNodes       = GameDatabase.Instance.GetConfigNodes("LIFE_SUPPORT_SETTINGS");
            var finalSettings = new LifeSupportConfig
            {
                HabMultiplier         = int.MaxValue,
                BaseHabTime           = double.MaxValue,
                ECAmount              = 0f,
                EVAEffect             = 0,
                EVAEffectVets         = 0,
                EVATime               = float.MaxValue,
                HomeWorldAltitude     = int.MaxValue,
                NoHomeEffect          = 0,
                NoHomeEffectVets      = 0,
                NoSupplyEffect        = 0,
                NoSupplyEffectVets    = 0,
                SupplyTime            = float.MaxValue,
                SupplyAmount          = 0f,
                WasteAmount           = 0f,
                ReplacementPartAmount = 0f,
                EnableRecyclers       = false,
                HabRange              = 2000
            };

            foreach (var lsNode in lsNodes)
            {
                var settings = ResourceUtilities.LoadNodeProperties <LifeSupportConfig>(lsNode);
                finalSettings.HabMultiplier         = Math.Min(settings.HabMultiplier, finalSettings.HabMultiplier);
                finalSettings.BaseHabTime           = Math.Min(settings.BaseHabTime, finalSettings.BaseHabTime);
                finalSettings.ECAmount              = Math.Max(settings.ECAmount, finalSettings.ECAmount);
                finalSettings.HomeWorldAltitude     = Math.Min(settings.HomeWorldAltitude, finalSettings.HomeWorldAltitude);
                finalSettings.NoHomeEffect          = Math.Max(settings.NoHomeEffect, finalSettings.NoHomeEffect);
                finalSettings.NoHomeEffectVets      = Math.Max(settings.NoHomeEffectVets, finalSettings.NoHomeEffectVets);
                finalSettings.NoSupplyEffect        = Math.Max(settings.NoSupplyEffect, finalSettings.NoSupplyEffect);
                finalSettings.NoSupplyEffectVets    = Math.Max(settings.NoSupplyEffectVets, finalSettings.NoSupplyEffectVets);
                finalSettings.SupplyTime            = Math.Min(settings.SupplyTime, finalSettings.SupplyTime);
                finalSettings.EVATime               = Math.Min(settings.EVATime, finalSettings.EVATime);
                finalSettings.SupplyAmount          = Math.Max(settings.SupplyAmount, finalSettings.SupplyAmount);
                finalSettings.WasteAmount           = Math.Max(settings.WasteAmount, finalSettings.WasteAmount);
                finalSettings.ReplacementPartAmount = Math.Max(settings.ReplacementPartAmount, finalSettings.ReplacementPartAmount);
                finalSettings.EVAEffect             = Math.Max(settings.EVAEffect, finalSettings.EVAEffect);
                finalSettings.EVAEffectVets         = Math.Max(settings.EVAEffectVets, finalSettings.EVAEffectVets);
                finalSettings.VetNames             += settings.VetNames + ",";
                finalSettings.HabRange              = Math.Min(settings.HabRange, finalSettings.HabRange);
                if (settings.EnableRecyclers)
                {
                    finalSettings.EnableRecyclers = true;
                }
            }
            return(finalSettings);
        }
 public void SaveConfig(LifeSupportConfig config)
 {
     _Settings.HabMultiplier = config.HabMultiplier;
     _Settings.BaseHabTime = config.BaseHabTime;
     _Settings.ECAmount = config.ECAmount;
     _Settings.EVAEffect = config.EVAEffect;
     _Settings.EVAEffectVets = config.EVAEffectVets;
     _Settings.EVATime = config.EVATime;
     _Settings.HomeWorldAltitude = config.HomeWorldAltitude;
     _Settings.NoHomeEffect = config.NoHomeEffect;
     _Settings.NoHomeEffectVets = config.NoHomeEffectVets;
     _Settings.NoSupplyEffect = config.NoSupplyEffect;
     _Settings.NoSupplyEffectVets = config.NoSupplyEffectVets;
     _Settings.SupplyTime = config.SupplyTime;
     _Settings.ECTime = config.ECTime;
     _Settings.NoECEffectVets = config.NoECEffectVets;
     _Settings.NoECEffect = config.NoECEffect;
     _Settings.SupplyAmount = config.SupplyAmount;
     _Settings.WasteAmount = config.WasteAmount;
     _Settings.ReplacementPartAmount = config.ReplacementPartAmount;
     _Settings.EnableRecyclers = config.EnableRecyclers;
     _Settings.HabRange = config.HabRange;
     _Settings.VetNames = config.VetNames;
 }
        public void Save(ConfigNode node)
        {
            if (node.HasNode("LIFE_SUPPORT_SETTINGS"))
            {
                SettingsNode = node.GetNode("LIFE_SUPPORT_SETTINGS");
            }
            else
            {
                SettingsNode = node.AddNode("LIFE_SUPPORT_SETTINGS");
            }

            if (_Settings == null)
                _Settings = LoadLifeSupportConfig();

            foreach (LifeSupportStatus r in _StatusInfo)
            {
                var rNode = new ConfigNode("STATUS_DATA");
                rNode.AddValue("KerbalName", r.KerbalName);
                rNode.AddValue("LastMeal", r.LastMeal);
                rNode.AddValue("LastEC", r.LastEC);
                rNode.AddValue("LastOnKerbin", r.LastOnKerbin);
                rNode.AddValue("MaxOffKerbinTime", r.MaxOffKerbinTime);
                rNode.AddValue("CurrentVesselId", r.CurrentVesselId);
                rNode.AddValue("PreviousVesselId", r.PreviousVesselId);
                rNode.AddValue("TimeEnteredVessel", r.TimeEnteredVessel);
                rNode.AddValue("IsGrouchy", r.IsGrouchy);
                rNode.AddValue("OldTrait", r.OldTrait);
                rNode.AddValue("LastUpdate", r.LastUpdate);
                SettingsNode.AddNode(rNode);
            }

            foreach (VesselSupplyStatus r in _VesselInfo)
            {
                var rNode = new ConfigNode("VESSEL_DATA");
                rNode.AddValue("VesselId", r.VesselId);
                rNode.AddValue("VesselName", r.VesselName);
                rNode.AddValue("SuppliesLeft", r.SuppliesLeft);
                rNode.AddValue("ECLeft", r.ECLeft);
                rNode.AddValue("NumCrew", r.NumCrew);
                rNode.AddValue("RecyclerMultiplier", r.RecyclerMultiplier);
                rNode.AddValue("CrewCap", r.CrewCap);
                rNode.AddValue("ExtraHabSpace", r.ExtraHabSpace);
                rNode.AddValue("VesselHabMultiplier", r.VesselHabMultiplier);
                rNode.AddValue("LastFeeding", r.LastFeeding);
                rNode.AddValue("LastECCheck", r.LastECCheck);
                SettingsNode.AddNode(rNode);
            }

            var sNode = new ConfigNode("LIFE_SUPPORT_CONFIG");
            sNode.AddValue("HabMultiplier",_Settings.HabMultiplier);
            sNode.AddValue("BaseHabTime", _Settings.BaseHabTime);
            sNode.AddValue("ECAmount", _Settings.ECAmount);
            sNode.AddValue("EVAEffect", _Settings.EVAEffect);
            sNode.AddValue("EVAEffectVets", _Settings.EVAEffectVets);
            sNode.AddValue("EVATime", _Settings.EVATime);
            sNode.AddValue("HomeWorldAltitude", _Settings.HomeWorldAltitude);
            sNode.AddValue("NoHomeEffect", _Settings.NoHomeEffect);
            sNode.AddValue("NoHomeEffectVets", _Settings.NoHomeEffectVets);
            sNode.AddValue("NoSupplyEffect", _Settings.NoSupplyEffect);
            sNode.AddValue("NoSupplyEffectVets", _Settings.NoSupplyEffectVets);
            sNode.AddValue("SupplyTime", _Settings.SupplyTime);
            sNode.AddValue("ECTime", _Settings.ECTime);
            sNode.AddValue("ECEffectVets", _Settings.NoECEffectVets);
            sNode.AddValue("NoECEffectVets", _Settings.SupplyTime);
            sNode.AddValue("NoECEffect", _Settings.NoECEffect);
            sNode.AddValue("WasteAmount", _Settings.WasteAmount);
            sNode.AddValue("ReplacementPartAmount", _Settings.ReplacementPartAmount);
            sNode.AddValue("EnableRecyclers", _Settings.EnableRecyclers);
            sNode.AddValue("HabRange", _Settings.HabRange);
            sNode.AddValue("VetNames", _Settings.VetNames);

            SettingsNode.AddNode(sNode);

            //Reset cache
            LifeSupportManager.Instance.ResetCache();
        }
Example #10
0
        private LifeSupportConfig LoadLifeSupportConfig()
        {
            var lsNodes       = GameDatabase.Instance.GetConfigNodes("LIFE_SUPPORT_SETTINGS");
            var finalSettings = new LifeSupportConfig
            {
                HabMultiplier         = int.MaxValue,
                BaseHabTime           = double.MaxValue,
                ECAmount              = 0f,
                EVAEffect             = 0,
                EVAEffectVets         = 0,
                EVATime               = float.MaxValue,
                HomeWorldAltitude     = int.MaxValue,
                NoHomeEffect          = 0,
                NoHomeEffectVets      = 0,
                NoSupplyEffect        = 0,
                NoSupplyEffectVets    = 0,
                SupplyTime            = float.MaxValue,
                ECTime                = float.MaxValue,
                NoECEffectVets        = 0,
                NoECEffect            = 0,
                SupplyAmount          = 0f,
                WasteAmount           = 0f,
                ReplacementPartAmount = 0f,
                EnableRecyclers       = false,
                ScoutHabTime          = 9180000,
                PermaHabTime          = 459000000,
                HabRange              = 2000,
                VetNames              = ""
            };

            var count = lsNodes.Length;

            for (int i = 0; i < count; ++i)
            {
                var lsNode   = lsNodes[i];
                var settings = ResourceUtilities.LoadNodeProperties <LifeSupportConfig>(lsNode);
                finalSettings.HabMultiplier      = Math.Min(settings.HabMultiplier, finalSettings.HabMultiplier);
                finalSettings.BaseHabTime        = Math.Min(settings.BaseHabTime, finalSettings.BaseHabTime);
                finalSettings.HomeWorldAltitude  = Math.Min(settings.HomeWorldAltitude, finalSettings.HomeWorldAltitude);
                finalSettings.NoHomeEffect       = Math.Max(settings.NoHomeEffect, finalSettings.NoHomeEffect);
                finalSettings.NoHomeEffectVets   = Math.Max(settings.NoHomeEffectVets, finalSettings.NoHomeEffectVets);
                finalSettings.NoSupplyEffect     = Math.Max(settings.NoSupplyEffect, finalSettings.NoSupplyEffect);
                finalSettings.NoSupplyEffectVets = Math.Max(settings.NoSupplyEffectVets, finalSettings.NoSupplyEffectVets);

                if (settings.ECTime > ResourceUtilities.FLOAT_TOLERANCE)
                {
                    finalSettings.ECTime = Math.Min(settings.ECTime, finalSettings.ECTime);
                }
                if (settings.EVATime > ResourceUtilities.FLOAT_TOLERANCE)
                {
                    finalSettings.EVATime = Math.Min(settings.EVATime, finalSettings.EVATime);
                }
                if (settings.SupplyTime > ResourceUtilities.FLOAT_TOLERANCE)
                {
                    finalSettings.SupplyTime = Math.Min(settings.SupplyTime, finalSettings.SupplyTime);
                }
                if (settings.ScoutHabTime > 1000d)
                {
                    finalSettings.ScoutHabTime = Math.Min(settings.ScoutHabTime, finalSettings.ScoutHabTime);
                }
                if (settings.PermaHabTime > 1000d)
                {
                    finalSettings.PermaHabTime = Math.Min(settings.PermaHabTime, finalSettings.PermaHabTime);
                }

                finalSettings.SupplyAmount          = Math.Max(settings.SupplyAmount, finalSettings.SupplyAmount);
                finalSettings.ECAmount              = Math.Max(settings.ECAmount, finalSettings.ECAmount);
                finalSettings.NoECEffect            = Math.Max(settings.NoECEffect, finalSettings.NoECEffect);
                finalSettings.NoECEffectVets        = Math.Max(settings.NoECEffectVets, finalSettings.NoECEffectVets);
                finalSettings.WasteAmount           = Math.Max(settings.WasteAmount, finalSettings.WasteAmount);
                finalSettings.ReplacementPartAmount = Math.Max(settings.ReplacementPartAmount, finalSettings.ReplacementPartAmount);
                finalSettings.EVAEffect             = Math.Max(settings.EVAEffect, finalSettings.EVAEffect);
                finalSettings.EVAEffectVets         = Math.Max(settings.EVAEffectVets, finalSettings.EVAEffectVets);
                finalSettings.VetNames             += settings.VetNames + ",";
                finalSettings.HabRange              = Math.Min(settings.HabRange, finalSettings.HabRange);
                if (settings.EnableRecyclers)
                {
                    finalSettings.EnableRecyclers = true;
                }
            }
            return(finalSettings);
        }
Example #11
0
        public void Save(ConfigNode node)
        {
            if (node.HasNode("LIFE_SUPPORT_SETTINGS"))
            {
                SettingsNode = node.GetNode("LIFE_SUPPORT_SETTINGS");
            }
            else
            {
                SettingsNode = node.AddNode("LIFE_SUPPORT_SETTINGS");
            }

            if (_Settings == null)
            {
                _Settings = LoadLifeSupportConfig();
            }

            if (_StatusInfo != null)
            {
                var count = _StatusInfo.Count;
                for (int i = 0; i < count; ++i)
                {
                    var r     = _StatusInfo[i];
                    var rNode = new ConfigNode("STATUS_DATA");
                    rNode.AddValue("KerbalName", r.KerbalName);
                    rNode.AddValue("HomeBodyId", r.HomeBodyId);
                    rNode.AddValue("LastMeal", r.LastMeal);
                    rNode.AddValue("LastEC", r.LastEC);
                    rNode.AddValue("LastAtHome", r.LastAtHome);
                    rNode.AddValue("LastSOIChange", r.LastSOIChange);
                    rNode.AddValue("LastPlanet", r.LastPlanet);
                    rNode.AddValue("MaxOffKerbinTime", r.MaxOffKerbinTime);
                    rNode.AddValue("CurrentVesselId", r.CurrentVesselId);
                    rNode.AddValue("PreviousVesselId", r.PreviousVesselId);
                    rNode.AddValue("TimeEnteredVessel", r.TimeEnteredVessel);
                    rNode.AddValue("IsGrouchy", r.IsGrouchy);
                    rNode.AddValue("OldTrait", r.OldTrait);
                    rNode.AddValue("LastUpdate", r.LastUpdate);
                    SettingsNode.AddNode(rNode);
                }
            }

            if (_VesselInfo != null)
            {
                var count = _VesselInfo.Count;
                for (int i = 0; i < count; ++i)
                {
                    var r = _VesselInfo[i];
                    if (string.IsNullOrEmpty(r.VesselName))
                    {
                        continue;
                    }
                    var rNode = new ConfigNode("VESSEL_DATA");
                    rNode.AddValue("VesselId", r.VesselId);
                    rNode.AddValue("VesselName", r.VesselName);
                    rNode.AddValue("SuppliesLeft", r.SuppliesLeft);
                    rNode.AddValue("ECLeft", r.ECLeft);
                    rNode.AddValue("NumCrew", r.NumCrew);
                    rNode.AddValue("RecyclerMultiplier", r.RecyclerMultiplier);
                    rNode.AddValue("CrewCap", r.CrewCap);
                    rNode.AddValue("ExtraHabSpace", r.ExtraHabSpace);
                    rNode.AddValue("VesselHabMultiplier", r.VesselHabMultiplier);
                    rNode.AddValue("CachedHabTime", r.CachedHabTime);
                    rNode.AddValue("LastFeeding", r.LastFeeding);
                    rNode.AddValue("LastECCheck", r.LastECCheck);
                    SettingsNode.AddNode(rNode);
                }
            }

            if (_Settings != null)
            {
                var sNode = new ConfigNode("LIFE_SUPPORT_CONFIG");
                sNode.AddValue("HabMultiplier", _Settings.HabMultiplier);
                sNode.AddValue("BaseHabTime", _Settings.BaseHabTime);
                sNode.AddValue("ECAmount", _Settings.ECAmount);
                sNode.AddValue("ScoutHabTime", _Settings.ScoutHabTime);
                sNode.AddValue("PermaHabTime", _Settings.PermaHabTime);
                sNode.AddValue("SupplyAmount", _Settings.SupplyAmount);
                sNode.AddValue("EVAEffect", _Settings.EVAEffect);
                sNode.AddValue("EVAEffectVets", _Settings.EVAEffectVets);
                sNode.AddValue("EVATime", _Settings.EVATime);
                sNode.AddValue("HomeWorldAltitude", _Settings.HomeWorldAltitude);
                sNode.AddValue("NoHomeEffect", _Settings.NoHomeEffect);
                sNode.AddValue("NoHomeEffectVets", _Settings.NoHomeEffectVets);
                sNode.AddValue("NoSupplyEffect", _Settings.NoSupplyEffect);
                sNode.AddValue("NoSupplyEffectVets", _Settings.NoSupplyEffectVets);
                sNode.AddValue("SupplyTime", _Settings.SupplyTime);
                sNode.AddValue("ECTime", _Settings.ECTime);
                sNode.AddValue("NoECEffectVets", _Settings.NoECEffectVets);
                sNode.AddValue("NoECEffect", _Settings.NoECEffect);
                sNode.AddValue("WasteAmount", _Settings.WasteAmount);
                sNode.AddValue("ReplacementPartAmount", _Settings.ReplacementPartAmount);
                sNode.AddValue("EnableRecyclers", _Settings.EnableRecyclers);
                sNode.AddValue("HabRange", _Settings.HabRange);
                sNode.AddValue("VetNames", _Settings.VetNames);
                SettingsNode.AddNode(sNode);
            }
            //Reset cache
            LifeSupportManager.Instance.ResetCache();
        }
        private void SaveSettings(LifeSupportConfig config)
        {
            config.SupplyTime = SaveFloat(config.SupplyTime, supplyTime);
            config.ECTime = SaveFloat(config.ECTime, ecTime);
            config.EVATime = SaveFloat(config.EVATime, evaTime);
            config.ECAmount = SaveFloat(config.ECAmount, ecAmount);
            config.SupplyAmount = SaveFloat(config.SupplyAmount, supplyAmount);
            config.WasteAmount = SaveFloat(config.WasteAmount, wasteAmount);
            config.ReplacementPartAmount = SaveFloat(config.ReplacementPartAmount, wearAmount);
            config.EVAEffect = evaNoVet;
            config.EVAEffectVets = evaVet;
            config.NoHomeEffect = habNoVet;
            config.NoHomeEffectVets = habVet;
            config.NoSupplyEffect = supNoVet;
            config.NoSupplyEffectVets = supVet;

            config.NoECEffect = ecNoVet;
            config.NoECEffectVets = ecVet;

            config.HabMultiplier = SaveInt(config.HabMultiplier,habMulti);
            config.EnableRecyclers = enableRecyclers;
            config.HabRange = SaveDouble(config.HabRange,habRange);
            config.HomeWorldAltitude = SaveInt(config.HomeWorldAltitude,homeAltitude);
            config.BaseHabTime = SaveDouble(config.BaseHabTime,baseHabTime);
            config.VetNames = vetNames;
            LifeSupportScenario.Instance.settings.SaveConfig(config);
            GuiOff();
        }
 public void Load(ConfigNode node)
 {
     if (node.HasNode("LIFE_SUPPORT_SETTINGS"))
     {
         SettingsNode = node.GetNode("LIFE_SUPPORT_SETTINGS");
         _StatusInfo = SetupStatusInfo();
         _VesselInfo = SetupVesselInfo();
         _Settings = SetupSettings();
         //Reset cache
         LifeSupportManager.Instance.ResetCache();
     }
     else
     {
         _StatusInfo = new List<LifeSupportStatus>();
         _VesselInfo = new List<VesselSupplyStatus>();
         _Settings = null;
     }
 }
 public LifeSupportConfig GetSettings()
 {
     return _Settings ?? (_Settings = SetupSettings());
 }