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); }
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); } } } }