Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        private static SettingsPSI LoadPsiSettings(string path = "ColonistBarPSIKF.xml")
        {
            string      configFolder = Path.GetDirectoryName(GenFilePaths.ModsConfigFilePath);
            SettingsPSI result       = XmlLoader.ItemFromXmlFile <SettingsPSI>(configFolder + "/" + path);

            return(result);
        }
Exemplo n.º 3
0
        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";
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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) {}
        }
Exemplo n.º 6
0
 /// <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));
 }
Exemplo n.º 7
0
        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";
            }
        }
Exemplo n.º 8
0
        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";
            }
        }
Exemplo n.º 9
0
        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";
            }
        }
Exemplo n.º 10
0
        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";
        }
Exemplo n.º 11
0
        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";
        }