public override void OnLoad(ConfigNode node)
 {
     /* First, load the save-independent settings from the global settings node */
     print("[AQ:HV] Onload: " + node);
     print("[AQ:HV] Going to load from node " + AQNodeNames.Config);
     foreach (ConfigNode inode in GameDatabase.Instance.GetConfigNodes(AQNodeNames.Config))
     {
         print("[AQ:HV] Loading aqsettings from " + inode);
         InstanceAQSettings.Load(inode);
         print("[AQ:HV] Settings loaded");
         print("[AQ:HV]\tSimulationStep " + InstanceAQSettings.SimulationStep);
         print("[AQ:HV]\tMaxScaleFactor " + InstanceAQSettings.MaxScaleFactor);
     }
     /* now, load gases from the confignode supplied with the argument */
     if (node.HasNode(AQConventions.Values.AQAir) && (node.GetNode(AQConventions.Values.AQAir).CountNodes > 0))
     {
         print("[AQ:HV] Loading air from " + node.GetNode(AQConventions.Values.AQAir));
         Air.Load(node.GetNode(AQConventions.Values.AQAir));
         print("[AQ:HV] Loaded " + Air.Count + " gases.");
     }
     else             /*load from the starting air node*/
     {
         print("[AQ:HV] Going to load from StartingAir subnode of the node " + AQNodeNames.Config);
         foreach (ConfigNode inode in GameDatabase.Instance.GetConfigNodes(AQNodeNames.Config))
         {
             if (inode.HasNode(AQConventions.Values.StartingAir))
             {
                 print("[AQ:HV] Loading starting air from " + inode.GetNode(AQConventions.Values.StartingAir));
                 Air.Load(inode.GetNode(AQConventions.Values.StartingAir));
                 print("[AQ:HV] Loaded " + Air.Count + " gases.");
             }
         }
     }
     base.OnLoad(node);
 }
        public override void OnLoad(ConfigNode node)
        {
            print("[AQ:GRE] OnLoad: " + node);
            AQReaction reactionloader;

            foreach (ConfigNode inode in GameDatabase.Instance.GetConfigNodes(AQNodeNames.Config))
            {
                print("[AQ:GRE] Loading aqsettings from " + inode);
                InstanceAQSettings.Load(inode);
            }
            if (node.HasValue(AQConventions.Values.Description))
            {
                Description = node.GetValue(AQConventions.Values.Description);
            }
            if (node.HasNode(AQConventions.Values.AQReactions))
            {
                print("[AQ:GRE] Loading reactions for " + Description);
                Reactions = new List <AQReaction>();
                foreach (ConfigNode reactionnode in node.GetNode(AQConventions.Values.AQReactions).GetNodes())
                {
                    print("[AQ:GRE] discovered " + node.GetNode(AQConventions.Values.AQReactions).GetNodes().Count() + " reactions");
                    reactionloader = new AQReaction();
                    print("[AQ:GRE] Loading volatile properties from " + reactionnode);
                    reactionloader.Load(reactionnode);
                    print("[AQ:GRE] Looking for reaction definitions with the name " + reactionloader.Name);
                    foreach (ConfigNode reactiondefinition in GameDatabase.Instance.GetConfigNodes(reactionloader.Name))
                    {
                        print("[AQ:GRE] Loading invariant properties from " + reactiondefinition);
                        reactionloader.LoadInvariant(reactiondefinition);
                    }
                    Reactions.Add(reactionloader);
                    print("[AQ:GRE] Loaded " + Reactions.Last().Name + " with " +
                          Reactions.Last().GasReagents.Count + " gas reagents and " +
                          Reactions.Last().ResourceReagents.Count + " resource reagents");
                }
                print("[AQ:GRE] Finished loading " + Reactions.Count + " reactions");
            }
            base.OnLoad(node);
        }