Page MenuHomeWildfire Games

Make options page agnostic of session page, RangeOverlayManager GUI class
ClosedPublic

Authored by elexis on Oct 25 2019, 1:23 PM.

Details

Summary

This diff fixes a problem with the options page introduced in rP21527/D1291, refs #4747.
The diff made it so that the diplomacy colors are only updated when the diplomacy color option changed when closing the options dialog,
instead of doing that every turn.

The implementation was wrong however and has dealt various damage later on by multiple people changing the session code without knowing that the
options.json file hardcodes global session function names.

The second big problem with this implementation is that it prevents the use of anonymous or functions stored in objects and class instances, refs #5387.
The same problem was addressed for PopGUIPage in D1684/rP22676.

The session code being located in options.json problem is solved in this patch by inverting the callback mechanism and
just returning the names of the config changes that were changed by the options page and letting the session decide
for itself what it makes from that.
This is achieved by using the simple event subsciption system from D2378/rP23076.

Aside from fixing old defects, it also empowers and encourages session code authors to implement more conditional reloads / reactions to the options page.

For example the FPS counter is rebuilt once per frame, and there are up to 4 items in that counter (FPS + realtime + ingame time + ceasefire time).
If those were to be split into four classes, there would be four function calls, but less function calls if the counters are disabled in the options page.
et cetera.

Finally the diff implements the RangeOverlayManager class on the GUI side (since otherwise the options page reaction code would be ugly),
continuing the JS session page GUI rewrite in the course of #5387.

Notice the reset to default mechanism falsely didn't trigger updates, which is fixed here too.

Another present defect fixed in this revision proposal is that one doesn't have to reselect the entities anymore after closing the options page dialog anymore to have the changes take effect.

Test Plan

Firstly notice that the performance is about irrelevant within this diff, because all code triggered is only called upon closing the page,
and because all code triggered takes some milliseconds to complete.

To demonstrate completeness of the diff, search the json file for the callback string and see that all of them were removed and superseded.

To demonstrate the correctness of the diff in a blackbox test:

  • Toggle the diplomacy color minimap button
  • Change the batch train size in the options page and queue batch trains
  • Use the hotkeys and options page to toggle the different auras
  • Add warn to the update functions and see that they are only called if an according hotkey had been pressed or an according checkbox in the options page toggled
  • Compare the previous rangeoverlaymanager code to the new one and notice it does the same
  • Train and select a healer and use the hotkey
  • Use building preview for towers and use the hotkey
  • Notice the options page and hotkey changes modify the same config value at the same time and are in sync
  • Notice that a Set is nicer than array for insertion and existence lookup, but doesn't allow for array functions such as changes.some(change => ...) without array creation which in turn is discouraged since it costs some cpu cycles without being necessary
  • Notice the word "callback" is gone from options.js
  • Notice there is a hotkey setter but no reaction using registerHotkeyChangHandler. Thats because the SetGlobalHotkey function needs rework to support more types and because meh not now, it's a placeholder event currently anyhow.
  • Notice the RangeOverlayManager is complete, i.e. the word rangeoverlay doesn't appear anymore in session/ elsewhere.
  • Notice how RangeOverlayManager.prototype.Types is cleaner and more extensible than the previous string construction.
  • Notice that the RangeOverlayManager types are identical in behavior, not granting a warrant to make those three individiual class, currently that it.
  • Search on irclogs, trac, Phabricator and svn repository to find evidence of suffering due to the session hardcoding in the options page.
  • Notice that the fire function should actually be deleted in the future and superseded by one that is fired from the config code, but that all the rest of the code will remain the same, so the workaround part (if considered such at all) is limited to the fire function, but the consumers of the event will remain the same (which is the more significant part of the diff).

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

elexis created this revision.Oct 25 2019, 1:23 PM

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

Link to build: https://jenkins.wildfiregames.com/job/vs2015-differential/483/display/redirect

