public static void reinit(bool reloadSettings = true, bool reloadIconSet = true, bool recalcIconPos = true) { pawnCapacities = new PawnCapacityDef[] { PawnCapacityDefOf.BloodFiltration, PawnCapacityDefOf.BloodPumping, PawnCapacityDefOf.Breathing, PawnCapacityDefOf.Consciousness, PawnCapacityDefOf.Eating, PawnCapacityDefOf.Hearing, PawnCapacityDefOf.Manipulation, PawnCapacityDefOf.Metabolism, PawnCapacityDefOf.Moving, PawnCapacityDefOf.Sight, PawnCapacityDefOf.Talking }; if (reloadSettings) { settings = loadSettings(); } if (reloadIconSet) { materials = new Materials(settings.iconSet); ModSettings isets = XmlLoader.ItemFromXmlFile <ModSettings>(GenFilePaths.CoreModsFolderPath + "/Pawn State Icons/Textures/UI/Overlays/PawnStateIcons/" + settings.iconSet + "/iconset.cfg"); settings.iconSizeMult = isets.iconSizeMult; materials.reloadTextures(true); } if (recalcIconPos) { recalcIconPositions(); } }
private static SettingsPSI LoadPsiSettings(string path = "ColonistBarPSIKF.xml") { string configFolder = Path.GetDirectoryName(GenFilePaths.ModsConfigFilePath); SettingsPSI result = XmlLoader.ItemFromXmlFile <SettingsPSI>(configFolder + "/" + path); return(result); }
private void FillPageMain(Listing_Standard listing) { if (listing.DoTextButton("PSI.Settings.IconSet".Translate() + PSI.Settings.iconSet)) { var options = PSI.IconSets.Select(setname => new FloatMenuOption(setname, () => { PSI.Settings.iconSet = setname; PSI.Materials = new Materials(setname); PSI.Materials.ReloadTextures(true); })).ToList(); Find.WindowStack.Add(new FloatMenu(options)); } if (listing.DoTextButton("PSI.Settings.LoadPresetButton".Translate())) { var strArray = new string[0]; var path = _modPath + "/Presets/Complete/"; if (Directory.Exists(path)) { strArray = Directory.GetFiles(path, "*.cfg"); } var options = strArray.Select(setname => new FloatMenuOption(Path.GetFileNameWithoutExtension(setname), () => { try { PSI.Settings = XmlLoader.ItemFromXmlFile <ModSettings>(setname); PSI.SaveSettings(); PSI.Reinit(); } catch (IOException) { Log.Error("PSI.Settings.LoadPreset.UnableToLoad".Translate() + setname); } })).ToList(); Find.WindowStack.Add(new FloatMenu(options)); } listing.DoGap(); DoHeading(listing, "PSI.Settings.Advanced"); if (listing.DoTextButton("PSI.Settings.VisibilityButton".Translate())) { Page = "showhide"; } if (listing.DoTextButton("PSI.Settings.ArrangementButton".Translate())) { Page = "arrange"; } if (!listing.DoTextButton("PSI.Settings.SensitivityButton".Translate())) { return; } Page = "limits"; }
private static ModSettings LoadSettings(string settingsFile = "settings.cfg") { var result = XmlLoader.ItemFromXmlFile <ModSettings>(_modPath + "/" + settingsFile); var settingsFilePath = _modPath + "/Textures/UI/Overlays/PawnStateIcons/"; if (!Directory.Exists(settingsFilePath)) { return(result); } IconSets = Directory.GetDirectories(settingsFilePath); for (var i = 0; i < IconSets.Length; i++) { IconSets[i] = new DirectoryInfo(IconSets[i]).Name; } return(result); }
public static ModSettings loadSettings(string path = "psi-settings.cfg") { //try { ModSettings sets = XmlLoader.ItemFromXmlFile <ModSettings>(path, true); string path2 = GenFilePaths.CoreModsFolderPath + "/Pawn State Icons/Textures/UI/Overlays/PawnStateIcons/"; if (Directory.Exists(path2)) { iconSets = Directory.GetDirectories(path2); for (int i = 0; i < iconSets.Length; i++) { iconSets[i] = (new DirectoryInfo(iconSets[i])).Name; } } return(sets); //} catch(Exception ex) {} }
/// <summary> /// Gets an object from an xml file /// </summary> /// <typeparam name="T">The object type</typeparam> /// <param name="filepath">The xml file path</param> /// <param name="resolveCrossRefs">Set true to resolve cross refs[Optional](Default:false)</param> /// <returns></returns> public static T ItemFromXmlFile <T>(string filepath, bool resolveCrossRefs = false) where T : new() { return(XmlLoader.ItemFromXmlFile <T>(filepath, resolveCrossRefs)); }
protected void fillPageLimits(Listing_Standard listing) { DoHeading(listing, "PSI.Settings.Sensitivity.Header"); if (listing.DoTextButton(Translator.Translate("PSI.Settings.LoadPresetButton"))) { string[] presetList = { }; String path2 = GenFilePaths.CoreModsFolderPath + "/Pawn State Icons/Presets/Sensitivity/"; if (Directory.Exists(path2)) { presetList = Directory.GetFiles(path2, "*.cfg"); } List <FloatMenuOption> options = new List <FloatMenuOption>(); foreach (string setname in presetList) { options.Add(new FloatMenuOption(Path.GetFileNameWithoutExtension(setname), () => { try { ModSettings settings = XmlLoader.ItemFromXmlFile <ModSettings>(setname, true); PSI.settings.limit_bleedMult = settings.limit_bleedMult; PSI.settings.limit_diseaseLess = settings.limit_diseaseLess; PSI.settings.limit_EfficiencyLess = settings.limit_EfficiencyLess; PSI.settings.limit_FoodLess = settings.limit_FoodLess; PSI.settings.limit_MoodLess = settings.limit_MoodLess; PSI.settings.limit_RestLess = settings.limit_RestLess; PSI.settings.limit_apparelHealthLess = settings.limit_apparelHealthLess; PSI.settings.limit_tempComfortOffset = settings.limit_tempComfortOffset; } catch (IOException) { Log.Error(Translator.Translate("PSI.Settings.LoadPreset.UnableToLoad") + setname); } })); } Find.LayerStack.Add((Layer) new Layer_FloatMenu(options, false)); } listing.DoGap(); listing.DoLabel(Translator.Translate("PSI.Settings.Sensitivity.Bleeding") + Translator.Translate("PSI.Settings.Sensitivity.Bleeding." + Math.Round(PSI.settings.limit_bleedMult - 0.25))); PSI.settings.limit_bleedMult = listing.DoSlider(PSI.settings.limit_bleedMult, 0.5f, 5.0f); listing.DoLabel(Translator.Translate("PSI.Settings.Sensitivity.Injured") + ((int)(PSI.settings.limit_EfficiencyLess * 100)) + "%"); PSI.settings.limit_EfficiencyLess = listing.DoSlider(PSI.settings.limit_EfficiencyLess, 0.01f, 0.99f); listing.DoLabel(Translator.Translate("PSI.Settings.Sensitivity.Food") + ((int)(PSI.settings.limit_FoodLess * 100)) + "%"); PSI.settings.limit_FoodLess = listing.DoSlider(PSI.settings.limit_FoodLess, 0.01f, 0.99f); listing.DoLabel(Translator.Translate("PSI.Settings.Sensitivity.Mood") + ((int)(PSI.settings.limit_MoodLess * 100)) + "%"); PSI.settings.limit_MoodLess = listing.DoSlider(PSI.settings.limit_MoodLess, 0.01f, 0.99f); listing.DoLabel(Translator.Translate("PSI.Settings.Sensitivity.Rest") + ((int)(PSI.settings.limit_RestLess * 100)) + "%"); PSI.settings.limit_RestLess = listing.DoSlider(PSI.settings.limit_RestLess, 0.01f, 0.99f); listing.DoLabel(Translator.Translate("PSI.Settings.Sensitivity.ApparelHealth") + ((int)(PSI.settings.limit_apparelHealthLess * 100)) + "%"); PSI.settings.limit_apparelHealthLess = listing.DoSlider(PSI.settings.limit_apparelHealthLess, 0.01f, 0.99f); listing.DoLabel(Translator.Translate("PSI.Settings.Sensitivity.Temperature") + ((int)(PSI.settings.limit_tempComfortOffset)) + "C"); PSI.settings.limit_tempComfortOffset = listing.DoSlider(PSI.settings.limit_tempComfortOffset, -10f, 10f); if (listing.DoTextButton(Translator.Translate("PSI.Settings.ReturnButton"))) { page = "main"; } }
protected void fillPageMain(Listing_Standard listing) { //listing.DoHeading("General settings"); if (listing.DoTextButton(Translator.Translate("PSI.Settings.IconSet") + PSI.settings.iconSet)) { List <FloatMenuOption> options = new List <FloatMenuOption>(); foreach (string setname in PSI.iconSets) { options.Add(new FloatMenuOption(setname, () => { PSI.settings.iconSet = setname; PSI.materials = new Materials(setname); PSI.materials.reloadTextures(true); })); } Find.LayerStack.Add((Layer) new Layer_FloatMenu(options, false)); } if (listing.DoTextButton(Translator.Translate("PSI.Settings.LoadPresetButton"))) { string[] presetList = {}; String path2 = GenFilePaths.CoreModsFolderPath + "/Pawn State Icons/Presets/Complete/"; if (Directory.Exists(path2)) { presetList = Directory.GetFiles(path2, "*.cfg"); } List <FloatMenuOption> options = new List <FloatMenuOption>(); foreach (string setname in presetList) { options.Add(new FloatMenuOption(Path.GetFileNameWithoutExtension(setname), () => { try { PSI.settings = XmlLoader.ItemFromXmlFile <ModSettings>(setname, true); PSI.saveSettings(); PSI.reinit(); } catch (IOException) { Log.Error(Translator.Translate("PSI.Settings.LoadPreset.UnableToLoad") + setname); } })); } Find.LayerStack.Add((Layer) new Layer_FloatMenu(options, false)); } listing.DoGap(); DoHeading(listing, "PSI.Settings.Advanced"); if (listing.DoTextButton(Translator.Translate("PSI.Settings.VisibilityButton"))) { page = "showhide"; } if (listing.DoTextButton(Translator.Translate("PSI.Settings.ArrangementButton"))) { page = "arrange"; } if (listing.DoTextButton(Translator.Translate("PSI.Settings.SensitivityButton"))) { page = "limits"; } }
protected void fillPageArrangement(Listing_Standard listing) { DoHeading(listing, "PSI.Settings.Arrangement.Header"); if (listing.DoTextButton(Translator.Translate("PSI.Settings.LoadPresetButton"))) { string[] presetList = { }; String path2 = GenFilePaths.CoreModsFolderPath + "/Pawn State Icons/Presets/Position/"; if (Directory.Exists(path2)) { presetList = Directory.GetFiles(path2, "*.cfg"); } List <FloatMenuOption> options = new List <FloatMenuOption>(); foreach (string setname in presetList) { options.Add(new FloatMenuOption(Path.GetFileNameWithoutExtension(setname), () => { try { ModSettings settings = XmlLoader.ItemFromXmlFile <ModSettings>(setname, true); PSI.settings.iconDistanceX = settings.iconDistanceX; PSI.settings.iconDistanceY = settings.iconDistanceY; PSI.settings.iconOffsetX = settings.iconOffsetX; PSI.settings.iconOffsetY = settings.iconOffsetY; PSI.settings.iconsHorizontal = settings.iconsHorizontal; PSI.settings.iconsScreenScale = settings.iconsScreenScale; PSI.settings.iconsInColumn = settings.iconsInColumn; PSI.settings.iconSize = settings.iconSize; } catch (IOException) { Log.Error(Translator.Translate("PSI.Settings.LoadPreset.UnableToLoad") + setname); } })); } Find.LayerStack.Add((Layer) new Layer_FloatMenu(options, false)); } int labelNum = (int)(PSI.settings.iconSize * 4.5f); if (labelNum > 8) { labelNum = 8; } else if (labelNum < 0) { labelNum = 0; } listing.DoLabel(Translator.Translate("PSI.Settings.Arrangement.IconSize") + Translator.Translate("PSI.Settings.SizeLabel." + labelNum)); PSI.settings.iconSize = listing.DoSlider(PSI.settings.iconSize, 0.5f, 2.0f); listing.DoLabel(Translator.Translate("PSI.Settings.Arrangement.IconPosition") + (int)(PSI.settings.iconDistanceX * 100) + " , " + (int)(PSI.settings.iconDistanceY * 100)); PSI.settings.iconDistanceX = listing.DoSlider(PSI.settings.iconDistanceX, -2.0f, 2.0f); PSI.settings.iconDistanceY = listing.DoSlider(PSI.settings.iconDistanceY, -2.0f, 2.0f); listing.DoLabel(Translator.Translate("PSI.Settings.Arrangement.IconOffset") + (int)(PSI.settings.iconOffsetX * 100) + " , " + (int)(PSI.settings.iconOffsetY * 100)); PSI.settings.iconOffsetX = listing.DoSlider(PSI.settings.iconOffsetX, -2.0f, 2.0f); PSI.settings.iconOffsetY = listing.DoSlider(PSI.settings.iconOffsetY, -2.0f, 2.0f); listing.DoLabelCheckbox(Translator.Translate("PSI.Settings.Arrangement.Horizontal"), ref PSI.settings.iconsHorizontal); listing.DoLabelCheckbox(Translator.Translate("PSI.Settings.Arrangement.ScreenScale"), ref PSI.settings.iconsScreenScale); listing.DoLabel(Translator.Translate("PSI.Settings.Arrangement.IconsPerColumn") + PSI.settings.iconsInColumn); PSI.settings.iconsInColumn = (int)listing.DoSlider(PSI.settings.iconsInColumn, 1.0f, 9.0f); if (listing.DoTextButton(Translator.Translate("PSI.Settings.ReturnButton"))) { page = "main"; } }
private void FillPageLimits(Listing_Standard listing) { DoHeading(listing, "PSI.Settings.Sensitivity.Header"); if (listing.DoTextButton("PSI.Settings.LoadPresetButton".Translate())) { var strArray = new string[0]; var path = _modPath + "/Presets/Sensitivity/"; Log.Message(path); if (Directory.Exists(path)) { strArray = Directory.GetFiles(path, "*.cfg"); } var options = strArray.Select(setname => new FloatMenuOption(Path.GetFileNameWithoutExtension(setname), () => { try { var settings = XmlLoader.ItemFromXmlFile <ModSettings>(setname); PSI.Settings.limit_BleedMult = settings.limit_BleedMult; PSI.Settings.limit_DiseaseLess = settings.limit_DiseaseLess; PSI.Settings.limit_EfficiencyLess = settings.limit_EfficiencyLess; PSI.Settings.limit_FoodLess = settings.limit_FoodLess; PSI.Settings.limit_MoodLess = settings.limit_MoodLess; PSI.Settings.limit_RestLess = settings.limit_RestLess; PSI.Settings.limit_ApparelHealthLess = settings.limit_ApparelHealthLess; PSI.Settings.limit_TempComfortOffset = settings.limit_TempComfortOffset; } catch (IOException) { Log.Error("PSI.Settings.LoadPreset.UnableToLoad".Translate() + setname); } })).ToList(); Find.WindowStack.Add(new FloatMenu(options)); } listing.DoGap(); listing.DoLabel("PSI.Settings.Sensitivity.Bleeding".Translate() + ("PSI.Settings.Sensitivity.Bleeding." + Math.Round(PSI.Settings.limit_BleedMult - 0.25)).Translate()); PSI.Settings.limit_BleedMult = listing.DoSlider(PSI.Settings.limit_BleedMult, 0.5f, 5f); listing.DoLabel("PSI.Settings.Sensitivity.Injured".Translate() + (int)(PSI.Settings.limit_EfficiencyLess * 100.0) + "%"); PSI.Settings.limit_EfficiencyLess = listing.DoSlider(PSI.Settings.limit_EfficiencyLess, 0.01f, 0.99f); listing.DoLabel("PSI.Settings.Sensitivity.Food".Translate() + (int)(PSI.Settings.limit_FoodLess * 100.0) + "%"); PSI.Settings.limit_FoodLess = listing.DoSlider(PSI.Settings.limit_FoodLess, 0.01f, 0.99f); listing.DoLabel("PSI.Settings.Sensitivity.Mood".Translate() + (int)(PSI.Settings.limit_MoodLess * 100.0) + "%"); PSI.Settings.limit_MoodLess = listing.DoSlider(PSI.Settings.limit_MoodLess, 0.01f, 0.99f); listing.DoLabel("PSI.Settings.Sensitivity.Rest".Translate() + (int)(PSI.Settings.limit_RestLess * 100.0) + "%"); PSI.Settings.limit_RestLess = listing.DoSlider(PSI.Settings.limit_RestLess, 0.01f, 0.99f); listing.DoLabel("PSI.Settings.Sensitivity.ApparelHealth".Translate() + (int)(PSI.Settings.limit_ApparelHealthLess * 100.0) + "%"); PSI.Settings.limit_ApparelHealthLess = listing.DoSlider(PSI.Settings.limit_ApparelHealthLess, 0.01f, 0.99f); listing.DoLabel("PSI.Settings.Sensitivity.Temperature".Translate() + (int)PSI.Settings.limit_TempComfortOffset + "C"); PSI.Settings.limit_TempComfortOffset = listing.DoSlider(PSI.Settings.limit_TempComfortOffset, -10f, 10f); if (!listing.DoTextButton("PSI.Settings.ReturnButton".Translate())) { return; } Page = "main"; }
private void FillPageArrangement(Listing_Standard listing) { DoHeading(listing, "PSI.Settings.Arrangement.Header"); if (listing.DoTextButton("PSI.Settings.LoadPresetButton".Translate())) { var strArray = new string[0]; var path = _modPath + "/Presets/Position/"; if (Directory.Exists(path)) { strArray = Directory.GetFiles(path, "*.cfg"); } var options = strArray.Select(setname => new FloatMenuOption(Path.GetFileNameWithoutExtension(setname), () => { try { var settings = XmlLoader.ItemFromXmlFile <ModSettings>(setname); PSI.Settings.iconDistanceX = settings.iconDistanceX; PSI.Settings.iconDistanceY = settings.iconDistanceY; PSI.Settings.iconOffsetX = settings.iconOffsetX; PSI.Settings.iconOffsetY = settings.iconOffsetY; PSI.Settings.iconsHorizontal = settings.iconsHorizontal; PSI.Settings.iconsScreenScale = settings.iconsScreenScale; PSI.Settings.iconsInColumn = settings.iconsInColumn; PSI.Settings.iconSize = settings.iconSize; } catch (IOException) { Log.Error("PSI.Settings.LoadPreset.UnableToLoad".Translate() + setname); } })).ToList(); Find.WindowStack.Add(new FloatMenu(options)); } var num = (int)(PSI.Settings.iconSize * 4.5); if (num > 8) { num = 8; } else if (num < 0) { num = 0; } listing.DoLabel("PSI.Settings.Arrangement.IconSize".Translate() + ("PSI.Settings.SizeLabel." + num).Translate()); PSI.Settings.iconSize = listing.DoSlider(PSI.Settings.iconSize, 0.5f, 2f); listing.DoLabel(string.Concat("PSI.Settings.Arrangement.IconPosition".Translate(), (int)(PSI.Settings.iconDistanceX * 100.0), " , ", (int)(PSI.Settings.iconDistanceY * 100.0))); PSI.Settings.iconDistanceX = listing.DoSlider(PSI.Settings.iconDistanceX, -2f, 2f); PSI.Settings.iconDistanceY = listing.DoSlider(PSI.Settings.iconDistanceY, -2f, 2f); listing.DoLabel(string.Concat("PSI.Settings.Arrangement.IconOffset".Translate(), (int)(PSI.Settings.iconOffsetX * 100.0), " , ", (int)(PSI.Settings.iconOffsetY * 100.0))); PSI.Settings.iconOffsetX = listing.DoSlider(PSI.Settings.iconOffsetX, -2f, 2f); PSI.Settings.iconOffsetY = listing.DoSlider(PSI.Settings.iconOffsetY, -2f, 2f); listing.DoLabelCheckbox("PSI.Settings.Arrangement.Horizontal".Translate(), ref PSI.Settings.iconsHorizontal); listing.DoLabelCheckbox("PSI.Settings.Arrangement.ScreenScale".Translate(), ref PSI.Settings.iconsScreenScale); listing.DoLabel("PSI.Settings.Arrangement.IconsPerColumn".Translate() + PSI.Settings.iconsInColumn); PSI.Settings.iconsInColumn = (int)listing.DoSlider(PSI.Settings.iconsInColumn, 1f, 9f); if (!listing.DoTextButton("PSI.Settings.ReturnButton".Translate())) { return; } Page = "main"; }