diff --git a/About/About.xml b/About/About.xml index 80e0072..ee132aa 100644 --- a/About/About.xml +++ b/About/About.xml @@ -3,7 +3,7 @@ Progress Renderer Lanilor https://github.com/Lanilor/Progress-Renderer - 1.0.0 + 0.19.0 <size=20>Progress Renderer (scheduled map renderings)</size> @@ -14,6 +14,6 @@ You can choose an interval from once a quadrum to hourly. Rendered images will b Place special corner marker designators to limit the area of what should be rendered. You can limit this to your base and even just simply extend it later if you base grows larger than planned. Based on the idea of Map Renderer by WIT (https://github.com/AaronCRobinson/MapRenderer) -(Everything coded from scratch to work scheduled and with 1.0, which has the nice side effect of now being more performant and flexible.) +(Everything coded from scratch to work scheduled and with B19/1.0, which has the nice side effect of now being more performant and flexible.) \ No newline at end of file diff --git a/Assemblies/ProgressRenderer.dll b/Assemblies/ProgressRenderer.dll index 67f6328..e58d432 100644 Binary files a/Assemblies/ProgressRenderer.dll and b/Assemblies/ProgressRenderer.dll differ diff --git a/Languages/English/Keyed/All.xml b/Languages/English/Keyed/All.xml index c776085..d8e54c6 100644 --- a/Languages/English/Keyed/All.xml +++ b/Languages/English/Keyed/All.xml @@ -6,11 +6,13 @@ Every hour - There now are {0} corner markers on this map. + There are now {0} corner markers on this map. Rendering needs 2 markers to limit the rendered area. Now the full map will be rendered. Rendering will create and use a virtual rect around all markers. You may want to remove unnecessary ones. Rendering will limit to the enclosed area. Enclosing rect size is {0}x{1} cells. + Aspect ratio is {0}. + Aspect ratio is {0} ({1}). Height is too low. This will result in incorrect renderings. More than 20 cells height are recommended. @@ -26,8 +28,13 @@ Progress Renderer Enabled When enabled, this mod takes automatic renderings of current maps while playing and uses the settings below. You can temporary disable this here so you don't have to remove the mod each time. - Show message box - Show a message box on screen when the game is rendering the map. Deactivate this to only get a standard text message. (Useful when you just render a small area in a short interval and the message window interrupts playing.) (The message box is always deactivated when a multithreaded encoding method is selected.) + + Render feedback + + None + Message (in the top-left corner) + Window popup (like during autosave) Render settings Configure some optional graphical elements that should be included in the rendered images. The map will always be rendered while some temporary parts like your current selection, targeters or ui text and the mounse cursor are never included. Designations diff --git a/Source/Designator/Designator_CornerMarker.cs b/Source/Designator/Designator_CornerMarker.cs index 1a69234..31b68ae 100644 --- a/Source/Designator/Designator_CornerMarker.cs +++ b/Source/Designator/Designator_CornerMarker.cs @@ -106,7 +106,28 @@ private void DesignateSingleCellFeedback() endZ += 1; int distX = endX - startX; int distZ = endZ - startZ; + string ratio = ((float)distX / distZ).ToString("0.###"); string messageRect = "LPR_MessageCornerMarkersRect".Translate(new object[] { distX, distZ }); + if (distX * 3 == distZ * 4) + { + messageRect += " " + "LPR_MessageCornerMarkersRectRatioDefined".Translate(new object[] { ratio, "4:3" }); + } + else if (distX * 2 == distZ * 3) + { + messageRect += " " + "LPR_MessageCornerMarkersRectRatioDefined".Translate(new object[] { ratio, "3:2" }); + } + else if (distX * 10 == distZ * 16) + { + messageRect += " " + "LPR_MessageCornerMarkersRectRatioDefined".Translate(new object[] { ratio, "16:10" }); + } + else if (distX * 9 == distZ * 16) + { + messageRect += " " + "LPR_MessageCornerMarkersRectRatioDefined".Translate(new object[] { ratio, "16:9" }); + } + else + { + messageRect += " " + "LPR_MessageCornerMarkersRectRatio".Translate(new object[] { ratio }); + } if (distZ <= 20) { messageRect += " " + "LPR_MessageCornerMarkesRectHeightTooLow".Translate(); diff --git a/Source/Enum/RenderFeedback.cs b/Source/Enum/RenderFeedback.cs new file mode 100644 index 0000000..747dbaf --- /dev/null +++ b/Source/Enum/RenderFeedback.cs @@ -0,0 +1,13 @@ +using System; + +namespace ProgressRenderer +{ + + public enum RenderFeedback + { + None, + Message, + Window + }; + +} diff --git a/Source/MapComponents/MapComponent_RenderManager.cs b/Source/MapComponents/MapComponent_RenderManager.cs index cd42f6f..0dfcda7 100644 --- a/Source/MapComponents/MapComponent_RenderManager.cs +++ b/Source/MapComponents/MapComponent_RenderManager.cs @@ -102,12 +102,12 @@ public override void MapComponentTick() return; } // Show message window or print message - if (PRModSettings.showMessageBox && PRModSettings.encoding != "jpg_fluxthreaded") + if (PRModSettings.renderFeedback == RenderFeedback.Window && PRModSettings.encoding != "jpg_fluxthreaded") { messageBox = new SmallMessageBox("LPR_Rendering".Translate()); Find.WindowStack.Add(messageBox); } - else + else if (PRModSettings.renderFeedback == RenderFeedback.Message) { Messages.Message("LPR_Rendering".Translate(), MessageTypeDefOf.CautionInput, false); } diff --git a/Source/Mod/PRModSettings.cs b/Source/Mod/PRModSettings.cs index f1da523..e1a1b47 100644 --- a/Source/Mod/PRModSettings.cs +++ b/Source/Mod/PRModSettings.cs @@ -13,7 +13,7 @@ public class PRModSettings : ModSettings public static string[] SupportedEncodings = { "png_unity", "jpg_unity", "jpg_fluxthreaded" }; private static bool DefaultEnabled = true; - private static bool DefaultShowMessageBox = true; + private static RenderFeedback DefaultRenderFeedback = RenderFeedback.Window; private static bool DefaultRenderDesignations = false; private static bool DefaultRenderThingIcons = false; private static bool DefaultRenderGameConditions = true; @@ -28,7 +28,7 @@ public class PRModSettings : ModSettings private static FileNamePattern DefaultFileNamePattern = FileNamePattern.DateTime; public static bool enabled = DefaultEnabled; - public static bool showMessageBox = DefaultShowMessageBox; + public static RenderFeedback renderFeedback = DefaultRenderFeedback; public static bool renderDesignations = DefaultRenderDesignations; public static bool renderThingIcons = DefaultRenderThingIcons; public static bool renderGameConditions = DefaultRenderGameConditions; @@ -61,7 +61,30 @@ public void DoWindowContents(Rect rect) ls.CheckboxLabeled("LPR_SettingsEnabledLabel".Translate(), ref enabled, "LPR_SettingsEnabledDescription".Translate()); ls.Gap(GapHeight); - ls.CheckboxLabeled("LPR_SettingsShowMessageBoxLabel".Translate(), ref showMessageBox, "LPR_SettingsShowMessageBoxDescription".Translate()); + + // Backup original values + TextAnchor backupAnchor = Text.Anchor; + Text.Anchor = TextAnchor.MiddleLeft; + if (ls.ButtonTextLabeled("LPR_SettingsRenderFeedbackLabel".Translate(), ("LPR_RenderFeedback_" + renderFeedback).Translate())) + { + List menuEntries = new List(); + menuEntries.Add(new FloatMenuOption(("LPR_RenderFeedback_" + RenderFeedback.None).Translate(), delegate + { + renderFeedback = RenderFeedback.None; + })); + menuEntries.Add(new FloatMenuOption(("LPR_RenderFeedback_" + RenderFeedback.Message).Translate(), delegate + { + renderFeedback = RenderFeedback.Message; + })); + menuEntries.Add(new FloatMenuOption(("LPR_RenderFeedback_" + RenderFeedback.Window).Translate(), delegate + { + renderFeedback = RenderFeedback.Window; + })); + Find.WindowStack.Add(new FloatMenu(menuEntries)); + } + // Restore original values + Text.Anchor = backupAnchor; + ls.GapGapLine(GapHeight); ls.CheckboxGroupLabeled("LPR_SettingsRenderSettingsLabel".Translate(), "LPR_SettingsRenderSettingsDescription".Translate(), "LPR_SettingsRenderDesignationsLabel".Translate(), ref renderDesignations, "LPR_SettingsRenderDesignationsDescription".Translate(), "LPR_SettingsRenderThingIconsLabel".Translate(), ref renderThingIcons, "LPR_SettingsRenderThingIconsDescription".Translate()); @@ -76,7 +99,7 @@ public void DoWindowContents(Rect rect) ls.GapGapLine(GapHeight); // Backup original values - TextAnchor backupAnchor = Text.Anchor; + backupAnchor = Text.Anchor; Text.Anchor = TextAnchor.MiddleLeft; if (ls.ButtonTextLabeled("LPR_SettingsEncodingLabel".Translate(), ("LPR_ImgEncoding_" + encoding).Translate())) { @@ -138,7 +161,7 @@ public override void ExposeData() { base.ExposeData(); Scribe_Values.Look(ref enabled, "enabled", DefaultEnabled); - Scribe_Values.Look(ref showMessageBox, "showMessageBox", DefaultShowMessageBox); + Scribe_Values.Look(ref renderFeedback, "renderFeedback", DefaultRenderFeedback); Scribe_Values.Look(ref renderDesignations, "renderDesignations", DefaultRenderDesignations); Scribe_Values.Look(ref renderThingIcons, "renderThingIcons", DefaultRenderThingIcons); Scribe_Values.Look(ref renderGameConditions, "renderGameConditions", DefaultRenderGameConditions);