public static void Test()
        {
            Console.WriteLine("ConfigNodeWithSteroids.Test");

            // We run from inside bin/[debug|release]/Tests
            ConfigNode node = ConfigNode.Load("../../../Tests/user.cfg");

            KSPe.ConfigNodeWithSteroids sn = KSPe.ConfigNodeWithSteroids.from(node).GetNode("KJR");
            bool b = sn.GetValue <bool>("debug");

            System.Console.WriteLine(b ? "TRUE" : "FALSE");
            int i = 0;

            foreach (ConfigNode cc in sn.GetNodes("Exempt"))
            {
                System.Console.WriteLine(i++.ToString());
                KSPe.ConfigNodeWithSteroids c = KSPe.ConfigNodeWithSteroids.from(cc);
                if (c.HasValue("PartType"))
                {
                    System.Console.WriteLine(c.GetValue <string>("PartType"));
                }
                if (c.HasValue("ModuleType"))
                {
                    System.Console.WriteLine(c.GetValue <string>("ModuleType"));
                }
                if (c.HasValue("DecouplerStiffeningExtensionType"))
                {
                    System.Console.WriteLine(c.GetValue <string>("DecouplerStiffeningExtensionType"));
                }
            }
        }
        public static ConfigNodeWithSteroids from(global::ConfigNode obj)
        {
            ConfigNodeWithSteroids r = new ConfigNodeWithSteroids();

            r.CopyFrom(obj);
            return(r);
        }
 internal static Globals from(KSPe.ConfigNodeWithSteroids node)
 {
     return(new Globals(
                node.GetValue <bool>("DebugMode", false),
                LogConfig.from(node.GetNode("Log"))
                ));
 }
            internal static LogConfig from(KSPe.ConfigNodeWithSteroids node)
            {
                int defaultLevel = GameSettings.VERBOSE_DEBUG_LOG ? (int)Util.Log.Level.DETAIL : (int)Util.Log.Level.INFO;
                int level        = node.GetValue <int>("LogLevel", defaultLevel);

                level = Math.Max(0, Math.Min(5, level));
                return(new LogConfig(
                           (Util.Log.Level)level,
                           node.GetValue <bool>("ThreadSafe", false)
                           ));
            }
 internal static void Init()
 {
     if (!System.IO.File.Exists("PluginData/KSPe.cfg"))
     {
         LOG.info("KSPe.cfg does not exists. Using defaults.");
         _default = Globals.createDefault();
     }
     else
     {
         try
         {
             ConfigNode node = ConfigNode.Load("PluginData/KSPe.cfg");
             KSPE.ConfigNodeWithSteroids sn = KSPE.ConfigNodeWithSteroids.from(node);
             sn       = sn.GetNode("KSPe");
             _default = Globals.from(sn);
             LOG.info("Globals: Default {0} ", _default);
             if (sn.HasNode("LOCAL"))
             {
                 foreach (ConfigNode n in sn.GetNode("LOCAL").nodes)
                 {
                     try
                     {
                         _locals.Add(n.name, Globals.from(KSPE.ConfigNodeWithSteroids.from(n)));
                         LOG.info("Globals: {0} {1} ", n.name, _locals[n.name]);
                     }
                     catch (Exception e)
                     {
                         LOG.error(e, "Error trying to read Node {0} : {1}", n.name);
                     }
                 }
             }
             LOG.info("KSPe.cfg loaded.");
         }
         catch (Exception e)
         {
             LOG.error(e, "Error on reading KSPe.cfg dur '{0}'. Using defaults.", e.Message);
             _default = Globals.createDefault();
         }
     }
 }
 public new ConfigNodeWithSteroids GetNode(string name)
 {
     return(ConfigNodeWithSteroids.from(base.GetNode(name)));
 }