From f9bce6252c386080d3525ac21a2284bbaab1778b Mon Sep 17 00:00:00 2001 From: Gustas <37534529+PunkPun@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:34:58 +0200 Subject: [PATCH] Don't generate maps when not needed --- .../Widgets/Logic/MapGeneratorLogic.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/Widgets/Logic/MapGeneratorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MapGeneratorLogic.cs index bc45398eb2..4935eb020e 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MapGeneratorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MapGeneratorLogic.cs @@ -76,6 +76,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic readonly Widget dropdownSettingTemplate; readonly Widget tilesetSetting; readonly Widget sizeSetting; + readonly Widget parentWidget; readonly ZipFileLoader.ReadWriteZipFile package; ITerrainInfo selectedTerrain; @@ -84,12 +85,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic volatile bool generating; volatile bool failed; + bool initialGenerationDone; [ObjectCreator.UseCtor] internal MapGeneratorLogic(Widget widget, ModData modData, MapGenerationArgs initialSettings, Action onGenerate) { this.modData = modData; this.onGenerate = onGenerate; + parentWidget = widget.Parent; package = new ZipFileLoader.ReadWriteZipFile(); generator = modData.DefaultRules.Actors[SystemActors.EditorWorld].TraitInfos().First(); @@ -217,10 +220,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (map.Status == MapStatus.Available) { preview.Update(map); + initialGenerationDone = true; onGenerate(initialSettings, null); } - else - GenerateMap(); } else { @@ -228,6 +230,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic settings.Randomize(Game.CosmeticRandom); RandomizeSize(); RefreshSettings(); + } + } + + public override void Tick() + { + if (!initialGenerationDone && !generating && parentWidget.IsVisible()) + { + initialGenerationDone = true; GenerateMap(); } }