As proposed by mimo following https://wildfiregames.com/forum/index.php?/topic/24267-errors-in-gamesetupjs/, players will run into persist-match-settings bugs more often in alpha 23 due to the easy mod downloader and we could improve this for the release.
The correct fix would require restructuring of the data, rewrite of the functions, loading one setting after another rather than the final settings product.
But that can't be done now.
The workaround can be removed if/when the functions were rerwritten.
Details
Notice the ReplayLogger writes the engine_version and mod_version anyhow, so deleting them after loading the settings is not mandatory,
but it seems cleaner to not have this in the gamesetup when it's not used there (and avoids some bytes traffic).
Diff Detail
- Repository
- rP 0 A.D. Public Repository
- Branch
- /ps/trunk
- Lint
Lint OK - Unit
No Unit Test Coverage - Build Status
Buildable 5996 Build 9994: Vulcan Build Jenkins Build 9993: arc lint + arc unit
Event Timeline
Successful build - Chance fights ever on the side of the prudent.
Linter detected issues: Executing section Default... Executing section Source... Executing section JS... | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 62| 62| var g_RomanNumbers = [undefined, "I", "II", "III", "IV", "V", "VI", "VII", "VIII"]; | 63| 63| | 64| 64| var g_PlayerTeamList = prepareForDropdown([{ | 65| |- "label": translateWithContext("team", "None"), | | 65|+ "label": translateWithContext("team", "None"), | 66| 66| "id": -1 | 67| 67| }].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 63| 63| | 64| 64| var g_PlayerTeamList = prepareForDropdown([{ | 65| 65| "label": translateWithContext("team", "None"), | 66| |- "id": -1 | | 66|+ "id": -1 | 67| 67| }].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | | [NORMAL] ESLintBear (indent): | | Expected indentation of 0 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 64| 64| var g_PlayerTeamList = prepareForDropdown([{ | 65| 65| "label": translateWithContext("team", "None"), | 66| 66| "id": -1 | 67| |- }].concat( | | 67|+}].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | 70| 70| "id": i | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 65| 65| "label": translateWithContext("team", "None"), | 66| 66| "id": -1 | 67| 67| }].concat( | 68| |- Array(g_MaxTeams).fill(0).map((v, i) => ({ | | 68|+ Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | 70| 70| "id": i | 71| 71| })) | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 66| 66| "id": -1 | 67| 67| }].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| |- "label": i + 1, | | 69|+ "label": i + 1, | 70| 70| "id": i | 71| 71| })) | 72| 72| ) | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 67| 67| }].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | 70| |- "id": i | | 70|+ "id": i | 71| 71| })) | 72| 72| ) | 73| 73| ); | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | 70| 70| "id": i | 71| |- })) | | 71|+ })) | 72| 72| ) | 73| 73| ); | 74| 74| | | [NORMAL] ESLintBear (indent): | | Expected indentation of 0 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 69| 69| "label": i + 1, | 70| 70| "id": i | 71| 71| })) | 72| |- ) | | 72|+) | 73| 73| ); | 74| 74| | 75| 75| /** | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 78| 78| var g_RelicCountList = Object.keys(g_CivData).map((civ, i) => i + 1); | 79| 79| | 80| 80| var g_PlayerCivList = g_CivData && prepareForDropdown([{ | 81| |- "name": translateWithContext("civilization", "Random"), | | 81|+ "name": translateWithContext("civilization", "Random"), | 82| 82| "tooltip": translate("Picks one civilization at random when the game starts."), | 83| 83| "color": g_ColorRandom, | 84| 84| "code": "random" | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 79| 79| | 80| 80| var g_PlayerCivList = g_CivData && prepareForDropdown([{ | 81| 81| "name": translateWithContext("civilization", "Random"), | 82| |- "tooltip": translate("Picks one civilization at random when the game starts."), | | 82|+ "tooltip": translate("Picks one civilization at random when the game starts."), | 83| 83| "color": g_ColorRandom, | 84| 84| "code": "random" | 85| 85| }].concat( | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 80| 80| var g_PlayerCivList = g_CivData && prepareForDropdown([{ | 81| 81| "name": translateWithContext("civilization", "Random"), | 82| 82| "tooltip": translate("Picks one civilization at random when the game starts."), | 83| |- "color": g_ColorRandom, | | 83|+ "color": g_ColorRandom, | 84| 84| "code": "random" | 85| 85| }].concat( | 86| 86| Object.keys(g_CivData).filter( | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 81| 81| "name": translateWithContext("civilization", "Random"), | 82| 82| "tooltip": translate("Picks one civilization at random when the game starts."), | 83| 83| "color": g_ColorRandom, | 84| |- "code": "random" | | 84|+ "code": "random" | 85| 85| }].concat( | 86| 86| Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | | [NORMAL] ESLintBear (indent): | | Expected indentation of 0 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 82| 82| "tooltip": translate("Picks one civilization at random when the game starts."), | 83| 83| "color": g_ColorRandom, | 84| 84| "code": "random" | 85| |- }].concat( | | 85|+}].concat( | 86| 86| Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 83| 83| "color": g_ColorRandom, | 84| 84| "code": "random" | 85| 85| }].concat( | 86| |- Object.keys(g_CivData).filter( | | 86|+ Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 84| 84| "code": "random" | 85| 85| }].concat( | 86| 86| Object.keys(g_CivData).filter( | 87| |- civ => g_CivData[civ].SelectableInGameSetup | | 87|+ civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 85| 85| }].concat( | 86| 86| Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| |- ).map(civ => ({ | | 88|+ ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 86| 86| Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | 89| |- "name": g_CivData[civ].Name, | | 89|+ "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | 92| 92| "code": civ | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | 90| |- "tooltip": g_CivData[civ].History, | | 90|+ "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | 92| 92| "code": civ | 93| 93| })).sort(sortNameIgnoreCase) | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 88| 88| ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | 91| |- "color": g_ColorRegular, | | 91|+ "color": g_ColorRegular, | 92| 92| "code": civ | 93| 93| })).sort(sortNameIgnoreCase) | 94| 94| ) | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 89| 89| "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | 92| |- "code": civ | | 92|+ "code": civ | 93| 93| })).sort(sortNameIgnoreCase) | 94| 94| ) | 95| 95| ); | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 90| 90| "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | 92| 92| "code": civ | 93| |- })).sort(sortNameIgnoreCase) | | 93|+ })).sort(sortNameIgnoreCase) | 94| 94| ) | 95| 95| ); | 96| 96| | | [NORMAL] ESLintBear (indent): | | Expected indentation of 0 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 91| 91| "color": g_ColorRegular, | 92| 92| "code": civ | 93| 93| })).sort(sortNameIgnoreCase) | 94| |- ) | | 94|+) | 95| 95| ); | 96| 96| | 97| 97| /** | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js |1132|1132| translate("%(hotkey_civinfo)s / %(hotkey_structree)s: View History / Structure Tree\nLast opened will be reopened on click."), { |1133|1133| "hotkey_civinfo": colorizeHotkey("%(hotkey)s", "civinfo"), |1134|1134| "hotkey_structree": colorizeHotkey("%(hotkey)s", "structree") |1135| |- }); | |1135|+ }); |1136|1136| } |1137|1137| |1138|1138| function initDefaults() | | [NORMAL] ESLintBear (no-trailing-spaces): | | Trailing spaces not allowed. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js |1226|1226| offset = -Math.min(slideSpeed * dt, maxOffset); |1227|1227| } |1228|1228| |1229| |- updateSettingsPanelPosition(offset); | |1229|+ updateSettingsPanelPosition(offset); |1230|1230| } |1231|1231| |1232|1232| /** | | [NORMAL] ESLintBear (curly): | | Unnecessary { after 'if' condition. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js |1757|1757| let biomeList; |1758|1758| |1759|1759| if (g_GameAttributes.mapType == "random" && g_GameAttributes.settings.SupportedBiomes) |1760| |- { | |1760|+ |1761|1761| if (typeof g_GameAttributes.settings.SupportedBiomes == "string") |1762|1762| biomeList = g_Settings.Biomes.filter(biome => biome.Id.startsWith(g_GameAttributes.settings.SupportedBiomes)); |1763|1763| else |1764|1764| biomeList = g_Settings.Biomes.filter( |1765|1765| biome => g_GameAttributes.settings.SupportedBiomes.indexOf(biome.Id) != -1); |1766| |- } | |1766|+ |1767|1767| |1768|1768| g_BiomeList = biomeList && prepareForDropdown( |1769|1769| [{ binaries/data/mods/public/gui/gamesetup/gamesetup.js |1998| » while·(g_IsNetworked) | | [NORMAL] ESLintBear (no-unmodified-loop-condition): | | 'g_IsNetworked' is not modified in this loop.
Link to build: https://jenkins.wildfiregames.com/job/differential/446/display/redirect
Let me know what you think of those suggestions.
binaries/data/mods/public/gui/gamesetup/gamesetup.js | ||
---|---|---|
1861 | It would be nicer to set attrs to the current engine version and mods (now that the comparison with the previous value is done), which removes the need for a change in savePersistMatchSettings. | |
1903 | This changes the behavior: previously when the option was set to false, the file was deleted (or rather saved with empty content). I think it was cleaner that way. |
binaries/data/mods/public/gui/gamesetup/gamesetup.js | ||
---|---|---|
1861 | The idea was to not store anything in g_GameAttributes that isn't a gamesetting, at least relying on that to be present seems meh when we want to rewrite that later to contain only gamechoices (and not derived things like triggerscripts from victory conditions). | |
1903 | Seems cleaner to interact with a file if and only if the corresponding feature is enabled, no? |
binaries/data/mods/public/gui/gamesetup/gamesetup.js | ||
---|---|---|
1903 | Well it depends what happens if somebody deactivates the option, and reenables it two months later (for instance by mistake, after resetting the options to defaults). Seeing strange gamesetup options (or not seeing them, if it's secondary options under secondary tabs) is likely to create bug reports or frustration. |
Successful build - Chance fights ever on the side of the prudent.
Linter detected issues: Executing section Default... Executing section Source... Executing section JS... | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 62| 62| var g_RomanNumbers = [undefined, "I", "II", "III", "IV", "V", "VI", "VII", "VIII"]; | 63| 63| | 64| 64| var g_PlayerTeamList = prepareForDropdown([{ | 65| |- "label": translateWithContext("team", "None"), | | 65|+ "label": translateWithContext("team", "None"), | 66| 66| "id": -1 | 67| 67| }].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 63| 63| | 64| 64| var g_PlayerTeamList = prepareForDropdown([{ | 65| 65| "label": translateWithContext("team", "None"), | 66| |- "id": -1 | | 66|+ "id": -1 | 67| 67| }].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | | [NORMAL] ESLintBear (indent): | | Expected indentation of 0 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 64| 64| var g_PlayerTeamList = prepareForDropdown([{ | 65| 65| "label": translateWithContext("team", "None"), | 66| 66| "id": -1 | 67| |- }].concat( | | 67|+}].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | 70| 70| "id": i | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 65| 65| "label": translateWithContext("team", "None"), | 66| 66| "id": -1 | 67| 67| }].concat( | 68| |- Array(g_MaxTeams).fill(0).map((v, i) => ({ | | 68|+ Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | 70| 70| "id": i | 71| 71| })) | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 66| 66| "id": -1 | 67| 67| }].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| |- "label": i + 1, | | 69|+ "label": i + 1, | 70| 70| "id": i | 71| 71| })) | 72| 72| ) | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 67| 67| }].concat( | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | 70| |- "id": i | | 70|+ "id": i | 71| 71| })) | 72| 72| ) | 73| 73| ); | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 68| 68| Array(g_MaxTeams).fill(0).map((v, i) => ({ | 69| 69| "label": i + 1, | 70| 70| "id": i | 71| |- })) | | 71|+ })) | 72| 72| ) | 73| 73| ); | 74| 74| | | [NORMAL] ESLintBear (indent): | | Expected indentation of 0 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 69| 69| "label": i + 1, | 70| 70| "id": i | 71| 71| })) | 72| |- ) | | 72|+) | 73| 73| ); | 74| 74| | 75| 75| /** | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 78| 78| var g_RelicCountList = Object.keys(g_CivData).map((civ, i) => i + 1); | 79| 79| | 80| 80| var g_PlayerCivList = g_CivData && prepareForDropdown([{ | 81| |- "name": translateWithContext("civilization", "Random"), | | 81|+ "name": translateWithContext("civilization", "Random"), | 82| 82| "tooltip": translate("Picks one civilization at random when the game starts."), | 83| 83| "color": g_ColorRandom, | 84| 84| "code": "random" | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 79| 79| | 80| 80| var g_PlayerCivList = g_CivData && prepareForDropdown([{ | 81| 81| "name": translateWithContext("civilization", "Random"), | 82| |- "tooltip": translate("Picks one civilization at random when the game starts."), | | 82|+ "tooltip": translate("Picks one civilization at random when the game starts."), | 83| 83| "color": g_ColorRandom, | 84| 84| "code": "random" | 85| 85| }].concat( | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 80| 80| var g_PlayerCivList = g_CivData && prepareForDropdown([{ | 81| 81| "name": translateWithContext("civilization", "Random"), | 82| 82| "tooltip": translate("Picks one civilization at random when the game starts."), | 83| |- "color": g_ColorRandom, | | 83|+ "color": g_ColorRandom, | 84| 84| "code": "random" | 85| 85| }].concat( | 86| 86| Object.keys(g_CivData).filter( | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 81| 81| "name": translateWithContext("civilization", "Random"), | 82| 82| "tooltip": translate("Picks one civilization at random when the game starts."), | 83| 83| "color": g_ColorRandom, | 84| |- "code": "random" | | 84|+ "code": "random" | 85| 85| }].concat( | 86| 86| Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | | [NORMAL] ESLintBear (indent): | | Expected indentation of 0 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 82| 82| "tooltip": translate("Picks one civilization at random when the game starts."), | 83| 83| "color": g_ColorRandom, | 84| 84| "code": "random" | 85| |- }].concat( | | 85|+}].concat( | 86| 86| Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 83| 83| "color": g_ColorRandom, | 84| 84| "code": "random" | 85| 85| }].concat( | 86| |- Object.keys(g_CivData).filter( | | 86|+ Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 84| 84| "code": "random" | 85| 85| }].concat( | 86| 86| Object.keys(g_CivData).filter( | 87| |- civ => g_CivData[civ].SelectableInGameSetup | | 87|+ civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 85| 85| }].concat( | 86| 86| Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| |- ).map(civ => ({ | | 88|+ ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 86| 86| Object.keys(g_CivData).filter( | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | 89| |- "name": g_CivData[civ].Name, | | 89|+ "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | 92| 92| "code": civ | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 87| 87| civ => g_CivData[civ].SelectableInGameSetup | 88| 88| ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | 90| |- "tooltip": g_CivData[civ].History, | | 90|+ "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | 92| 92| "code": civ | 93| 93| })).sort(sortNameIgnoreCase) | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 88| 88| ).map(civ => ({ | 89| 89| "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | 91| |- "color": g_ColorRegular, | | 91|+ "color": g_ColorRegular, | 92| 92| "code": civ | 93| 93| })).sort(sortNameIgnoreCase) | 94| 94| ) | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 3. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 89| 89| "name": g_CivData[civ].Name, | 90| 90| "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | 92| |- "code": civ | | 92|+ "code": civ | 93| 93| })).sort(sortNameIgnoreCase) | 94| 94| ) | 95| 95| ); | | [NORMAL] ESLintBear (indent): | | Expected indentation of 1 tab but found 2. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 90| 90| "tooltip": g_CivData[civ].History, | 91| 91| "color": g_ColorRegular, | 92| 92| "code": civ | 93| |- })).sort(sortNameIgnoreCase) | | 93|+ })).sort(sortNameIgnoreCase) | 94| 94| ) | 95| 95| ); | 96| 96| | | [NORMAL] ESLintBear (indent): | | Expected indentation of 0 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | 91| 91| "color": g_ColorRegular, | 92| 92| "code": civ | 93| 93| })).sort(sortNameIgnoreCase) | 94| |- ) | | 94|+) | 95| 95| ); | 96| 96| | 97| 97| /** | | [NORMAL] ESLintBear (indent): | | Expected indentation of 2 tabs but found 1. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js |1132|1132| translate("%(hotkey_civinfo)s / %(hotkey_structree)s: View History / Structure Tree\nLast opened will be reopened on click."), { |1133|1133| "hotkey_civinfo": colorizeHotkey("%(hotkey)s", "civinfo"), |1134|1134| "hotkey_structree": colorizeHotkey("%(hotkey)s", "structree") |1135| |- }); | |1135|+ }); |1136|1136| } |1137|1137| |1138|1138| function initDefaults() | | [NORMAL] ESLintBear (no-trailing-spaces): | | Trailing spaces not allowed. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js |1226|1226| offset = -Math.min(slideSpeed * dt, maxOffset); |1227|1227| } |1228|1228| |1229| |- updateSettingsPanelPosition(offset); | |1229|+ updateSettingsPanelPosition(offset); |1230|1230| } |1231|1231| |1232|1232| /** | | [NORMAL] ESLintBear (curly): | | Unnecessary { after 'if' condition. |----| | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js | |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/gamesetup/gamesetup.js |1757|1757| let biomeList; |1758|1758| |1759|1759| if (g_GameAttributes.mapType == "random" && g_GameAttributes.settings.SupportedBiomes) |1760| |- { | |1760|+ |1761|1761| if (typeof g_GameAttributes.settings.SupportedBiomes == "string") |1762|1762| biomeList = g_Settings.Biomes.filter(biome => biome.Id.startsWith(g_GameAttributes.settings.SupportedBiomes)); |1763|1763| else |1764|1764| biomeList = g_Settings.Biomes.filter( |1765|1765| biome => g_GameAttributes.settings.SupportedBiomes.indexOf(biome.Id) != -1); |1766| |- } | |1766|+ |1767|1767| |1768|1768| g_BiomeList = biomeList && prepareForDropdown( |1769|1769| [{ binaries/data/mods/public/gui/gamesetup/gamesetup.js |2001| » while·(g_IsNetworked) | | [NORMAL] ESLintBear (no-unmodified-loop-condition): | | 'g_IsNetworked' is not modified in this loop.
Link to build: https://jenkins.wildfiregames.com/job/differential/449/display/redirect
This looks nice to me! As a disclaimer, I didn't test it, but my concerns from the previous version are addressed.