From 39a7e477c684dd85dfdffb50e706accf76f0af44 Mon Sep 17 00:00:00 2001 From: Ashley Newson Date: Wed, 12 Feb 2025 23:58:41 +0000 Subject: [PATCH] Add tooltips to some map generator settings Adds tooltip descriptions for a few map generator settings. The tooltips are limited to dropdown choices. No tooltips are added for the options containing the choices or any non-dropdown settings. - Terrain type - Bounds shape - Buildings The "Square" bounds shape is rephrased as "Rectangle" for consistency with the added description. This is UI-only change. --- .../MapGenerator/MapGeneratorSettings.cs | 18 +- .../Logic/Editor/MapGeneratorToolLogic.cs | 7 +- mods/cnc/chrome/dialogs.yaml | 31 +++ mods/cnc/chrome/editor.yaml | 1 + mods/cnc/fluent/rules.ftl | 153 ++++++++++----- mods/common/chrome/dropdowns.yaml | 30 +++ mods/common/chrome/editor.yaml | 1 + mods/ra/fluent/rules.ftl | 176 +++++++++++++----- 8 files changed, 318 insertions(+), 99 deletions(-) diff --git a/OpenRA.Mods.Common/MapGenerator/MapGeneratorSettings.cs b/OpenRA.Mods.Common/MapGenerator/MapGeneratorSettings.cs index 0f9b06697e..a5b58a94ba 100644 --- a/OpenRA.Mods.Common/MapGenerator/MapGeneratorSettings.cs +++ b/OpenRA.Mods.Common/MapGenerator/MapGeneratorSettings.cs @@ -38,6 +38,9 @@ namespace OpenRA.Mods.Common.MapGenerator /// The label to use for UI selection. Post-fluent. public readonly string Label = null; + /// The tooltip to use for UI selection. Post-fluent. + public readonly string Description = null; + /// /// Only offer the Choice for these tilesets. (If null, show for all.) /// @@ -51,7 +54,11 @@ namespace OpenRA.Mods.Common.MapGenerator Id = id; var label = my.NodeWithKeyOrDefault("Label")?.Value.Value; if (label != null) - Label = FluentProvider.GetMessage(label); + { + Label = FluentProvider.GetMessage($"{label}.label"); + FluentProvider.TryGetMessage($"{label}.description", out Description); + } + Tileset = my.NodeWithKeyOrDefault("Tileset")?.Value.Value ?.Split(',') .ToImmutableHashSet(); @@ -63,6 +70,7 @@ namespace OpenRA.Mods.Common.MapGenerator { Id = value; Label = value; + Description = null; Tileset = null; Settings = new MiniYaml(null, new[] { new MiniYamlNode(setting, value) }); } @@ -71,7 +79,13 @@ namespace OpenRA.Mods.Common.MapGenerator { var label = my.NodeWithKeyOrDefault("Label")?.Value.Value; if (label != null) - references.Add(label); + { + references.Add($"{label}.label"); + + // Descriptions are optional. + if (FluentProvider.TryGetMessage($"{label}.description", out _)) + references.Add($"{label}.description"); + } } /// Check whether this choice is permitted for this map. diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/MapGeneratorToolLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/MapGeneratorToolLogic.cs index 74503a2f8d..025aba87dd 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/MapGeneratorToolLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/MapGeneratorToolLogic.cs @@ -187,10 +187,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic void OnClick() => choices[option] = choice; var item = ScrollItemWidget.Setup(template, IsSelected, OnClick); item.Get("LABEL").GetText = () => choice.Label; + item.GetTooltipText = + choice.Description != null + ? () => choice.Description + : null; + return item; } - dropDown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", option.Choices.Count * 30, option.Choices, SetupItem); + dropDown.ShowDropDown("LABEL_DROPDOWN_WITH_TOOLTIP_TEMPLATE", option.Choices.Count * 30, option.Choices, SetupItem); }; break; } diff --git a/mods/cnc/chrome/dialogs.yaml b/mods/cnc/chrome/dialogs.yaml index 8bf87f2f37..83ce4f596f 100644 --- a/mods/cnc/chrome/dialogs.yaml +++ b/mods/cnc/chrome/dialogs.yaml @@ -27,6 +27,37 @@ ScrollPanel@LABEL_DROPDOWN_TEMPLATE: Width: PARENT_WIDTH - 20 Height: 25 +ScrollPanel@LABEL_DROPDOWN_WITH_TOOLTIP_TEMPLATE: + Width: DROPDOWN_WIDTH + Background: panel-black + Children: + ScrollItem@HEADER: + Background: scrollheader + Width: PARENT_WIDTH - 27 + Height: 13 + X: 2 + Y: 0 + Visible: false + Children: + Label@LABEL: + Font: TinyBold + Width: PARENT_WIDTH + Height: 13 + Align: Center + ScrollItem@TEMPLATE: + Width: PARENT_WIDTH - 27 + Height: 25 + X: 2 + Y: 0 + TooltipContainer: TOOLTIP_CONTAINER + TooltipTemplate: BUTTON_TOOLTIP + Visible: false + Children: + Label@LABEL: + X: 10 + Width: PARENT_WIDTH - 20 + Height: 25 + ScrollPanel@PLAYERACTION_DROPDOWN_TEMPLATE: Width: DROPDOWN_WIDTH Background: panel-black diff --git a/mods/cnc/chrome/editor.yaml b/mods/cnc/chrome/editor.yaml index 92326593fd..5752f04925 100644 --- a/mods/cnc/chrome/editor.yaml +++ b/mods/cnc/chrome/editor.yaml @@ -658,6 +658,7 @@ Container@EDITOR_WORLD_ROOT: Y: 20 Width: PARENT_WIDTH Height: 25 + PanelRoot: EDITOR_WORLD_ROOT Container@HISTORY_WIDGETS: X: WINDOW_WIDTH - 295 Y: 318 diff --git a/mods/cnc/fluent/rules.ftl b/mods/cnc/fluent/rules.ftl index 4b1f6740ee..0e64c9d660 100644 --- a/mods/cnc/fluent/rules.ftl +++ b/mods/cnc/fluent/rules.ftl @@ -782,71 +782,134 @@ bot-hal9001 = ## map-generators.yaml label-clear-map-generator-option-tile = Tile -label-clear-map-generator-choice-tile-clear = Clear -label-clear-map-generator-choice-tile-water = Water +label-clear-map-generator-choice-tile-clear = + .label = Clear +label-clear-map-generator-choice-tile-water = + .label = Water label-cnc-map-generator-option-seed = Seed label-cnc-map-generator-option-terrain-type = Terrain Type -label-cnc-map-generator-choice-terrain-type-lakes = Lakes -label-cnc-map-generator-choice-terrain-type-puddles = Puddles -label-cnc-map-generator-choice-terrain-type-gardens = Gardens -label-cnc-map-generator-choice-terrain-type-plains = Plains -label-cnc-map-generator-choice-terrain-type-parks = Parks -label-cnc-map-generator-choice-terrain-type-woodlands = Woodlands -label-cnc-map-generator-choice-terrain-type-overgrown = Overgrown -label-cnc-map-generator-choice-terrain-type-rocky = Rocky -label-cnc-map-generator-choice-terrain-type-mountains = Mountains -label-cnc-map-generator-choice-terrain-type-mountain-lakes = Mountain Lakes +label-cnc-map-generator-choice-terrain-type-lakes = + .label = Lakes + .description = Open spaces with moderately sized lakes +label-cnc-map-generator-choice-terrain-type-puddles = + .label = Puddles + .description = Open spaces with small ponds +label-cnc-map-generator-choice-terrain-type-gardens = + .label = Gardens + .description = Featureful terrain with ponds, cliffs, and forests +label-cnc-map-generator-choice-terrain-type-plains = + .label = Plains + .description = Open spaces with sparse trees and cliffs +label-cnc-map-generator-choice-terrain-type-parks = + .label = Parks + .description = Open spaces with light forestry and occasional cliffs +label-cnc-map-generator-choice-terrain-type-woodlands = + .label = Woodlands + .description = Moderate forestry with occasional cliffs +label-cnc-map-generator-choice-terrain-type-overgrown = + .label = Overgrown + .description = Narrow passages, dense forestry and moderate cliffs +label-cnc-map-generator-choice-terrain-type-rocky = + .label = Rocky + .description = Moderate cliffs with light forestry +label-cnc-map-generator-choice-terrain-type-mountains = + .label = Mountains + .description = Many long cliffs +label-cnc-map-generator-choice-terrain-type-mountain-lakes = + .label = Mountain Lakes + .description = Lakes and many long cliffs label-cnc-map-generator-option-rotations = Rotations label-cnc-map-generator-option-mirror = Mirror -label-cnc-map-generator-choice-mirror-none = None -label-cnc-map-generator-choice-mirror-left-matches-right = Left vs right -label-cnc-map-generator-choice-mirror-top-left-matches-bottom-right = Top left vs bottom right -label-cnc-map-generator-choice-mirror-top-matches-bottom = Top vs bottom -label-cnc-map-generator-choice-mirror-top-right-matches-bottom-left = Top right vs bottom left +label-cnc-map-generator-choice-mirror-none = + .label = None +label-cnc-map-generator-choice-mirror-left-matches-right = + .label = Left vs right +label-cnc-map-generator-choice-mirror-top-left-matches-bottom-right = + .label = Top left vs bottom right +label-cnc-map-generator-choice-mirror-top-matches-bottom = + .label = Top vs bottom +label-cnc-map-generator-choice-mirror-top-right-matches-bottom-left = + .label = Top right vs bottom left label-cnc-map-generator-option-shape = Bounds Shape -label-cnc-map-generator-choice-shape-square = Square -label-cnc-map-generator-choice-shape-circle-mountain = Circle in mountains -label-cnc-map-generator-choice-shape-circle-water = Circle in water +label-cnc-map-generator-choice-shape-square = + .label = Rectangle + .description = Full size terrain generation +label-cnc-map-generator-choice-shape-circle-mountain = + .label = Circle in mountains + .description = Terrain generation is constrained by a circular mountain range +label-cnc-map-generator-choice-shape-circle-water = + .label = Circle in water + .description = Terrain generation is constrained to a circle enclosed by water label-cnc-map-generator-option-players = Players per side label-cnc-map-generator-option-resources = Resources -label-cnc-map-generator-choice-resources-none = None -label-cnc-map-generator-choice-resources-low = Low -label-cnc-map-generator-choice-resources-medium = Medium -label-cnc-map-generator-choice-resources-high = High -label-cnc-map-generator-choice-resources-very-high = Very High -label-cnc-map-generator-choice-resources-full = Oreful +label-cnc-map-generator-choice-resources-none = + .label = None +label-cnc-map-generator-choice-resources-low = + .label = Low +label-cnc-map-generator-choice-resources-medium = + .label = Medium +label-cnc-map-generator-choice-resources-high = + .label = High +label-cnc-map-generator-choice-resources-very-high = + .label = Very High +label-cnc-map-generator-choice-resources-full = + .label = Oreful label-cnc-map-generator-option-buildings = Buildings -label-cnc-map-generator-choice-buildings-none = None -label-cnc-map-generator-choice-buildings-standard = Standard -label-cnc-map-generator-choice-buildings-extra = Extra -label-cnc-map-generator-choice-buildings-oil-only = Oil Only -label-cnc-map-generator-choice-buildings-oil-rush = Oil Rush +label-cnc-map-generator-choice-buildings-none = + .label = None + .description = No tech structures +label-cnc-map-generator-choice-buildings-standard = + .label = Standard + .description = Oil derricks, hospitals, and comm centers +label-cnc-map-generator-choice-buildings-extra = + .label = Extra + .description = Oil derricks, hospitals, comm centers, forward commands, pillboxes +label-cnc-map-generator-choice-buildings-oil-only = + .label = Oil Only + .description = Oil derricks only +label-cnc-map-generator-choice-buildings-oil-rush = + .label = Oil Rush + .description = Lots of oil derricks label-cnc-map-generator-option-density = Entity Density -label-cnc-map-generator-choice-density-players = Scale with players -label-cnc-map-generator-choice-density-area-and-players = Scale with area and players -label-cnc-map-generator-choice-density-area-very-low = Scale with area (very low density) -label-cnc-map-generator-choice-density-area-low = Scale with area (low density) -label-cnc-map-generator-choice-density-area-medium = Scale with area (medium density) -label-cnc-map-generator-choice-density-area-high = Scale with area (high density) -label-cnc-map-generator-choice-density-area-very-high = Scale with area (very high density) +label-cnc-map-generator-choice-density-players = + .label = Scale with players +label-cnc-map-generator-choice-density-area-and-players = + .label = Scale with area and players +label-cnc-map-generator-choice-density-area-very-low = + .label = Scale with area (very low density) +label-cnc-map-generator-choice-density-area-low = + .label = Scale with area (low density) +label-cnc-map-generator-choice-density-area-medium = + .label = Scale with area (medium density) +label-cnc-map-generator-choice-density-area-high = + .label = Scale with area (high density) +label-cnc-map-generator-choice-density-area-very-high = + .label = Scale with area (very high density) label-cnc-map-generator-option-roads = Roads label-cnc-map-generator-option-deny-walled-areas = Obstruct walled areas label-cnc-map-generator-option-civilian-density = Civilian Density -label-cnc-map-generator-choice-civilian-density-default = Default -label-cnc-map-generator-choice-civilian-density-none = None -label-cnc-map-generator-choice-civilian-density-low = Low -label-cnc-map-generator-choice-civilian-density-medium = Medium -label-cnc-map-generator-choice-civilian-density-high = High -label-cnc-map-generator-choice-civilian-density-very-high = Very High -label-cnc-map-generator-choice-civilian-density-max = Maximum +label-cnc-map-generator-choice-civilian-density-default = + .label = Default +label-cnc-map-generator-choice-civilian-density-none = + .label = None +label-cnc-map-generator-choice-civilian-density-low = + .label = Low +label-cnc-map-generator-choice-civilian-density-medium = + .label = Medium +label-cnc-map-generator-choice-civilian-density-high = + .label = High +label-cnc-map-generator-choice-civilian-density-very-high = + .label = Very High +label-cnc-map-generator-choice-civilian-density-max = + .label = Maximum diff --git a/mods/common/chrome/dropdowns.yaml b/mods/common/chrome/dropdowns.yaml index 30a9b777f4..c5a0ea5b1f 100644 --- a/mods/common/chrome/dropdowns.yaml +++ b/mods/common/chrome/dropdowns.yaml @@ -26,6 +26,36 @@ ScrollPanel@LABEL_DROPDOWN_TEMPLATE: Width: PARENT_WIDTH - 20 Height: 25 +ScrollPanel@LABEL_DROPDOWN_WITH_TOOLTIP_TEMPLATE: + Width: DROPDOWN_WIDTH + Children: + ScrollItem@HEADER: + Background: scrollheader + Width: PARENT_WIDTH - 27 + Height: 13 + X: 2 + Y: 0 + Visible: false + Children: + Label@LABEL: + Font: TinyBold + Width: PARENT_WIDTH + Height: 13 + Align: Center + ScrollItem@TEMPLATE: + Width: PARENT_WIDTH - 27 + Height: 25 + X: 2 + Y: 0 + TooltipContainer: TOOLTIP_CONTAINER + TooltipTemplate: BUTTON_TOOLTIP + Visible: false + Children: + Label@LABEL: + X: 10 + Width: PARENT_WIDTH - 20 + Height: 25 + ScrollPanel@PLAYERACTION_DROPDOWN_TEMPLATE: Width: DROPDOWN_WIDTH Children: diff --git a/mods/common/chrome/editor.yaml b/mods/common/chrome/editor.yaml index df86d8f68e..53051319ca 100644 --- a/mods/common/chrome/editor.yaml +++ b/mods/common/chrome/editor.yaml @@ -621,6 +621,7 @@ Container@EDITOR_WORLD_ROOT: Y: 20 Width: PARENT_WIDTH Height: 25 + PanelRoot: EDITOR_WORLD_ROOT Container@HISTORY_WIDGETS: X: WINDOW_WIDTH - 320 Y: 354 diff --git a/mods/ra/fluent/rules.ftl b/mods/ra/fluent/rules.ftl index 2f5031e3c8..9e37de8e6a 100644 --- a/mods/ra/fluent/rules.ftl +++ b/mods/ra/fluent/rules.ftl @@ -947,77 +947,151 @@ bot-naval-ai = ## map-generators.yaml label-clear-map-generator-option-tile = Tile -label-clear-map-generator-choice-tile-clear = Clear -label-clear-map-generator-choice-tile-water = Water -label-clear-map-generator-choice-tile-empty = Empty space +label-clear-map-generator-choice-tile-clear = + .label = Clear +label-clear-map-generator-choice-tile-water = + .label = Water +label-clear-map-generator-choice-tile-empty = + .label = Empty space label-ra-map-generator-option-seed = Seed label-ra-map-generator-option-terrain-type = Terrain Type -label-ra-map-generator-choice-terrain-type-lakes = Lakes -label-ra-map-generator-choice-terrain-type-puddles = Puddles -label-ra-map-generator-choice-terrain-type-gardens = Gardens -label-ra-map-generator-choice-terrain-type-plains = Plains -label-ra-map-generator-choice-terrain-type-parks = Parks -label-ra-map-generator-choice-terrain-type-woodlands = Woodlands -label-ra-map-generator-choice-terrain-type-overgrown = Overgrown -label-ra-map-generator-choice-terrain-type-rocky = Rocky -label-ra-map-generator-choice-terrain-type-mountains = Mountains -label-ra-map-generator-choice-terrain-type-mountain-lakes = Mountain Lakes -label-ra-map-generator-choice-terrain-type-oceanic = Oceanic -label-ra-map-generator-choice-terrain-type-large-islands = Large Islands -label-ra-map-generator-choice-terrain-type-continents = Continents -label-ra-map-generator-choice-terrain-type-wetlands = Wetlands -label-ra-map-generator-choice-terrain-type-narrow-wetlands = Narrow Wetlands +label-ra-map-generator-choice-terrain-type-lakes = + .label = Lakes + .description = Open spaces with moderately sized lakes +label-ra-map-generator-choice-terrain-type-puddles = + .label = Puddles + .description = Open spaces with small ponds +label-ra-map-generator-choice-terrain-type-gardens = + .label = Gardens + .description = Featureful terrain with ponds, cliffs, and forests +label-ra-map-generator-choice-terrain-type-plains = + .label = Plains + .description = Open spaces with sparse trees and cliffs +label-ra-map-generator-choice-terrain-type-parks = + .label = Parks + .description = Open spaces with light forestry and occasional cliffs +label-ra-map-generator-choice-terrain-type-woodlands = + .label = Woodlands + .description = Moderate forestry with occasional cliffs +label-ra-map-generator-choice-terrain-type-overgrown = + .label = Overgrown + .description = Narrow passages, dense forestry and moderate cliffs +label-ra-map-generator-choice-terrain-type-rocky = + .label = Rocky + .description = Moderate cliffs with light forestry +label-ra-map-generator-choice-terrain-type-mountains = + .label = Mountains + .description = Many long cliffs +label-ra-map-generator-choice-terrain-type-mountain-lakes = + .label = Mountain Lakes + .description = Lakes and many long cliffs +label-ra-map-generator-choice-terrain-type-oceanic = + .label = Oceanic + .description = Small islands separated by an ocean +label-ra-map-generator-choice-terrain-type-large-islands = + .label = Large Islands + .description = Large islands separated by an ocean +label-ra-map-generator-choice-terrain-type-continents = + .label = Continents + .description = Large bodies of land and water +label-ra-map-generator-choice-terrain-type-wetlands = + .label = Wetlands + .description = Loose mixtures of land and water +label-ra-map-generator-choice-terrain-type-narrow-wetlands = + .label = Narrow Wetlands + .description = Tight mixtures of land and water label-ra-map-generator-option-rotations = Rotations label-ra-map-generator-option-mirror = Mirror -label-ra-map-generator-choice-mirror-none = None -label-ra-map-generator-choice-mirror-left-matches-right = Left vs right -label-ra-map-generator-choice-mirror-top-left-matches-bottom-right = Top left vs bottom right -label-ra-map-generator-choice-mirror-top-matches-bottom = Top vs bottom -label-ra-map-generator-choice-mirror-top-right-matches-bottom-left = Top right vs bottom left +label-ra-map-generator-choice-mirror-none = + .label = None +label-ra-map-generator-choice-mirror-left-matches-right = + .label = Left vs right +label-ra-map-generator-choice-mirror-top-left-matches-bottom-right = + .label = Top left vs bottom right +label-ra-map-generator-choice-mirror-top-matches-bottom = + .label = Top vs bottom +label-ra-map-generator-choice-mirror-top-right-matches-bottom-left = + .label = Top right vs bottom left label-ra-map-generator-option-shape = Bounds Shape -label-ra-map-generator-choice-shape-square = Square -label-ra-map-generator-choice-shape-circle-mountain = Circle in mountains -label-ra-map-generator-choice-shape-circle-water = Circle in water +label-ra-map-generator-choice-shape-square = + .label = Rectangle + .description = Full size terrain generation +label-ra-map-generator-choice-shape-circle-mountain = + .label = Circle in mountains + .description = Terrain generation is constrained by a circular mountain range +label-ra-map-generator-choice-shape-circle-water = + .label = Circle in water + .description = Terrain generation is constrained to a circle enclosed by water label-ra-map-generator-option-players = Players per side label-ra-map-generator-option-resources = Resources -label-ra-map-generator-choice-resources-none = None -label-ra-map-generator-choice-resources-low = Low -label-ra-map-generator-choice-resources-medium = Medium -label-ra-map-generator-choice-resources-high = High -label-ra-map-generator-choice-resources-very-high = Very High -label-ra-map-generator-choice-resources-full = Oreful +label-ra-map-generator-choice-resources-none = + .label = None +label-ra-map-generator-choice-resources-low = + .label = Low +label-ra-map-generator-choice-resources-medium = + .label = Medium +label-ra-map-generator-choice-resources-high = + .label = High +label-ra-map-generator-choice-resources-very-high = + .label = Very High +label-ra-map-generator-choice-resources-full = + .label = Oreful label-ra-map-generator-option-buildings = Buildings -label-ra-map-generator-choice-buildings-none = None -label-ra-map-generator-choice-buildings-standard = Standard -label-ra-map-generator-choice-buildings-extra = Extra -label-ra-map-generator-choice-buildings-oil-only = Oil Only -label-ra-map-generator-choice-buildings-oil-rush = Oil Rush +label-ra-map-generator-choice-buildings-none = + .label = None + .description = No tech structures +label-ra-map-generator-choice-buildings-standard = + .label = Standard + .description = Oil derricks, hospitals, and comm centers +label-ra-map-generator-choice-buildings-extra = + .label = Extra + .description = Oil derricks, hospitals, comm centers, forward commands, pillboxes +label-ra-map-generator-choice-buildings-oil-only = + .label = Oil Only + .description = Oil derricks only +label-ra-map-generator-choice-buildings-oil-rush = + .label = Oil Rush + .description = Lots of oil derricks label-ra-map-generator-option-density = Entity Density -label-ra-map-generator-choice-density-players = Scale with players -label-ra-map-generator-choice-density-area-and-players = Scale with area and players -label-ra-map-generator-choice-density-area-very-low = Scale with area (very low density) -label-ra-map-generator-choice-density-area-low = Scale with area (low density) -label-ra-map-generator-choice-density-area-medium = Scale with area (medium density) -label-ra-map-generator-choice-density-area-high = Scale with area (high density) -label-ra-map-generator-choice-density-area-very-high = Scale with area (very high density) +label-ra-map-generator-choice-density-players = + .label = Scale with players +label-ra-map-generator-choice-density-area-and-players = + .label = Scale with area and players +label-ra-map-generator-choice-density-area-very-low = + .label = Scale with area (very low density) +label-ra-map-generator-choice-density-area-low = + .label = Scale with area (low density) +label-ra-map-generator-choice-density-area-medium = + .label = Scale with area (medium density) +label-ra-map-generator-choice-density-area-high = + .label = Scale with area (high density) +label-ra-map-generator-choice-density-area-very-high = + .label = Scale with area (very high density) label-ra-map-generator-option-roads = Roads label-ra-map-generator-option-deny-walled-areas = Obstruct walled areas label-ra-map-generator-option-civilian-density = Civilian Density -label-ra-map-generator-choice-civilian-density-default = Default -label-ra-map-generator-choice-civilian-density-none = None -label-ra-map-generator-choice-civilian-density-low = Low -label-ra-map-generator-choice-civilian-density-medium = Medium -label-ra-map-generator-choice-civilian-density-high = High -label-ra-map-generator-choice-civilian-density-very-high = Very High -label-ra-map-generator-choice-civilian-density-max = Maximum +label-ra-map-generator-choice-civilian-density-default = + .label = Default +label-ra-map-generator-choice-civilian-density-none = + .label = None +label-ra-map-generator-choice-civilian-density-low = + .label = Low +label-ra-map-generator-choice-civilian-density-medium = + .label = Medium +label-ra-map-generator-choice-civilian-density-high = + .label = High +label-ra-map-generator-choice-civilian-density-very-high = + .label = Very High +label-ra-map-generator-choice-civilian-density-max = + .label = Maximum