Page MenuHomeWildfire Games

Show rank icon above status bars
ClosedPublic

Authored by Imarok on Jul 6 2017, 9:39 PM.

Details

Summary

This shows the rank icon of the unit above status bars.


Also adds some style fixes to this file.

Test Plan

Press to show all status bars and rank icons.
Hover a unit to show a status bar and rank icons.
Select a unit to show a status bar and rank icons.
The rank icon should update when promoted.
The rank icon should only appear for a unit with rank.
The rank icon should not interfere with any bar or aura overlay icon.

Diff Detail

Repository
rP 0 A.D. Public Repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Imarok added a comment.Jul 7 2017, 2:04 PM

Remove style cleanup. Move rank icons into a folder and just use the rank name as file name.

Vulcan added a comment.Jul 7 2017, 3:16 PM

Build is green

Updating workspaces.
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...

http://jw:8080/job/phabricator/1710/ for more details.

Vulcan added a comment.Jul 7 2017, 3:18 PM
Executing section Default...
Executing section Source...
Executing section JS...

binaries/data/mods/public/simulation/components/StatusBars.js
| 167| »   if·(!cmpHealth·||·!cmpHealth.GetHitpoints()·>·0)
|    | [NORMAL] JSHintBear:
|    | Confusing use of '!'.

binaries/data/mods/public/gui/session/selection_details.js
| 395| »   »   let·setCaptureBarPart·=·function(playerID,·startSize)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'playerID' is already declared in the upper scope.

