From b5256ce01401ca0bfec951f84d814834a64a1583 Mon Sep 17 00:00:00 2001 From: Feldfeld Date: Sun, 22 Dec 2024 20:59:15 +0100 Subject: [PATCH] Include Player Placement setting in Game Description The option was missing, so player placement was not shown in the game description part of the game setup, and it was not shown in the objectives page in-game. --- .../attributes/PlayerPlacement.js | 29 ----------------- .../mods/public/gui/common/gamedescription.js | 9 ++++++ .../data/mods/public/gui/common/settings.js | 1 + .../Single/Dropdowns/PlayerPlacement.js | 2 +- .../GameSetupPage/Panels/GameDescription.js | 1 + .../data/settings/player_placements.json | 32 +++++++++++++++++++ 6 files changed, 44 insertions(+), 30 deletions(-) create mode 100644 binaries/data/mods/public/simulation/data/settings/player_placements.json 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." + } + ] +}