Index: binaries/data/mods/public/globalscripts/Templates.js =================================================================== --- binaries/data/mods/public/globalscripts/Templates.js +++ binaries/data/mods/public/globalscripts/Templates.js @@ -1,4 +1,37 @@ /** + * Loads history and gameplay data of all civs. + * Can be used from GUI and rmgen (because the simulation doesn't have these functions yet). + * + * @param selectableOnly {boolean} - Only load civs that can be selected + * in the gamesetup. Scenario maps might set non-selectable civs. + */ +function loadCivFiles(selectableOnly) +{ + let civFiles = Engine.BuildDirEntList("simulation/data/civs/", "*.json", false); + + let propertyNames = [ + "Code", "Culture", "Name", "Emblem", "History", "Music", "Factions", "CivBonuses", "TeamBonuses", + "SkirmishReplacements", "Structures", "StartEntities", "Formations", "AINames", "SelectableInGameSetup"] + + let civData = {}; + for (let filename of civFiles) + { + let data = Engine.ReadJSONFile(filename); + if (!data) + throw new Error("Could not load " + filename); + + for (let prop of propertyNames) + if (data[prop] === undefined) + throw new Error(filename + " doesn't contain " + prop); + + if (!selectableOnly || data.SelectableInGameSetup) + civData[data.Code] = data; + } + + return civData; +} + +/** * Gets an array of all classes for this identity template */ function GetIdentityClasses(template) Index: binaries/data/mods/public/gui/civinfo/civinfo.xml =================================================================== --- binaries/data/mods/public/gui/civinfo/civinfo.xml +++ binaries/data/mods/public/gui/civinfo/civinfo.xml @@ -2,7 +2,6 @@ -