public static bool PopulateSaveableFields(VehicleDef def, bool hardReset = false)
 {
     try
     {
         if (hardReset)
         {
             VehicleMod.settings.vehicles.fieldSettings.Remove(def.defName);
         }
         if (!VehicleMod.settings.vehicles.fieldSettings.TryGetValue(def.defName, out var currentDict))
         {
             VehicleMod.settings.vehicles.fieldSettings.Add(def.defName, new Dictionary <SaveableField, SavedField <object> >());
             currentDict = VehicleMod.settings.vehicles.fieldSettings[def.defName];
         }
         IterateTypeFields(def, def.GetType(), def, ref currentDict);
         foreach (CompProperties props in def.comps)
         {
             IterateTypeFields(def, props.GetType(), props, ref currentDict);
         }
         //Redundancy only
         VehicleMod.settings.vehicles.fieldSettings[def.defName] = currentDict;
     }
     catch (Exception ex)
     {
         Log.Error($"Failed to populate field settings for <text>{def.defName}</text>.\nException=\"{ex.Message}\"\nInnerException=\"{ex.InnerException}\"");
         return(false);
     }
     return(true);
 }
Example #2
0
 private static void ResetSelectedCachedTypes()
 {
     if (selectedDef != null)
     {
         foreach (FieldInfo field in selectedDef.GetType().GetPostSettingsFields())
         {
             IterateTypeFields(typeof(VehicleDef), field);
         }
         foreach (CompProperties comp in selectedDef.comps)
         {
             foreach (FieldInfo field in comp.GetType().GetPostSettingsFields())
             {
                 IterateTypeFields(comp.GetType(), field);
             }
         }
     }
 }