diff --git a/binaries/data/mods/public/gamesettings/attributes/PlayerPlacement.js b/binaries/data/mods/public/gamesettings/attributes/PlayerPlacement.js index 13a78731df..8cf636387e 100644 --- a/binaries/data/mods/public/gamesettings/attributes/PlayerPlacement.js +++ b/binaries/data/mods/public/gamesettings/attributes/PlayerPlacement.js @@ -47,32 +47,3 @@ GameSettings.prototype.Attributes.PlayerPlacement = class PlayerPlacement extend return true; } }; - - -GameSettings.prototype.Attributes.PlayerPlacement.prototype.StartingPositions = [ - { - "Id": "circle", - "Name": translateWithContext("player placement", "Circle"), - "Description": translate("Players are placed in a circle spanning the map.") - }, - { - "Id": "river", - "Name": translateWithContext("player placement", "River"), - "Description": translate("Allied players are placed on two parallel lines.") - }, - { - "Id": "groupedLines", - "Name": translateWithContext("player placement", "Grouped lines"), - "Description": translate("Allied players are placed along opposing radial lines"), - }, - { - "Id": "randomGroup", - "Name": translateWithContext("player placement", "Random Group"), - "Description": translate("Allied players are grouped, but otherwise placed randomly on the map."), - }, - { - "Id": "stronghold", - "Name": translateWithContext("player placement", "Stronghold"), - "Description": translate("Allied players are grouped in one random place of the map."), - } -]; diff --git a/binaries/data/mods/public/gui/common/gamedescription.js b/binaries/data/mods/public/gui/common/gamedescription.js index 990fee6500..f1b5c6308f 100644 --- a/binaries/data/mods/public/gui/common/gamedescription.js +++ b/binaries/data/mods/public/gui/common/gamedescription.js @@ -317,6 +317,15 @@ function getGameDescription(initAttributes, mapCache) }); } + if (initAttributes.settings.PlayerPlacement) + { + const playerPlacement = g_Settings.PlayerPlacements.find(placement => placement.Id === initAttributes.settings.PlayerPlacement); + titles.push({ + "label": playerPlacement ? playerPlacement.Name : translateWithContext("player placement", "Random Player Placement"), + "value": playerPlacement ? playerPlacement.Description : translate("Randomly select a player placement from the list.") + }); + } + if (initAttributes.settings.Biome) { let biome = g_Settings.Biomes.find(b => b.Id == initAttributes.settings.Biome); diff --git a/binaries/data/mods/public/gui/common/settings.js b/binaries/data/mods/public/gui/common/settings.js index 7d4dedb7bd..7969031838 100644 --- a/binaries/data/mods/public/gui/common/settings.js +++ b/binaries/data/mods/public/gui/common/settings.js @@ -41,6 +41,7 @@ function loadSettingsValues() "GameSpeeds": loadSettingValuesFile("game_speeds.json"), "MapTypes": loadMapTypes(), "MapSizes": loadSettingValuesFile("map_sizes.json"), + "PlayerPlacements": loadSettingValuesFile("player_placements.json"), "Biomes": loadBiomes(), "PlayerDefaults": loadPlayerDefaults(), "PopulationCapacities": loadSettingValuesFile("population_capacities.json"), diff --git a/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Dropdowns/PlayerPlacement.js b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Dropdowns/PlayerPlacement.js index 6166612c7d..9a8426853a 100644 --- a/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Dropdowns/PlayerPlacement.js +++ b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Dropdowns/PlayerPlacement.js @@ -26,7 +26,7 @@ GameSettingControls.PlayerPlacement = class PlayerPlacement extends GameSettingC let patterns = [randomItem]; for (let pattern of g_GameSettings.playerPlacement.available) - patterns.push(g_GameSettings.playerPlacement.StartingPositions + patterns.push(g_Settings.PlayerPlacements .find(pObj => pObj.Id == pattern)); this.values = prepareForDropdown(patterns); diff --git a/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/GameDescription.js b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/GameDescription.js index ad35521d3a..ab1047a842 100644 --- a/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/GameDescription.js +++ b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/GameDescription.js @@ -26,6 +26,7 @@ class GameDescription g_GameSettings.mapExploration.watch(update, ["allied"]); g_GameSettings.nomad.watch(update, ["enabled"]); g_GameSettings.population.watch(update, ["perPlayer", "cap", "capType"]); + g_GameSettings.playerPlacement.watch(update, ["value"]); g_GameSettings.rating.watch(update, ["enabled"]); g_GameSettings.regicideGarrison.watch(update, ["enabled"]); g_GameSettings.relic.watch(update, ["count", "duration"]); diff --git a/binaries/data/mods/public/simulation/data/settings/player_placements.json b/binaries/data/mods/public/simulation/data/settings/player_placements.json new file mode 100644 index 0000000000..d7a514beb3 --- /dev/null +++ b/binaries/data/mods/public/simulation/data/settings/player_placements.json @@ -0,0 +1,32 @@ +{ + "TranslatedKeys": ["Name", "Description"], + "TranslationContext": "player placement", + "Data": + [ + { + "Id": "circle", + "Name": "Circle", + "Description": "Players are placed in a circle spanning the map." + }, + { + "Id": "river", + "Name": "River", + "Description": "Allied players are placed on two parallel lines." + }, + { + "Id": "groupedLines", + "Name": "Grouped Lines", + "Description": "Allied players are placed along opposing radial lines." + }, + { + "Id": "randomGroup", + "Name": "Random Group", + "Description": "Allied players are grouped, but otherwise placed randomly on the map." + }, + { + "Id": "stronghold", + "Name": "Stronghold", + "Description": "Allied players are tightly grouped together." + } + ] +}