elexis edited the test plan for this revision. (Show Details)Oct 25 2019, 1:26 PM

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
| 119| 119| 			sprintf(
| 120| 120| 				option.min !== undefined && option.max !== undefined ?
| 121| 121| 					translateWithContext("option number", "Min: %(min)s, Max: %(max)s") :
| 122|    |-				option.min !== undefined && option.max === undefined ?
|    | 122|+					option.min !== undefined && option.max === undefined ?
| 123| 123| 					translateWithContext("option number", "Min: %(min)s") :
| 124| 124| 				option.min === undefined && option.max !== undefined ?
| 125| 125| 					translateWithContext("option number", "Max: %(max)s") :
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
| 120| 120| 				option.min !== undefined && option.max !== undefined ?
| 121| 121| 					translateWithContext("option number", "Min: %(min)s, Max: %(max)s") :
| 122| 122| 				option.min !== undefined && option.max === undefined ?
| 123|    |-					translateWithContext("option number", "Min: %(min)s") :
|    | 123|+						translateWithContext("option number", "Min: %(min)s") :
| 124| 124| 				option.min === undefined && option.max !== undefined ?
| 125| 125| 					translateWithContext("option number", "Max: %(max)s") :
| 126| 126| 					"",
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
| 121| 121| 					translateWithContext("option number", "Min: %(min)s, Max: %(max)s") :
| 122| 122| 				option.min !== undefined && option.max === undefined ?
| 123| 123| 					translateWithContext("option number", "Min: %(min)s") :
| 124|    |-				option.min === undefined && option.max !== undefined ?
|    | 124|+						option.min === undefined && option.max !== undefined ?
| 125| 125| 					translateWithContext("option number", "Max: %(max)s") :
| 126| 126| 					"",
| 127| 127| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 7 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
| 122| 122| 				option.min !== undefined && option.max === undefined ?
| 123| 123| 					translateWithContext("option number", "Min: %(min)s") :
| 124| 124| 				option.min === undefined && option.max !== undefined ?
| 125|    |-					translateWithContext("option number", "Max: %(max)s") :
|    | 125|+							translateWithContext("option number", "Max: %(max)s") :
| 126| 126| 					"",
| 127| 127| 				{
| 128| 128| 					"min": option.min,
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 7 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/options/options.js
| 123| 123| 					translateWithContext("option number", "Min: %(min)s") :
| 124| 124| 				option.min === undefined && option.max !== undefined ?
| 125| 125| 					translateWithContext("option number", "Max: %(max)s") :
| 126|    |-					"",
|    | 126|+							"",
| 127| 127| 				{
| 128| 128| 					"min": option.min,
| 129| 129| 					"max": option.max

binaries/data/mods/public/gui/options/options.js
| 235| »   »   »   let·value·=·optionType.guiToValue(control);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'value' is already declared in the upper scope.

binaries/data/mods/public/gui/session/session.js
| 753| »   »   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
| 754| »   »   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
| 755| »   »   button.onpressright·=·(function(i)·{·return·function()·{·performGroup("breakUp",·i);·};·})(i);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.
|    | [NORMAL] ESLintBear (space-unary-ops):
|    | Unary word operator 'typeof' must be followed by whitespace.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 334| 334| 	}
| 335| 335| 
| 336| 336| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 337|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 337|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 338| 338| 	{
| 339| 339| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 340| 340| 		return false;
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 484| 484| 	mouseIsOverObject = (hoveredObject != null);
| 485| 485| 
| 486| 486| 	// Close the menu when interacting with the game world
| 487|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 488|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 487|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 488|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 489| 489| 		g_Menu.close();
| 490| 490| 
| 491| 491| 	// State-machine processing:
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 645| 645| 		// user to continue building walls.
| 646| 646| 		switch (ev.type)
| 647| 647| 		{
| 648|    |-			case "mousemotion":
|    | 648|+		case "mousemotion":
| 649| 649| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 650| 650| 
| 651| 651| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 646| 646| 		switch (ev.type)
| 647| 647| 		{
| 648| 648| 			case "mousemotion":
| 649|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 649|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 650| 650| 
| 651| 651| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 652| 652| 				// the ending point and the starting point to snap to.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 648| 648| 			case "mousemotion":
| 649| 649| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 650| 650| 
| 651|    |-				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 651|+			// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 652| 652| 				// the ending point and the starting point to snap to.
| 653| 653| 				//
| 654| 654| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 649| 649| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 650| 650| 
| 651| 651| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 652|    |-				// the ending point and the starting point to snap to.
|    | 652|+			// the ending point and the starting point to snap to.
| 653| 653| 				//
| 654| 654| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 655| 655| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 650| 650| 
| 651| 651| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 652| 652| 				// the ending point and the starting point to snap to.
| 653|    |-				//
|    | 653|+			//
| 654| 654| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 655| 655| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 656| 656| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 651| 651| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 652| 652| 				// the ending point and the starting point to snap to.
| 653| 653| 				//
| 654|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 654|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 655| 655| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 656| 656| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 657| 657| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 652| 652| 				// the ending point and the starting point to snap to.
| 653| 653| 				//
| 654| 654| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 655|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 655|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 656| 656| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 657| 657| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 658| 658| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 653| 653| 				//
| 654| 654| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 655| 655| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 656|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 656|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 657| 657| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 658| 658| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 659| 659| 				// points.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 654| 654| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 655| 655| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 656| 656| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 657|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 657|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 658| 658| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 659| 659| 				// points.
| 660| 660| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 655| 655| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 656| 656| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 657| 657| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 658|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 658|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 659| 659| 				// points.
| 660| 660| 
| 661| 661| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 656| 656| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 657| 657| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 658| 658| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 659|    |-				// points.
|    | 659|+			// points.
| 660| 660| 
| 661| 661| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 662| 662| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 658| 658| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 659| 659| 				// points.
| 660| 660| 
| 661|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 661|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 662| 662| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 663| 663| 
| 664| 664| 				if (result && result.cost)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 659| 659| 				// points.
| 660| 660| 
| 661| 661| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 662|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 662|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 663| 663| 
| 664| 664| 				if (result && result.cost)
| 665| 665| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 661| 661| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 662| 662| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 663| 663| 
| 664|    |-				if (result && result.cost)
|    | 664|+			if (result && result.cost)
| 665| 665| 				{
| 666| 666| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 667| 667| 					placementSupport.tooltipMessage = [
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 662| 662| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 663| 663| 
| 664| 664| 				if (result && result.cost)
| 665|    |-				{
|    | 665|+			{
| 666| 666| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 667| 667| 					placementSupport.tooltipMessage = [
| 668| 668| 						getEntityCostTooltip(result),
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 663| 663| 
| 664| 664| 				if (result && result.cost)
| 665| 665| 				{
| 666|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 666|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 667| 667| 					placementSupport.tooltipMessage = [
| 668| 668| 						getEntityCostTooltip(result),
| 669| 669| 						getNeededResourcesTooltip(neededResources)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 664| 664| 				if (result && result.cost)
| 665| 665| 				{
| 666| 666| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 667|    |-					placementSupport.tooltipMessage = [
|    | 667|+				placementSupport.tooltipMessage = [
| 668| 668| 						getEntityCostTooltip(result),
| 669| 669| 						getNeededResourcesTooltip(neededResources)
| 670| 670| 					].filter(tip => tip).join("\n");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 665| 665| 				{
| 666| 666| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 667| 667| 					placementSupport.tooltipMessage = [
| 668|    |-						getEntityCostTooltip(result),
|    | 668|+					getEntityCostTooltip(result),
| 669| 669| 						getNeededResourcesTooltip(neededResources)
| 670| 670| 					].filter(tip => tip).join("\n");
| 671| 671| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 666| 666| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 667| 667| 					placementSupport.tooltipMessage = [
| 668| 668| 						getEntityCostTooltip(result),
| 669|    |-						getNeededResourcesTooltip(neededResources)
|    | 669|+					getNeededResourcesTooltip(neededResources)
| 670| 670| 					].filter(tip => tip).join("\n");
| 671| 671| 				}
| 672| 672| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 667| 667| 					placementSupport.tooltipMessage = [
| 668| 668| 						getEntityCostTooltip(result),
| 669| 669| 						getNeededResourcesTooltip(neededResources)
| 670|    |-					].filter(tip => tip).join("\n");
|    | 670|+				].filter(tip => tip).join("\n");
| 671| 671| 				}
| 672| 672| 
| 673| 673| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 668| 668| 						getEntityCostTooltip(result),
| 669| 669| 						getNeededResourcesTooltip(neededResources)
| 670| 670| 					].filter(tip => tip).join("\n");
| 671|    |-				}
|    | 671|+			}
| 672| 672| 
| 673| 673| 				break;
| 674| 674| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 670| 670| 					].filter(tip => tip).join("\n");
| 671| 671| 				}
| 672| 672| 
| 673|    |-				break;
|    | 673|+			break;
| 674| 674| 
| 675| 675| 			case "mousebuttondown":
| 676| 676| 				if (ev.button == SDL_BUTTON_LEFT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 672| 672| 
| 673| 673| 				break;
| 674| 674| 
| 675|    |-			case "mousebuttondown":
|    | 675|+		case "mousebuttondown":
| 676| 676| 				if (ev.button == SDL_BUTTON_LEFT)
| 677| 677| 				{
| 678| 678| 					var queued = Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 673| 673| 				break;
| 674| 674| 
| 675| 675| 			case "mousebuttondown":
| 676|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 676|+			if (ev.button == SDL_BUTTON_LEFT)
| 677| 677| 				{
| 678| 678| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 679| 679| 					if (tryPlaceWall(queued))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 674| 674| 
| 675| 675| 			case "mousebuttondown":
| 676| 676| 				if (ev.button == SDL_BUTTON_LEFT)
| 677|    |-				{
|    | 677|+			{
| 678| 678| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 679| 679| 					if (tryPlaceWall(queued))
| 680| 680| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 675| 675| 			case "mousebuttondown":
| 676| 676| 				if (ev.button == SDL_BUTTON_LEFT)
| 677| 677| 				{
| 678|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 678|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 679| 679| 					if (tryPlaceWall(queued))
| 680| 680| 					{
| 681| 681| 						if (queued)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 676| 676| 				if (ev.button == SDL_BUTTON_LEFT)
| 677| 677| 				{
| 678| 678| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 679|    |-					if (tryPlaceWall(queued))
|    | 679|+				if (tryPlaceWall(queued))
| 680| 680| 					{
| 681| 681| 						if (queued)
| 682| 682| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 				{
| 678| 678| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 679| 679| 					if (tryPlaceWall(queued))
| 680|    |-					{
|    | 680|+				{
| 681| 681| 						if (queued)
| 682| 682| 						{
| 683| 683| 							// continue building, just set a new starting position where we left off
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 678| 678| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 679| 679| 					if (tryPlaceWall(queued))
| 680| 680| 					{
| 681|    |-						if (queued)
|    | 681|+					if (queued)
| 682| 682| 						{
| 683| 683| 							// continue building, just set a new starting position where we left off
| 684| 684| 							placementSupport.position = placementSupport.wallEndPosition;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 679| 679| 					if (tryPlaceWall(queued))
| 680| 680| 					{
| 681| 681| 						if (queued)
| 682|    |-						{
|    | 682|+					{
| 683| 683| 							// continue building, just set a new starting position where we left off
| 684| 684| 							placementSupport.position = placementSupport.wallEndPosition;
| 685| 685| 							placementSupport.wallEndPosition = undefined;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 680| 680| 					{
| 681| 681| 						if (queued)
| 682| 682| 						{
| 683|    |-							// continue building, just set a new starting position where we left off
|    | 683|+						// continue building, just set a new starting position where we left off
| 684| 684| 							placementSupport.position = placementSupport.wallEndPosition;
| 685| 685| 							placementSupport.wallEndPosition = undefined;
| 686| 686| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 681| 681| 						if (queued)
| 682| 682| 						{
| 683| 683| 							// continue building, just set a new starting position where we left off
| 684|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 684|+						placementSupport.position = placementSupport.wallEndPosition;
| 685| 685| 							placementSupport.wallEndPosition = undefined;
| 686| 686| 
| 687| 687| 							inputState = INPUT_BUILDING_WALL_CLICK;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 682| 682| 						{
| 683| 683| 							// continue building, just set a new starting position where we left off
| 684| 684| 							placementSupport.position = placementSupport.wallEndPosition;
| 685|    |-							placementSupport.wallEndPosition = undefined;
|    | 685|+						placementSupport.wallEndPosition = undefined;
| 686| 686| 
| 687| 687| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 688| 688| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 684| 684| 							placementSupport.position = placementSupport.wallEndPosition;
| 685| 685| 							placementSupport.wallEndPosition = undefined;
| 686| 686| 
| 687|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 687|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 688| 688| 						}
| 689| 689| 						else
| 690| 690| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 685| 685| 							placementSupport.wallEndPosition = undefined;
| 686| 686| 
| 687| 687| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 688|    |-						}
|    | 688|+					}
| 689| 689| 						else
| 690| 690| 						{
| 691| 691| 							placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 686| 686| 
| 687| 687| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 688| 688| 						}
| 689|    |-						else
|    | 689|+					else
| 690| 690| 						{
| 691| 691| 							placementSupport.Reset();
| 692| 692| 							inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 687| 687| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 688| 688| 						}
| 689| 689| 						else
| 690|    |-						{
|    | 690|+					{
| 691| 691| 							placementSupport.Reset();
| 692| 692| 							inputState = INPUT_NORMAL;
| 693| 693| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 688| 688| 						}
| 689| 689| 						else
| 690| 690| 						{
| 691|    |-							placementSupport.Reset();
|    | 691|+						placementSupport.Reset();
| 692| 692| 							inputState = INPUT_NORMAL;
| 693| 693| 						}
| 694| 694| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 689| 689| 						else
| 690| 690| 						{
| 691| 691| 							placementSupport.Reset();
| 692|    |-							inputState = INPUT_NORMAL;
|    | 692|+						inputState = INPUT_NORMAL;
| 693| 693| 						}
| 694| 694| 					}
| 695| 695| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 690| 690| 						{
| 691| 691| 							placementSupport.Reset();
| 692| 692| 							inputState = INPUT_NORMAL;
| 693|    |-						}
|    | 693|+					}
| 694| 694| 					}
| 695| 695| 					else
| 696| 696| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 							placementSupport.Reset();
| 692| 692| 							inputState = INPUT_NORMAL;
| 693| 693| 						}
| 694|    |-					}
|    | 694|+				}
| 695| 695| 					else
| 696| 696| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 697| 697| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 692| 692| 							inputState = INPUT_NORMAL;
| 693| 693| 						}
| 694| 694| 					}
| 695|    |-					else
|    | 695|+				else
| 696| 696| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 697| 697| 
| 698| 698| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 693| 693| 						}
| 694| 694| 					}
| 695| 695| 					else
| 696|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 696|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 697| 697| 
| 698| 698| 					updateBuildingPlacementPreview();
| 699| 699| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 695| 695| 					else
| 696| 696| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 697| 697| 
| 698|    |-					updateBuildingPlacementPreview();
|    | 698|+				updateBuildingPlacementPreview();
| 699| 699| 					return true;
| 700| 700| 				}
| 701| 701| 				else if (ev.button == SDL_BUTTON_RIGHT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 696| 696| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 697| 697| 
| 698| 698| 					updateBuildingPlacementPreview();
| 699|    |-					return true;
|    | 699|+				return true;
| 700| 700| 				}
| 701| 701| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 702| 702| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 
| 698| 698| 					updateBuildingPlacementPreview();
| 699| 699| 					return true;
| 700|    |-				}
|    | 700|+			}
| 701| 701| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 702| 702| 				{
| 703| 703| 					// reset to normal input mode
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 698| 698| 					updateBuildingPlacementPreview();
| 699| 699| 					return true;
| 700| 700| 				}
| 701|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 701|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 702| 702| 				{
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 699| 699| 					return true;
| 700| 700| 				}
| 701| 701| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 702|    |-				{
|    | 702|+			{
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 700| 700| 				}
| 701| 701| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 702| 702| 				{
| 703|    |-					// reset to normal input mode
|    | 703|+				// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 701| 701| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 702| 702| 				{
| 703| 703| 					// reset to normal input mode
| 704|    |-					placementSupport.Reset();
|    | 704|+				placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 702| 702| 				{
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705|    |-					updateBuildingPlacementPreview();
|    | 705|+				updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707|    |-					inputState = INPUT_NORMAL;
|    | 707|+				inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709| 709| 				}
| 710| 710| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708|    |-					return true;
|    | 708|+				return true;
| 709| 709| 				}
| 710| 710| 				break;
| 711| 711| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709|    |-				}
|    | 709|+			}
| 710| 710| 				break;
| 711| 711| 		}
| 712| 712| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709| 709| 				}
| 710|    |-				break;
|    | 710|+			break;
| 711| 711| 		}
| 712| 712| 		break;
| 713| 713| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 846| 846| 			break;
| 847| 847| 
| 848| 848| 		case "hotkeydown":
| 849|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 849|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 850| 850| 				{
| 851| 851| 					let now = Date.now();
| 852| 852| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 847| 847| 
| 848| 848| 		case "hotkeydown":
| 849| 849| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 850|    |-				{
|    | 850|+			{
| 851| 851| 					let now = Date.now();
| 852| 852| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 853| 853| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 848| 848| 		case "hotkeydown":
| 849| 849| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 850| 850| 				{
| 851|    |-					let now = Date.now();
|    | 851|+				let now = Date.now();
| 852| 852| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 853| 853| 					{
| 854| 854| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 849| 849| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 850| 850| 				{
| 851| 851| 					let now = Date.now();
| 852|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 852|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 853| 853| 					{
| 854| 854| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 855| 855| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 850| 850| 				{
| 851| 851| 					let now = Date.now();
| 852| 852| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 853|    |-					{
|    | 853|+				{
| 854| 854| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 855| 855| 						{
| 856| 856| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 851| 851| 					let now = Date.now();
| 852| 852| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 853| 853| 					{
| 854|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 854|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 855| 855| 						{
| 856| 856| 							var sptr = ev.hotkey.split(".");
| 857| 857| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 852| 852| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 853| 853| 					{
| 854| 854| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 855|    |-						{
|    | 855|+					{
| 856| 856| 							var sptr = ev.hotkey.split(".");
| 857| 857| 							performGroup("snap", sptr[3]);
| 858| 858| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 853| 853| 					{
| 854| 854| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 855| 855| 						{
| 856|    |-							var sptr = ev.hotkey.split(".");
|    | 856|+						var sptr = ev.hotkey.split(".");
| 857| 857| 							performGroup("snap", sptr[3]);
| 858| 858| 						}
| 859| 859| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 854| 854| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 855| 855| 						{
| 856| 856| 							var sptr = ev.hotkey.split(".");
| 857|    |-							performGroup("snap", sptr[3]);
|    | 857|+						performGroup("snap", sptr[3]);
| 858| 858| 						}
| 859| 859| 					}
| 860| 860| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 855| 855| 						{
| 856| 856| 							var sptr = ev.hotkey.split(".");
| 857| 857| 							performGroup("snap", sptr[3]);
| 858|    |-						}
|    | 858|+					}
| 859| 859| 					}
| 860| 860| 					else
| 861| 861| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 856| 856| 							var sptr = ev.hotkey.split(".");
| 857| 857| 							performGroup("snap", sptr[3]);
| 858| 858| 						}
| 859|    |-					}
|    | 859|+				}
| 860| 860| 					else
| 861| 861| 					{
| 862| 862| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 857| 857| 							performGroup("snap", sptr[3]);
| 858| 858| 						}
| 859| 859| 					}
| 860|    |-					else
|    | 860|+				else
| 861| 861| 					{
| 862| 862| 						var sptr = ev.hotkey.split(".");
| 863| 863| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 858| 858| 						}
| 859| 859| 					}
| 860| 860| 					else
| 861|    |-					{
|    | 861|+				{
| 862| 862| 						var sptr = ev.hotkey.split(".");
| 863| 863| 						performGroup(sptr[2], sptr[3]);
| 864| 864| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 859| 859| 					}
| 860| 860| 					else
| 861| 861| 					{
| 862|    |-						var sptr = ev.hotkey.split(".");
|    | 862|+					var sptr = ev.hotkey.split(".");
| 863| 863| 						performGroup(sptr[2], sptr[3]);
| 864| 864| 
| 865| 865| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 860| 860| 					else
| 861| 861| 					{
| 862| 862| 						var sptr = ev.hotkey.split(".");
| 863|    |-						performGroup(sptr[2], sptr[3]);
|    | 863|+					performGroup(sptr[2], sptr[3]);
| 864| 864| 
| 865| 865| 						doublePressTimer = now;
| 866| 866| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 862| 862| 						var sptr = ev.hotkey.split(".");
| 863| 863| 						performGroup(sptr[2], sptr[3]);
| 864| 864| 
| 865|    |-						doublePressTimer = now;
|    | 865|+					doublePressTimer = now;
| 866| 866| 						prevHotkey = ev.hotkey;
| 867| 867| 					}
| 868| 868| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 863| 863| 						performGroup(sptr[2], sptr[3]);
| 864| 864| 
| 865| 865| 						doublePressTimer = now;
| 866|    |-						prevHotkey = ev.hotkey;
|    | 866|+					prevHotkey = ev.hotkey;
| 867| 867| 					}
| 868| 868| 				}
| 869| 869| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 864| 864| 
| 865| 865| 						doublePressTimer = now;
| 866| 866| 						prevHotkey = ev.hotkey;
| 867|    |-					}
|    | 867|+				}
| 868| 868| 				}
| 869| 869| 				break;
| 870| 870| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 						doublePressTimer = now;
| 866| 866| 						prevHotkey = ev.hotkey;
| 867| 867| 					}
| 868|    |-				}
|    | 868|+			}
| 869| 869| 				break;
| 870| 870| 		}
| 871| 871| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 						prevHotkey = ev.hotkey;
| 867| 867| 					}
| 868| 868| 				}
| 869|    |-				break;
|    | 869|+			break;
| 870| 870| 		}
| 871| 871| 		break;
| 872| 872| 
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1497|1497| 		g_BatchTrainingEntityAllowedCount < batchedSize * appropriateBuildings.length)
|1498|1498| 	{
|1499|1499| 		// Train as many full batches as we can
|1500|    |-		let buildingsCountToTrainFullBatch = Math.floor( g_BatchTrainingEntityAllowedCount / batchedSize);
|    |1500|+		let buildingsCountToTrainFullBatch = Math.floor(g_BatchTrainingEntityAllowedCount / batchedSize);
|1501|1501| 		Engine.PostNetworkCommand({
|1502|1502| 			"type": "train",
|1503|1503| 			"entities": appropriateBuildings.slice(0, buildingsCountToTrainFullBatch),
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1576|1576| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1577|1577| 
|1578|1578| 	// Reset the last idle unit, etc., if the selection type has changed.
|1579|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1579|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1580|1580| 		resetIdleUnit();
|1581|1581| 	lastIdleClasses = classes;
|1582|1582| 

binaries/data/mods/public/gui/session/input.js
| 229| »   var·target·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'target' to undefined.

binaries/data/mods/public/gui/session/input.js
| 243| »   var·actionInfo·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.

binaries/data/mods/public/gui/session/input.js
| 473| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 500| »   switch·(inputState)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 504| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 559| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 569| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 617| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 646| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 715| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 813| »   switch·(inputState)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 816| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 918| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1007| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1021| »   »   »   »   let·action·=·determineAction(ev.x,·ev.y);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'action' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
|1030| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1099| »   »   »   switch·(ev.hotkey)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1527| »   switch·(action)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 229| »   var·target·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'target' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 243| »   var·actionInfo·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'actionInfo' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 257| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 260| »   »   »   var·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 265| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 268| »   »   »   var·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 488| »   »   &&·(ev.button·==·SDL_BUTTON_LEFT·||·ev.button·==·SDL_BUTTON_RIGHT))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/gui/session/input.js
| 518| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 521| »   »   »   »   var·ents·=·getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0],·rect[1],·rect[2],·rect[3],·g_ViewedPlayer));
|    | [NORMAL] JSHintBear:
|    | 'ents' is already defined.

binaries/data/mods/public/gui/session/input.js
| 678| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 749| »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 862| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

binaries/data/mods/public/gui/session/input.js
| 878| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/gui/session/input.js
| 904| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'default'.

binaries/data/mods/public/gui/session/input.js
| 928| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/DiplomacyColors.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/DiplomacyColors.js
| 107| 107| 				// Players see colors depending on diplomacy
| 108| 108| 				this.displayedPlayerColors[i] =
| 109| 109| 					g_ViewedPlayer == i ? this.getDiplomacyColor("self") :
| 110|    |-					g_Players[g_ViewedPlayer].isAlly[i] ? this.getDiplomacyColor("ally") :
|    | 110|+						g_Players[g_ViewedPlayer].isAlly[i] ? this.getDiplomacyColor("ally") :
| 111| 111| 					g_Players[g_ViewedPlayer].isNeutral[i] ? this.getDiplomacyColor("neutral") :
| 112| 112| 					this.getDiplomacyColor("enemy");
| 113| 113| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 7 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/DiplomacyColors.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/DiplomacyColors.js
| 108| 108| 				this.displayedPlayerColors[i] =
| 109| 109| 					g_ViewedPlayer == i ? this.getDiplomacyColor("self") :
| 110| 110| 					g_Players[g_ViewedPlayer].isAlly[i] ? this.getDiplomacyColor("ally") :
| 111|    |-					g_Players[g_ViewedPlayer].isNeutral[i] ? this.getDiplomacyColor("neutral") :
|    | 111|+							g_Players[g_ViewedPlayer].isNeutral[i] ? this.getDiplomacyColor("neutral") :
| 112| 112| 					this.getDiplomacyColor("enemy");
| 113| 113| 
| 114| 114| 		this.displayedPlayerColors[0] = g_Players[0].color;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 8 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/DiplomacyColors.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/DiplomacyColors.js
| 109| 109| 					g_ViewedPlayer == i ? this.getDiplomacyColor("self") :
| 110| 110| 					g_Players[g_ViewedPlayer].isAlly[i] ? this.getDiplomacyColor("ally") :
| 111| 111| 					g_Players[g_ViewedPlayer].isNeutral[i] ? this.getDiplomacyColor("neutral") :
| 112|    |-					this.getDiplomacyColor("enemy");
|    | 112|+								this.getDiplomacyColor("enemy");
| 113| 113| 
| 114| 114| 		this.displayedPlayerColors[0] = g_Players[0].color;
| 115| 115| 	}

binaries/data/mods/public/gui/session/MenuButtons.js
| 118| »   »   »   data·=>
|    | [NORMAL] ESLintBear (brace-rules/brace-on-same-line):
|    | Opening curly brace does not appear on the same line as controlling statement.
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/998/display/redirect

elexis edited the summary of this revision. (Show Details)Oct 25 2019, 1:44 PM
elexis added inline comments.Oct 25 2019, 1:47 PM
binaries/data/mods/public/gui/options/options.json
425 ↗(On Diff #10199)

from rP21750 / D1459

binaries/data/mods/public/gui/session/RangeOverlayManager.js
25 ↗(On Diff #10199)

(missing this.isEnabled(type))

52 ↗(On Diff #10199)

(SetRangeOverlays to be called from setEnabled to fix options page currently not updating the entities upon page closure)

binaries/data/mods/public/gui/session/session.js
398 ↗(On Diff #10199)

Fixed TODO from rP23065

This revision was not accepted when it landed; it landed in state Needs Review.Oct 25 2019, 1:57 PM
This revision was automatically updated to reflect the committed changes.
Owners added a subscriber: Restricted Owners Package.Oct 25 2019, 1:57 PM