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