binaries/data/mods/public/gui/session/selection_details.js
| 360| »   »   »   capturePoints·=·entState.capturePoints.map((v,·i)·=>·v·+·capturePoints[i]);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/selection_details.js
| 432| »   »   »   »   res·=>·totalCarrying[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 441| »   »   »   »   res·=>·totalLoot[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 468| »   if·(entStates.length·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.
Executing section XML GUI...
Executing section Python...
Executing section Perl...

http://jw:8080/job/phabricator_lint/296/ for more details.

(IMO it makes things too crowded, but it just comes down to personal taste.)

keyword option

In D717#29070, @elexis wrote:

keyword option

Keyword not-done-in-the-patch™ (yes, that's one word).

Imarok updated this revision to Diff 2905.Jul 13 2017, 11:42 AM

keyword option

keyword nodashinconfigoptions

In D717#29186, @elexis wrote:

keyword nodashinconfigoptions

oh, I didn't know that.

Imarok updated this revision to Diff 2906.Jul 13 2017, 12:15 PM

keyword done

Build is green

Updating workspaces.
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...

http://jw:8080/job/phabricator/1743/ for more details.

Executing section Default...
Executing section Source...
Executing section JS...

binaries/data/mods/public/simulation/components/StatusBars.js
| 169| »   if·(!cmpHealth·||·!cmpHealth.GetHitpoints()·>·0)
|    | [NORMAL] JSHintBear:
|    | Confusing use of '!'.
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allBuildableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 438| 438| g_Selection.isSelection = true;
| 439| 439| 
| 440| 440| var g_canMoveIntoFormation = {};
| 441|    |-var g_allBuildableEntities = undefined;
|    | 441|+var g_allBuildableEntities;
| 442| 442| var g_allTrainableEntities = undefined;
| 443| 443| 
| 444| 444| // Reset cached quantities
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allTrainableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 439| 439| 
| 440| 440| var g_canMoveIntoFormation = {};
| 441| 441| var g_allBuildableEntities = undefined;
| 442|    |-var g_allTrainableEntities = undefined;
|    | 442|+var g_allTrainableEntities;
| 443| 443| 
| 444| 444| // Reset cached quantities
| 445| 445| function onSelectionChange()

binaries/data/mods/public/gui/session/selection.js
|  90| »   if·(this.groups[key]·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 306| »   »   ················g_ViewedPlayer·==·-1·&&·entState.player·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 324| »   »   if·(!quiet·&&·(controlsPlayer(owner)·||·g_IsObserver·||·owner·==·0))
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 441| var·g_allBuildableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allBuildableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection.js
| 442| var·g_allTrainableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allTrainableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection_details.js
| 395| »   »   let·setCaptureBarPart·=·function(playerID,·startSize)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'playerID' is already declared in the upper scope.

binaries/data/mods/public/gui/session/selection_details.js
| 360| »   »   »   capturePoints·=·entState.capturePoints.map((v,·i)·=>·v·+·capturePoints[i]);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/selection_details.js
| 432| »   »   »   »   res·=>·totalCarrying[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 441| »   »   »   »   res·=>·totalLoot[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 468| »   if·(entStates.length·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '+'.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|1634|1634| 
|1635|1635| 		playerStatistics.economyScore += total + ",";
|1636|1636| 		playerStatistics.militaryScore += Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1637|    |-			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)  + ",";
|    |1637|+			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10) + ",";
|1638|1638| 		playerStatistics.totalScore += (total + Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1639|1639| 			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)) + ",";
|1640|1640| 

binaries/data/mods/public/gui/session/session.js
| 418| »   »   colorizeHotkey("%(hotkey)s"·+·"·",·"selection.idleworker")·+
|    | [NORMAL] ESLintBear (no-useless-concat):
|    | Unexpected string concatenation of literals.

binaries/data/mods/public/gui/session/session.js
| 438| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·panelEnt.slot·!==·undefined·&&·panelEnt.slot·==·slot);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 449| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·panelEnt.slot·!==·undefined·&&·panelEnt.slot·==·slot);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 985| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·ent·==·panelEnt.ent);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1014| »   let·getPanelEntNameTooltip·=·panelEntState·=>·"[font=\"sans-bold-16\"]"·+·template.name.specific·+·"[/font]";
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEntState' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1090| »   »   button.onpress·=·(function(i)·{·return·function()·{·performGroup((Engine.HotkeyIsPressed("selection.add")·?·"add"·:·"select"),·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1091| »   »   button.ondoublepress·=·(function(i)·{·return·function()·{·performGroup("snap",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1092| »   »   button.onpressright·=·(function(i)·{·return·function()·{·performGroup("breakUp",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 849| »   »   i·==·0·||
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
| 851| »   »   g_GameAttributes.settings.PlayerData[i].AI·!=·"");
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with ''.

binaries/data/mods/public/gui/session/session.js
| 961| »   if·(direction·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
| 985| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·ent·==·panelEnt.ent);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1089| »   »   button.hidden·=·g_Groups.groups[i].getTotalCount()·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
|1090| »   »   button.onpress·=·(function(i)·{·return·function()·{·performGroup((Engine.HotkeyIsPressed("selection.add")·?·"add"·:·"select"),·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1091| »   »   button.ondoublepress·=·(function(i)·{·return·function()·{·performGroup("snap",·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1092| »   »   button.onpressright·=·(functi

http://jw:8080/job/phabricator_lint/316/ for more details.

Imarok updated this revision to Diff 2907.Jul 13 2017, 12:31 PM

Seems like an early return could make somebody really happy

Build is green

Updating workspaces.
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...

http://jw:8080/job/phabricator/1744/ for more details.

Executing section Default...
Executing section Source...
Executing section JS...

binaries/data/mods/public/simulation/components/StatusBars.js
| 169| »   if·(!cmpHealth·||·!cmpHealth.GetHitpoints()·>·0)
|    | [NORMAL] JSHintBear:
|    | Confusing use of '!'.
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allBuildableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 438| 438| g_Selection.isSelection = true;
| 439| 439| 
| 440| 440| var g_canMoveIntoFormation = {};
| 441|    |-var g_allBuildableEntities = undefined;
|    | 441|+var g_allBuildableEntities;
| 442| 442| var g_allTrainableEntities = undefined;
| 443| 443| 
| 444| 444| // Reset cached quantities
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allTrainableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 439| 439| 
| 440| 440| var g_canMoveIntoFormation = {};
| 441| 441| var g_allBuildableEntities = undefined;
| 442|    |-var g_allTrainableEntities = undefined;
|    | 442|+var g_allTrainableEntities;
| 443| 443| 
| 444| 444| // Reset cached quantities
| 445| 445| function onSelectionChange()

binaries/data/mods/public/gui/session/selection.js
|  90| »   if·(this.groups[key]·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 306| »   »   ················g_ViewedPlayer·==·-1·&&·entState.player·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 324| »   »   if·(!quiet·&&·(controlsPlayer(owner)·||·g_IsObserver·||·owner·==·0))
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 441| var·g_allBuildableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allBuildableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection.js
| 442| var·g_allTrainableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allTrainableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection_details.js
| 395| »   »   let·setCaptureBarPart·=·function(playerID,·startSize)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'playerID' is already declared in the upper scope.

binaries/data/mods/public/gui/session/selection_details.js
| 360| »   »   »   capturePoints·=·entState.capturePoints.map((v,·i)·=>·v·+·capturePoints[i]);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/selection_details.js
| 432| »   »   »   »   res·=>·totalCarrying[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 441| »   »   »   »   res·=>·totalLoot[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 468| »   if·(entStates.length·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '+'.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|1634|1634| 
|1635|1635| 		playerStatistics.economyScore += total + ",";
|1636|1636| 		playerStatistics.militaryScore += Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1637|    |-			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)  + ",";
|    |1637|+			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10) + ",";
|1638|1638| 		playerStatistics.totalScore += (total + Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1639|1639| 			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)) + ",";
|1640|1640| 

binaries/data/mods/public/gui/session/session.js
| 418| »   »   colorizeHotkey("%(hotkey)s"·+·"·",·"selection.idleworker")·+
|    | [NORMAL] ESLintBear (no-useless-concat):
|    | Unexpected string concatenation of literals.

binaries/data/mods/public/gui/session/session.js
| 438| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·panelEnt.slot·!==·undefined·&&·panelEnt.slot·==·slot);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 449| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·panelEnt.slot·!==·undefined·&&·panelEnt.slot·==·slot);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 985| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·ent·==·panelEnt.ent);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1014| »   let·getPanelEntNameTooltip·=·panelEntState·=>·"[font=\"sans-bold-16\"]"·+·template.name.specific·+·"[/font]";
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEntState' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1090| »   »   button.onpress·=·(function(i)·{·return·function()·{·performGroup((Engine.HotkeyIsPressed("selection.add")·?·"add"·:·"select"),·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1091| »   »   button.ondoublepress·=·(function(i)·{·return·function()·{·performGroup("snap",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1092| »   »   button.onpressright·=·(function(i)·{·return·function()·{·performGroup("breakUp",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 849| »   »   i·==·0·||
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
| 851| »   »   g_GameAttributes.settings.PlayerData[i].AI·!=·"");
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with ''.

binaries/data/mods/public/gui/session/session.js
| 961| »   if·(direction·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
| 985| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·ent·==·panelEnt.ent);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1089| »   »   button.hidden·=·g_Groups.groups[i].getTotalCount()·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
|1090| »   »   button.onpress·=·(function(i)·{·return·function()·{·performGroup((Engine.HotkeyIsPressed("selection.add")·?·"add"·:·"select"),·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1091| »   »   button.ondoublepress·=·(function(i)·{·return·function()·{·performGroup("snap",·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1092| »   »   button.onpressright·=·(functi

http://jw:8080/job/phabricator_lint/317/ for more details.

Build is green

Updating workspaces.
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...

http://jw:8080/job/phabricator/1745/ for more details.

Executing section Default...
Executing section Source...
Executing section JS...

binaries/data/mods/public/simulation/components/StatusBars.js
| 169| »   if·(!cmpHealth·||·!cmpHealth.GetHitpoints()·>·0)
|    | [NORMAL] JSHintBear:
|    | Confusing use of '!'.
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allBuildableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 439| 439| g_Selection.isSelection = true;
| 440| 440| 
| 441| 441| var g_canMoveIntoFormation = {};
| 442|    |-var g_allBuildableEntities = undefined;
|    | 442|+var g_allBuildableEntities;
| 443| 443| var g_allTrainableEntities = undefined;
| 444| 444| 
| 445| 445| // Reset cached quantities
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allTrainableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 440| 440| 
| 441| 441| var g_canMoveIntoFormation = {};
| 442| 442| var g_allBuildableEntities = undefined;
| 443|    |-var g_allTrainableEntities = undefined;
|    | 443|+var g_allTrainableEntities;
| 444| 444| 
| 445| 445| // Reset cached quantities
| 446| 446| function onSelectionChange()

binaries/data/mods/public/gui/session/selection.js
|  91| »   if·(this.groups[key]·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 307| »   »   ················g_ViewedPlayer·==·-1·&&·entState.player·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 325| »   »   if·(!quiet·&&·(controlsPlayer(owner)·||·g_IsObserver·||·owner·==·0))
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 442| var·g_allBuildableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allBuildableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection.js
| 443| var·g_allTrainableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allTrainableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection_details.js
| 395| »   »   let·setCaptureBarPart·=·function(playerID,·startSize)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'playerID' is already declared in the upper scope.

binaries/data/mods/public/gui/session/selection_details.js
| 360| »   »   »   capturePoints·=·entState.capturePoints.map((v,·i)·=>·v·+·capturePoints[i]);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/selection_details.js
| 432| »   »   »   »   res·=>·totalCarrying[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 441| »   »   »   »   res·=>·totalLoot[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 468| »   if·(entStates.length·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '+'.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|1634|1634| 
|1635|1635| 		playerStatistics.economyScore += total + ",";
|1636|1636| 		playerStatistics.militaryScore += Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1637|    |-			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)  + ",";
|    |1637|+			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10) + ",";
|1638|1638| 		playerStatistics.totalScore += (total + Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1639|1639| 			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)) + ",";
|1640|1640| 

binaries/data/mods/public/gui/session/session.js
| 418| »   »   colorizeHotkey("%(hotkey)s"·+·"·",·"selection.idleworker")·+
|    | [NORMAL] ESLintBear (no-useless-concat):
|    | Unexpected string concatenation of literals.

binaries/data/mods/public/gui/session/session.js
| 438| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·panelEnt.slot·!==·undefined·&&·panelEnt.slot·==·slot);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 449| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·panelEnt.slot·!==·undefined·&&·panelEnt.slot·==·slot);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 985| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·ent·==·panelEnt.ent);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1014| »   let·getPanelEntNameTooltip·=·panelEntState·=>·"[font=\"sans-bold-16\"]"·+·template.name.specific·+·"[/font]";
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEntState' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1090| »   »   button.onpress·=·(function(i)·{·return·function()·{·performGroup((Engine.HotkeyIsPressed("selection.add")·?·"add"·:·"select"),·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1091| »   »   button.ondoublepress·=·(function(i)·{·return·function()·{·performGroup("snap",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1092| »   »   button.onpressright·=·(function(i)·{·return·function()·{·performGroup("breakUp",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 849| »   »   i·==·0·||
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
| 851| »   »   g_GameAttributes.settings.PlayerData[i].AI·!=·"");
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with ''.

binaries/data/mods/public/gui/session/session.js
| 961| »   if·(direction·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
| 985| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·ent·==·panelEnt.ent);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1089| »   »   button.hidden·=·g_Groups.groups[i].getTotalCount()·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
|1090| »   »   button.onpress·=·(function(i)·{·return·function()·{·performGroup((Engine.HotkeyIsPressed("selection.add")·?·"add"·:·"select"),·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1091| »   »   button.ondoublepress·=·(function(i)·{·return·function()·{·performGroup("snap",·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1092| »   »   button.onpressright·=·(function(i)·{·return·function()·{·performGroup("breakUp",·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1097| »   »   »   let·icon·=·GetTemplateData(GetEntityState(g_Groups.groups[i].getEntsGrouped().reduce((pre,·cur)·=>·{
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1151| »   »   if·(player·!=·0·&&
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
|1246| »   »   button.onpress·=·(function(e)·{·return·function()·{·selectAndMoveTo(e);·};·})(researchStarted[tech].researcher);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1444| »   »   if·(+playerID·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.
|    | [NORMAL] ESLintBear (no-else-return):
|    | Unnecessary 'else' after 'return'.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/simulation/components/GuiInterface.js
| 209| 209| {
| 210| 210| 	if (this.miragedEntities[player])
| 211| 211| 		return this.renamedEntities.concat(this.miragedEntities[player]);
| 212|    |-	else
| 213|    |-		return this.renamedEntities;
|    | 212|+	return this.renamedEntities;
| 214| 213| };
| 215| 214| 
| 216| 215| GuiInterface.prototype.ClearRenamedEntities = function()
|    | [NORMAL] ESLintBear (no-else-return):
|    | Unnecessary 'else' after 'return'.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/simulation/components/GuiInterface.js
|1218|1218| 
|1219|1219| 		return false;
|1220|1220| 	}
|1221|    |-	else
|1222|    |-	{
|    |1221|+	
|1223|1222| 		// Move all existing cached entities outside of the world and reset their use count
|1224|1223| 		for (let tpl in this.placementWallEntities)
|1225|1224| 		{
|1253|1252| 				}
|1254|1253| 			}
|1255|1254| 		}
|1256|    |-	}
|    |1255|+	
|1257|1256| 
|1258|1257| 	// prevent division by zero errors further on if the start and end positions are the same
|1259|1258| 	if (end.pos && (start.pos.x === end.pos.x && start.pos.z === end.pos.z))
|    | [NORMAL] ESLintBear (no-else-return):
|    | Unnecessary 'else' after 'return'.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/simulation/components/GuiInterface.js
|2019|2019| {
|2020|2020| 	if (exposedFunctions[name])
|2021|2021| 		return this[name](player, args);
|2022|    |-	else
|2023|    |-		throw new Error("Invalid GuiInterface Call name \""+name+"\"");
|    |2022|+	throw new Error("Invalid GuiInterface Call name \""+name+"\"");
|2024|2023| };
|2025|2024| 
|2026|2025| Engine.RegisterSystemComponentType(IID_GuiInterface, "GuiInterface", GuiInterface);

binaries/data/mods/public/simulation/components/GuiInterface.js
| 655| »   for·(let·name·of·auraNames)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'name' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/GuiInterface.js
| 655| »   for·(let·name·of·auraNames)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'name' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/GuiInterface.js
| 756| »   if·(notification.players·==·undefined)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with 'undefined'.

binaries/data/mods/public/simulation/components/GuiInterface.js
|1024| »   »   »   »   if·(cmd.queued·==·true)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with 'true'.

binaries/data/mods/public/simulation/components/GuiInterface.js
|1076| »   »   if·(cmd.template·==·"")
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with ''.

binaries/data/mods/public/simulation/components/GuiInterface.js
|1497| »   »   »   »   if·(terrainGroundPrev·!=·null·||·terrainGroundNext·!=·null)
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with 'null'.

binaries/data/mods/public/simulation/components/GuiInterface.js
|1497| »   »   »   »   if·(terrainGroundPrev·!=·null·||·terrainGroundNext·!=·null)
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with 'null'.

binaries/data/mods/public/simulation/components/GuiInterface.js
|1619| »   if·(numRequiredPieces·>·0·&&·result.pieces.length·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/simulation/components/GuiInterface.js
|1689| »   »   if·(minDistEntitySnapData·!=·null)
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with 'null'.

binaries/data/mods/public/simulation/components/GuiInterface.js
|1741| »   »   if(bucket·==·0·&&·data.prevUnit·&&·entity·<=·data.prevUnit)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/simulation/components/GuiInterface.js
|1749| »   »   if·(data.limit·&&·bucket·==·0·&&·idleUnits[0].length·==·data.limit)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.
Executing section XML GUI...
Executing section Python...
Executing section Perl...

http://jw:8080/job/phabricator_lint/318/ for more details.

Good stuff. Will test after the release.
Should test whether it works correctly after deserialization (probably does).
(We could also abstract the png directory by using a globalscripts file, but that should rather stay a library than containing configuration.)

binaries/data/mods/public/gui/options/options.json
182 ↗(On Diff #2907)

Probably the first preposition (above) in the config names.

Status Bars not used as a common noun in the other place:

session.showstatusbars = Tab ; Toggle display of status bars

binaries/data/mods/public/simulation/components/StatusBars.js
285 ↗(On Diff #2907)

can be inlined

Imarok updated this revision to Diff 2924.Jul 17 2017, 7:35 PM
Imarok marked 2 inline comments as done.

Don't use status bar as a common noun. inline icon.

Build is green

Updating workspaces.
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (306 tests)..................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...

http://jw:8080/job/phabricator/1751/ for more details.

Executing section Default...
Executing section Source...
Executing section JS...

binaries/data/mods/public/simulation/components/StatusBars.js
| 169| »   if·(!cmpHealth·||·!cmpHealth.GetHitpoints()·>·0)
|    | [NORMAL] JSHintBear:
|    | Confusing use of '!'.
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allBuildableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 439| 439| g_Selection.isSelection = true;
| 440| 440| 
| 441| 441| var g_canMoveIntoFormation = {};
| 442|    |-var g_allBuildableEntities = undefined;
|    | 442|+var g_allBuildableEntities;
| 443| 443| var g_allTrainableEntities = undefined;
| 444| 444| 
| 445| 445| // Reset cached quantities
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allTrainableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 440| 440| 
| 441| 441| var g_canMoveIntoFormation = {};
| 442| 442| var g_allBuildableEntities = undefined;
| 443|    |-var g_allTrainableEntities = undefined;
|    | 443|+var g_allTrainableEntities;
| 444| 444| 
| 445| 445| // Reset cached quantities
| 446| 446| function onSelectionChange()

binaries/data/mods/public/gui/session/selection.js
|  91| »   if·(this.groups[key]·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 307| »   »   ················g_ViewedPlayer·==·-1·&&·entState.player·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 325| »   »   if·(!quiet·&&·(controlsPlayer(owner)·||·g_IsObserver·||·owner·==·0))
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 442| var·g_allBuildableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allBuildableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection.js
| 443| var·g_allTrainableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allTrainableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection_details.js
| 395| »   »   let·setCaptureBarPart·=·function(playerID,·startSize)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'playerID' is already declared in the upper scope.

binaries/data/mods/public/gui/session/selection_details.js
| 360| »   »   »   capturePoints·=·entState.capturePoints.map((v,·i)·=>·v·+·capturePoints[i]);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/selection_details.js
| 432| »   »   »   »   res·=>·totalCarrying[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 441| »   »   »   »   res·=>·totalLoot[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 468| »   if·(entStates.length·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '+'.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|1634|1634| 
|1635|1635| 		playerStatistics.economyScore += total + ",";
|1636|1636| 		playerStatistics.militaryScore += Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1637|    |-			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)  + ",";
|    |1637|+			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10) + ",";
|1638|1638| 		playerStatistics.totalScore += (total + Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1639|1639| 			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)) + ",";
|1640|1640| 

binaries/data/mods/public/gui/session/session.js
| 418| »   »   colorizeHotkey("%(hotkey)s"·+·"·",·"selection.idleworker")·+
|    | [NORMAL] ESLintBear (no-useless-concat):
|    | Unexpected string concatenation of literals.

binaries/data/mods/public/gui/session/session.js
| 438| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·panelEnt.slot·!==·undefined·&&·panelEnt.slot·==·slot);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 449| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·panelEnt.slot·!==·undefined·&&·panelEnt.slot·==·slot);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 985| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·ent·==·panelEnt.ent);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEnt' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1014| »   let·getPanelEntNameTooltip·=·panelEntState·=>·"[font=\"sans-bold-16\"]"·+·template.name.specific·+·"[/font]";
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'panelEntState' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1090| »   »   button.onpress·=·(function(i)·{·return·function()·{·performGroup((Engine.HotkeyIsPressed("selection.add")·?·"add"·:·"select"),·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1091| »   »   button.ondoublepress·=·(function(i)·{·return·function()·{·performGroup("snap",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
|1092| »   »   button.onpressright·=·(function(i)·{·return·function()·{·performGroup("breakUp",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 849| »   »   i·==·0·||
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
| 851| »   »   g_GameAttributes.settings.PlayerData[i].AI·!=·"");
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with ''.

binaries/data/mods/public/gui/session/session.js
| 961| »   if·(direction·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
| 985| »   »   let·panelEnt·=·g_PanelEntities.find(panelEnt·=>·ent·==·panelEnt.ent);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1089| »   »   button.hidden·=·g_Groups.groups[i].getTotalCount()·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/session.js
|1090| »   »   button.onpress·=·(function(i)·{·return·function()·{·performGroup((Engine.HotkeyIsPressed("selection.add")·?·"add"·:·"select"),·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1091| »   »   button.ondoublepress·=·(function(i)·{·return·function()·{·performGroup("snap",·i);·};·})(i);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/session.js
|1092| »   »   button.onpressright·=·(functi

http://jw:8080/job/phabricator_lint/321/ for more details.

elexis added inline comments.Jul 18 2017, 11:39 AM
binaries/data/mods/public/gui/options/options.json
182 ↗(On Diff #2907)

(I meant proper noun or added a wrong negation. The updated patch did what I meant))

Build is green

Updating workspaces...
Updating bundled third-party dependencies...


SpiderMonkey is already up to date


make: Entering directory '/mnt/data/jenkins-phabricator/workspace/phabricator/build/premake/premake4/build/gmake.unix'
==== Building Premake4 (release) ====
make: Leaving directory '/mnt/data/jenkins-phabricator/workspace/phabricator/build/premake/premake4/build/gmake.unix'

Premake args:  --with-system-nvtt --without-miniupnpc --collada --atlas
Building configurations...
Running action 'gmake'...
Generating ../workspaces/gcc/Makefile...
Generating ../workspaces/gcc/pyrogenesis.make...
Generating ../workspaces/gcc/network.make...
Generating ../workspaces/gcc/tinygettext.make...
Generating ../workspaces/gcc/lobby.make...
Generating ../workspaces/gcc/glooxwrapper.make...
Generating ../workspaces/gcc/simulation2.make...
Generating ../workspaces/gcc/scriptinterface.make...
Generating ../workspaces/gcc/engine.make...
Generating ../workspaces/gcc/graphics.make...
Generating ../workspaces/gcc/atlas.make...
Generating ../workspaces/gcc/gui.make...
Generating ../workspaces/gcc/lowlevel.make...
Generating ../workspaces/gcc/mongoose.make...
Generating ../workspaces/gcc/mocks_real.make...
Generating ../workspaces/gcc/mocks_test.make...
Generating ../workspaces/gcc/AtlasObject.make...
Generating ../workspaces/gcc/AtlasUI.make...
Generating ../workspaces/gcc/ActorEditor.make...
Generating ../workspaces/gcc/Collada.make...
Generating ../workspaces/gcc/test.make...
Done.
Building configurations...
Running action 'codeblocks'...
Generating ../workspaces/codeblocks/pyrogenesis.workspace...
Generating ../workspaces/codeblocks/pyrogenesis.cbp...
Generating ../workspaces/codeblocks/network.cbp...
Generating ../workspaces/codeblocks/tinygettext.cbp...
Generating ../workspaces/codeblocks/lobby.cbp...
Generating ../workspaces/codeblocks/glooxwrapper.cbp...
Generating ../workspaces/codeblocks/simulation2.cbp...
Generating ../workspaces/codeblocks/scriptinterface.cbp...
Generating ../workspaces/codeblocks/engine.cbp...
Generating ../workspaces/codeblocks/graphics.cbp...
Generating ../workspaces/codeblocks/atlas.cbp...
Generating ../workspaces/codeblocks/gui.cbp...
Generating ../workspaces/codeblocks/lowlevel.cbp...
Generating ../workspaces/codeblocks/mongoose.cbp...
Generating ../workspaces/codeblocks/mocks_real.cbp...
Generating ../workspaces/codeblocks/mocks_test.cbp...
Generating ../workspaces/codeblocks/AtlasObject.cbp...
Generating ../workspaces/codeblocks/AtlasUI.cbp...
Generating ../workspaces/codeblocks/ActorEditor.cbp...
Generating ../workspaces/codeblocks/Collada.cbp...
Generating ../workspaces/codeblocks/test.cbp...
Done.
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (307 tests)...................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (307 tests)...................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...

http://jenkins-master:8080/job/phabricator/2089/ for more details.

Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allBuildableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 439| 439| g_Selection.isSelection = true;
| 440| 440| 
| 441| 441| var g_canMoveIntoFormation = {};
| 442|    |-var g_allBuildableEntities = undefined;
|    | 442|+var g_allBuildableEntities;
| 443| 443| var g_allTrainableEntities = undefined;
| 444| 444| 
| 445| 445| // Reset cached quantities
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'g_allTrainableEntities' to undefined.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/selection.js
| 440| 440| 
| 441| 441| var g_canMoveIntoFormation = {};
| 442| 442| var g_allBuildableEntities = undefined;
| 443|    |-var g_allTrainableEntities = undefined;
|    | 443|+var g_allTrainableEntities;
| 444| 444| 
| 445| 445| // Reset cached quantities
| 446| 446| function onSelectionChange()

binaries/data/mods/public/gui/session/selection.js
|  91| »   if·(this.groups[key]·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 307| »   »   ················g_ViewedPlayer·==·-1·&&·entState.player·==·0;
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 325| »   »   if·(!quiet·&&·(controlsPlayer(owner)·||·g_IsObserver·||·owner·==·0))
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.

binaries/data/mods/public/gui/session/selection.js
| 442| var·g_allBuildableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allBuildableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection.js
| 443| var·g_allTrainableEntities·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'g_allTrainableEntities' to 'undefined'.

binaries/data/mods/public/gui/session/selection_details.js
| 398| »   »   let·setCaptureBarPart·=·function(playerID,·startSize)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'playerID' is already declared in the upper scope.

binaries/data/mods/public/gui/session/selection_details.js
| 363| »   »   »   capturePoints·=·entState.capturePoints.map((v,·i)·=>·v·+·capturePoints[i]);
|    | [NORMAL] JSHintBear:
|    | Don't make functions within a loop.

binaries/data/mods/public/gui/session/selection_details.js
| 435| »   »   »   »   res·=>·totalCarrying[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 444| »   »   »   »   res·=>·totalLoot[res]·!=·0).map(
|    | [NORMAL] JSHintBear:
|    | Use '!==' to compare with '0'.

binaries/data/mods/public/gui/session/selection_details.js
| 471| »   if·(entStates.length·==·0)
|    | [NORMAL] JSHintBear:
|    | Use '===' to compare with '0'.
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '+'.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/session.js
|1628|1628| 
|1629|1629| 		playerStatistics.economyScore += total + ",";
|1630|1630| 		playerStatistics.militaryScore += Math.round((player.sequences.enemyUnitsKilledValue[maxIndex] +
|1631|    |-			player.sequences.enemyBuildingsDestroyedValue[maxIndex]) / 10)  + ",";
|    |1631|+			player.sequences.enemyBuildingsDestroyedValue[maxInde

http://jenkins-master:8080/job/phabricator_lint/562/ for more details.

temple added a subscriber: temple.Oct 2 2017, 6:47 PM

The aura icons are 128x128, so maybe someone could scale the 16x16 rank icons to match? They might look crisper that way.

In D717#36949, @temple wrote:

The aura icons are 128x128, so maybe someone could scale the 16x16 rank icons to match? They might look crisper that way.

@Pureon @Stan ?

temple added a comment.Oct 6 2017, 2:45 AM

I did make some of my own, just to test, and I didn't like it. In this screenshot some of them are light on the left or right side and dark on the other, and that switched as they moved giving a shimmering effect. So maybe lower resolution is better here? (The bars are 8px tall.) Or maybe my icons were bad. I don't know. I'll leave it to the professionals to sort out.

Imarok added a comment.Oct 9 2017, 2:38 PM

Anyway, icons can be changed also after committing, so this doesn't holds the patch back.

bb added a subscriber: bb.Dec 26 2017, 4:40 PM
bb added inline comments.
binaries/data/mods/public/gui/session/selection.js
17–23 ↗(On Diff #3814)
if (foo)
  doFoo()

as it is done in the context too

binaries/data/mods/public/gui/session/selection_details.js
87 ↗(On Diff #3814)

More icons have been added, so maybe we need to keep that ugly function...
(maybe store the spritename in the identity component?)

binaries/data/mods/public/simulation/components/StatusBars.js
29 ↗(On Diff #3814)

trailing comma

30 ↗(On Diff #3814)

indentation

287–289 ↗(On Diff #3814)

imo no need to split these over several lines, but other people might think differently

Imarok marked 15 inline comments as done.Dec 28 2017, 12:48 PM
Imarok added inline comments.
binaries/data/mods/public/gui/session/selection.js
17–23 ↗(On Diff #3814)

Did this originally, but @elexis wanted an early return and I don't care.
So please come to an agreement guys ;)

binaries/data/mods/public/gui/session/selection_details.js
87 ↗(On Diff #3814)

More icons have been added, so maybe we need to keep that ugly function...

As we don't use them atm, I think I can leave it unchanged.

(maybe store the spritename in the identity component?)

Could be a good idea when using new icons. (Would also improve modability and allow different icons for different units)

binaries/data/mods/public/simulation/components/StatusBars.js
287–289 ↗(On Diff #3814)

I think it's good as is.

Imarok updated this revision to Diff 4982.Dec 28 2017, 12:53 PM
Imarok marked 2 inline comments as done.

Rebase and bb

Owners added a subscriber: Restricted Owners Package.Dec 28 2017, 12:53 PM

Successful build - Chance fights ever on the side of the prudent.

Updating workspaces...
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (308 tests)....................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (308 tests)....................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...
Executing section Default...
Executing section Source...
Executing section JS...
bb added inline comments.Jan 1 2018, 5:25 PM
binaries/data/mods/public/gui/session/selection_details.js
87 ↗(On Diff #3814)

So who not do it like that? saves us renaming the icon files (again)

binaries/data/mods/public/simulation/components/StatusBars.js
291 ↗(On Diff #4982)

no need for a new line

Imarok added inline comments.Jan 8 2018, 7:42 PM
binaries/data/mods/public/gui/session/selection_details.js
87 ↗(On Diff #3814)

I thought this shouldn't be inside this patch.
Also we don't have inheritance for ranks, so we'd need to define this in every template... (there might be a smarter solution)

binaries/data/mods/public/simulation/components/StatusBars.js
291 ↗(On Diff #4982)

ok

Imarok updated this revision to Diff 5174.Jan 8 2018, 7:44 PM

No newline in L291 StatusBars.js

Vulcan added a comment.Jan 8 2018, 8:05 PM
Executing section Default...
Executing section Source...
Executing section JS...
Vulcan added a comment.Jan 8 2018, 9:05 PM

Successful build - Chance fights ever on the side of the prudent.

Updating workspaces...
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (308 tests)....................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (308 tests)....................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...
bb added a comment.Jan 10 2018, 12:16 AM

phab: press tab => debug error!!!! (I guess its good at your end...)

binaries/data/mods/public/art/textures/ui/session/icons/rank1.png
1 ↗(On Diff #5174)

(when moving files, use svn move instead of deleting and adding)

binaries/data/mods/public/gui/session/selection_details.js
87 ↗(On Diff #3814)

Indeed adding to the templates doesn't look like a good solution, however renaming the files (again), to something which is inconsistent doens't look appealing either, so perhaps keeping the ugly function below is the cleanest solution for now

binaries/data/mods/public/gui/session/session.js
1289 ↗(On Diff #3814)

looks like we have to get it here, and not in guiinterface

binaries/data/mods/public/simulation/components/GuiInterface.js
913 ↗(On Diff #5174)

potentially all things could become option settings, so perhaps make it an object?

Imarok added inline comments.Jan 10 2018, 12:26 AM
binaries/data/mods/public/art/textures/ui/session/icons/rank1.png
1 ↗(On Diff #5174)

I did that, because moving crashed. But next time I upload, I'll try moving again.

binaries/data/mods/public/gui/session/selection_details.js
87 ↗(On Diff #3814)

To me it looks really clean, to rename the files to their corresponding rank.

binaries/data/mods/public/gui/session/session.js
1289 ↗(On Diff #3814)

What do you mean?

binaries/data/mods/public/simulation/components/GuiInterface.js
913 ↗(On Diff #5174)

What should also become an option setting?
you mean like only showing aura icons or healthbars?

bb added a comment.Jan 10 2018, 12:59 AM

The icons in the selctionpanels are aligned on the top, since they are in an upper corner, thus an extra rank means the icon extends more to the bottom, however now we want stack them on the bottom, thus the basic and advanced rank get empty space underneath, which looks ugly. The best solution would be to let the iconsize depend on the actual picture, but that seems out of scope.

binaries/data/mods/public/gui/options/options.json
210 ↗(On Diff #5174)

perhaps we can set a function here to update the bars immediately
currently it simply gets removed which on any change

binaries/data/mods/public/gui/session/selection_details.js
87 ↗(On Diff #3814)

wth, I was looking at the session/icon/ranks directory, nvm renaming in the session/icon is fine

binaries/data/mods/public/gui/session/session.js
1289 ↗(On Diff #3814)

I guess we shouldn't call Engine.ConfigDB_GetValue from the sim, thus doing it here is correct

binaries/data/mods/public/simulation/components/GuiInterface.js
913 ↗(On Diff #5174)

yup, but that is out of scope ofc

Imarok added inline comments.Jan 20 2018, 11:26 AM
binaries/data/mods/public/gui/options/options.json
210 ↗(On Diff #5174)

As you won't change this option very frequently, I don't really see a need...

Imarok updated the Trac tickets for this revision.Jan 27 2018, 10:23 PM
bb accepted this revision.Jan 30 2018, 12:42 AM

Did not perform an ingame test since last comments (since phab messes up with binary files)
1 line rebase can be done when committing

binaries/data/mods/public/gui/options/options.json
210 ↗(On Diff #5174)

It is the cherry on the cake though

This revision is now accepted and ready to land.Jan 30 2018, 12:42 AM

can tell ingame
nice

This revision was automatically updated to reflect the committed changes.