Example #1
0
 public static void OpenSettingsWindow(Page_CreateWorldParams __instance)
 {
     Find.WindowStack.TryRemove(typeof(EditWindow_Log));
     if (!Find.WindowStack.TryRemove(typeof(Options.RimWarSettingsWindow)))
     {
         Options.RimWarSettingsWindow rwsw = new Options.RimWarSettingsWindow();
         rwsw.page_ref = __instance;
         Find.WindowStack.Add(rwsw);
     }
 }
Example #2
0
            private static void Postfix(Page_CreateWorldParams __instance, Rect rect)
            {
                float y = rect.y + rect.height - 118f;

                Text.Font = GameFont.Small;
                string label = "RW_RimWar".Translate();

                if (Widgets.ButtonText(new Rect(0f, y, 150f, 32f), label))
                {
                    OpenSettingsWindow(__instance);
                }
            }
Example #3
0
        // note: this method is retrieved through Reflection. Check RimworldEventHandler.OnDefsLoaded().

        static bool Page_CreateWorldParams_CanDoNext(ref Page_CreateWorldParams __instance, ref bool __result)
        {
            // don't use Precise World Generation if the settings tells to do so.
            if (PrepareLanding.Instance.GameOptions.DisablePreciseWorldGenPercentage.Value)
            {
                Log.Message("[PrepareLanding] Precise World Generation - skipping due to mod settings.");
                return(true);
            }

            /*
             * Call next page for precise world generation.
             */
            Log.Message("[PrepareLanding] Precise World Generation - If you are having trouble generating the world, disable PreciseWorldGeneration in PrepareLanding mod settings.");

            // grab all needed fields from the Page_CreateWorldParams instance.
            var planetCoverage = Traverse.Create(__instance).Field("planetCoverage").GetValue <float>();
            var seedString     = Traverse.Create(__instance).Field("seedString").GetValue <string>();
            var rainfall       = Traverse.Create(__instance).Field("rainfall").GetValue <OverallRainfall>();
            var temperature    = Traverse.Create(__instance).Field("temperature").GetValue <OverallTemperature>();
            var population     = Traverse.Create(__instance).Field("population").GetValue <OverallPopulation>();
            var factionCounts  = Traverse.Create(__instance).Field("factionCounts")
                                 .GetValue <Dictionary <FactionDef, int> >();


            // new page
            var p = new PagePreciseWorldGeneration(planetCoverage, seedString, rainfall, temperature, population, factionCounts);

            // set up correct prev and next.
            var originalNextPage = Traverse.Create(__instance).Field("next").GetValue <Page>();

            p.prev      = __instance;
            p.next      = originalNextPage;
            p.next.prev = p;
            Traverse.Create(__instance).Field("next").SetValue(p);

            // return value for CanDoNext()
            __result = true;

            // prevent call to original function.
            return(false);
        }
Example #4
0
            public static void Postfix(ref Rect __state, ref Page_CreateWorldParams __instance)
            {
                GUI.BeginGroup(__state);
                float y        = 280f;
                Rect  baseRect = new Rect(0f, y, 200f, 30f);

                Widgets.Label(baseRect, Translator.Translate("EditorLabel"));
                Rect EarthRect = new Rect(200f, y, 200f, 30f);

                if (Settings.FullyActiveEditor == false)
                {
                    if (Widgets.RadioButtonLabeled(EarthRect, Translator.Translate("isEnableEditorLabel"), isEdit == true))
                    {
                        isEdit = !isEdit;
                    }
                }
                else
                {
                    Widgets.Label(EarthRect, Translator.Translate("ActiveFullyMode"));
                    isEdit = true;
                }

                GUI.EndGroup();

                Widgets.Label(new Rect(440, 40, 200, 20), Translator.Translate("WorldTemplates"));
                int  worldsSize     = WorldTemplateManager.Templates.Count * 25;
                Rect scrollRect     = new Rect(440, 70, 200, 400);
                Rect scrollVertRect = new Rect(0, 0, scrollRect.x, worldsSize);

                Widgets.BeginScrollView(scrollRect, ref scrollPositionWorlds, scrollVertRect);
                int x = 0;

                foreach (var world in WorldTemplateManager.Templates)
                {
                    if (Widgets.ButtonText(new Rect(0, x, 180, 20), world.WorldName))
                    {
                        selectedTemplate = world;
                        StringBuilder builder = new StringBuilder();
                        builder.AppendLine($"{Translator.Translate("TemplateHead")}{world.WorldName}");
                        builder.AppendLine($"{Translator.Translate("TemplateAuthor")}{world.Author}");
                        builder.AppendLine($"{Translator.Translate("TemplateStoryteller")}{world.Storyteller}");
                        builder.AppendLine($"{Translator.Translate("TemplateScenario")}{world.Scenario}");
                        builder.AppendLine($"{Translator.Translate("TemplateDesc")}{world.Description}");
                        worldInfo = builder.ToString();
                    }

                    x += 22;
                }
                Widgets.EndScrollView();
                Widgets.LabelScrollable(new Rect(650, 70, 340, 400), worldInfo, ref scrollPositionInfo, false, false);

                if (selectedTemplate != null)
                {
                    if (Widgets.ButtonText(new Rect(440, 500, 200, 20), Translator.Translate("LoadTemplate")))
                    {
                        isWorldTemplate = true;
                        LoadedTemplate  = selectedTemplate;
                        CustomStartingSite.OneWayToShow = false;
                        GameDataSaveLoader.LoadGame(selectedTemplate.FilePath);
                    }
                }
            }