Page MenuHomeWildfire Games

Allow restoring lost wall turrets
Needs ReviewPublic

Authored by Stan on Jan 2 2018, 6:40 PM.

Details

Reviewers
Silier
Group Reviewers
Restricted Owners Package(Owns No Changed Paths)
Trac Tickets
#3789
Summary

Currently it's impossible to rebuild a lost wall turret without destroying/rebuilding adjacent wall segments.

Solution in this patch:
When wall tower is destroyed, new entity (slot) is spawned at its position, which is invisible until placing wall.
If player chooses wall as building, slots where can be rebuild tower are displayed.
Placement is snapped to this slots and in this case player can rebuild tower.
To be able to build wall and another segments, tower has to be rebuild first.
These tower slots are destroyed when foundation is placed on them to avoid multiple tower buildings.

Currently when there is some tower slot, any wall tower (even palisade tower) can be build on its place. (now you can rebuild wooden tower with stone tower and join or create mix of different wall types.

Test Plan
  1. Rebuild game
  2. Place wall turret
  3. Destroy turret
  4. Rebuild turret
  5. Destroy turret
  6. Destroy building with territory
  7. Confirm you do not see slot
  8. Build building with territory
  9. Confirm you see slot again
  10. Change perspectives
  11. Confirm you do not see slots that are not in your territory
  12. Reveal map
  13. Confirm you do not see your slots when not placing building
  14. Confirm you do not see slots that are not in your territory
  15. Build anything over slot
  16. Confirm slot is not there anymore

Diff Detail

Repository
rP 0 A.D. Public Repository
Branch
/ps/trunk
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 4289
Build 7532: Vulcan BuildJenkins
Build 7531: arc lint + arc unit

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Freagarach added inline comments.Oct 12 2019, 9:01 PM
binaries/data/mods/public/simulation/components/GuiInterface.js
1587–1588 ↗(On Diff #10134)

Could check for this earlier don't check the rest?

1934–1943 ↗(On Diff #10134)

filter?

1948–1954 ↗(On Diff #10134)

this.GetSlots(player, data)?

2080 ↗(On Diff #10134)

-,

binaries/data/mods/public/simulation/components/Health.js
392–393
{
...
}
binaries/data/mods/public/simulation/components/Visibility.js
101 ↗(On Diff #10134)

JSDOC.

106 ↗(On Diff #10134)

JSDOC.

binaries/data/mods/public/simulation/templates/template_building_slot.xml
31–42 ↗(On Diff #10134)

Does it need to have health?

source/simulation2/components/CCmpRangeManager.cpp
1624 ↗(On Diff #10134)

+.

Quickly tested the patch. Looks like a really nice behaviour. ?
But here are some things I noticed:

  • I think elexis mentioned it already: There is no way to get rid of the ghosts of dead towers.
  • Is it intended that you can't build more than a single tower when starting from a ghost? (Like starting a whole new wall from a ghosts point)
  • And most important: If you go into wall building mode and press Escape the ghosts are still displayed. (Such bugs wouldn't happen if GuiInterface would use a FSM with defined entry/exit functions)
Stan marked 16 inline comments as done.Oct 12 2019, 10:58 PM
In D1190#98997, @Imarok wrote:

Quickly tested the patch. Looks like a really nice behaviour. ?
But here are some things I noticed:

  • I think elexis mentioned it already: There is no way to get rid of the ghosts of dead towers.

Yeah the only way to get rid of them is to rebuild them.

  • Is it intended that you can't build more than a single tower when starting from a ghost? (Like starting a whole new wall from a ghosts point)

Nope, I noticed it aswell, it was in the initial implementation, help is appreciated.

  • And most important: If you go into wall building mode and press Escape the ghosts are still displayed. (Such bugs wouldn't happen if GuiInterface would use a FSM with defined entry/exit functions)

How can I handle that ?

binaries/data/mods/public/gui/session/input.js
193 ↗(On Diff #10134)

Would be undefined :)

binaries/data/mods/public/simulation/components/Health.js
324

Actually nothing, I changed both functions slightly to allow for that.

392–393

Good catch.

binaries/data/mods/public/simulation/components/Visibility.js
101 ↗(On Diff #10134)

Getter and setter don't really require jsdoc :) Unless they are doing nontrivial stuff;

binaries/data/mods/public/simulation/templates/template_building_slot.xml
31–42 ↗(On Diff #10134)

Nope, thanks

Stan updated this revision to Diff 10138.Oct 12 2019, 10:59 PM
Stan marked 5 inline comments as done.

Fix some comments

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

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

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 489| 489| 
| 490| 490| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 491| 491| 		this.CheckRegenTimer();
| 492|    |-}
|    | 492|+};
| 493| 493| 
| 494| 494| Health.prototype.OnValueModification = function(msg)
| 495| 495| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 501| 501| {
| 502| 502| 	if (msg.to != INVALID_PLAYER)
| 503| 503| 		this.RecalculateValues();
| 504|    |-}
|    | 504|+};
| 505| 505| 
| 506| 506| Health.prototype.RegisterHealthChanged = function(from)
| 507| 507| {

binaries/data/mods/public/simulation/components/Health.js
| 492| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 504| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [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
| 331| 331| 	}
| 332| 332| 
| 333| 333| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 334|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 334|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 335| 335| 	{
| 336| 336| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 337| 337| 		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
| 482| 482| 	mouseIsOverObject = (hoveredObject != null);
| 483| 483| 
| 484| 484| 	// Close the menu when interacting with the game world
| 485|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 486|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 485|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 486|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 487| 487| 		closeMenu();
| 488| 488| 
| 489| 489| 	// 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
| 643| 643| 		// user to continue building walls.
| 644| 644| 		switch (ev.type)
| 645| 645| 		{
| 646|    |-			case "mousemotion":
|    | 646|+		case "mousemotion":
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// 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
| 644| 644| 		switch (ev.type)
| 645| 645| 		{
| 646| 646| 			case "mousemotion":
| 647|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 647|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// 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
| 646| 646| 			case "mousemotion":
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649|    |-				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 649|+			// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// 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
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650|    |-				// the ending point and the starting point to snap to.
|    | 650|+			// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// 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
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651|    |-				//
|    | 651|+			//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// 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
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 652|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// 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
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 653|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// 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
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 654|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// 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
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 655|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
|    | [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| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 656|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
| 659| 659| 				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
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657|    |-				// points.
|    | 657|+			// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				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
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
| 659|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 659|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				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
| 657| 657| 				// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 660|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
|    | [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| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662|    |-				if (result && result.cost)
|    | 662|+			if (result && result.cost)
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					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
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663|    |-				{
|    | 663|+			{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						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
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
| 664|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 664|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						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
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665|    |-					placementSupport.tooltipMessage = [
|    | 665|+				placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].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
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666|    |-						getEntityCostTooltip(result),
|    | 666|+					getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
|    | [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
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667|    |-						getNeededResourcesTooltip(neededResources)
|    | 667|+					getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
|    | [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
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668|    |-					].filter(tip => tip).join("\n");
|    | 668|+				].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
| 671| 671| 				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
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669|    |-				}
|    | 669|+			}
| 670| 670| 
| 671| 671| 				break;
| 672| 672| 
|    | [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| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
| 671|    |-				break;
|    | 671|+			break;
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				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
| 670| 670| 
| 671| 671| 				break;
| 672| 672| 
| 673|    |-			case "mousebuttondown":
|    | 673|+		case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					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
| 671| 671| 				break;
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 674|+			if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					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
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675|    |-				{
|    | 675|+			{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
|    | [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
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 676|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						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
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677|    |-					if (tryPlaceWall(queued))
|    | 677|+				if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (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| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678|    |-					{
|    | 678|+				{
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681| 681| 							// 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
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679|    |-						if (queued)
|    | 679|+					if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							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
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680|    |-						{
|    | 680|+					{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							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
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681|    |-							// continue building, just set a new starting position where we left off
|    | 681|+						// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
|    | [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
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 682|+						placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							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
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683|    |-							placementSupport.wallEndPosition = undefined;
|    | 683|+						placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 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
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 685|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687| 687| 						else
| 688| 688| 						{
|    | [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
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686|    |-						}
|    | 686|+					}
| 687| 687| 						else
| 688| 688| 						{
| 689| 689| 							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
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687|    |-						else
|    | 687|+					else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							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
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687| 687| 						else
| 688|    |-						{
|    | 688|+					{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [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
| 686| 686| 						}
| 687| 687| 						else
| 688| 688| 						{
| 689|    |-							placementSupport.Reset();
|    | 689|+						placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
|    | [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
| 687| 687| 						else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690|    |-							inputState = INPUT_NORMAL;
|    | 690|+						inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 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| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 691|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
| 694| 694| 					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
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692|    |-						}
|    | 692|+					}
| 693| 693| 					}
| 694| 694| 					else
| 695| 695| 						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
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693|    |-					}
|    | 693|+				}
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
|    | [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| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
| 694|    |-					else
|    | 694|+				else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					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
| 692| 692| 						}
| 693| 693| 					}
| 694| 694| 					else
| 695|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 695|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					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
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697|    |-					updateBuildingPlacementPreview();
|    | 697|+				updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699| 699| 				}
| 700| 700| 				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
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698|    |-					return true;
|    | 698|+				return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
|    | [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
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699|    |-				}
|    | 699|+			}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": 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
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699| 699| 				}
| 700|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 700|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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| 					return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701|    |-				{
|    | 701|+			{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
|    | [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
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 702|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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
| 865| 865| 			break;
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 868|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					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
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869|    |-				{
|    | 869|+			{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
|    | [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
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870|    |-					let now = Date.now();
|    | 870|+				let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						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
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 871|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
|    | [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
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872|    |-					{
|    | 872|+				{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							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
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 873|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							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
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874|    |-						{
|    | 874|+					{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
|    | [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
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875|    |-							var sptr = ev.hotkey.split(".");
|    | 875|+						var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
|    | [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
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876|    |-							performGroup("snap", sptr[3]);
|    | 876|+						performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					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
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877|    |-						}
|    | 877|+					}
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
|    | [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
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878|    |-					}
|    | 878|+				}
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						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
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879|    |-					else
|    | 879|+				else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						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
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
| 880|    |-					{
|    | 880|+				{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
|    | [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
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
| 881|    |-						var sptr = ev.hotkey.split(".");
|    | 881|+					var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						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
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882|    |-						performGroup(sptr[2], sptr[3]);
|    | 882|+					performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						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
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884|    |-						doublePressTimer = now;
|    | 884|+					doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
|    | [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
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885|    |-						prevHotkey = ev.hotkey;
|    | 885|+					prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888| 888| 				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
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886|    |-					}
|    | 886|+				}
| 887| 887| 				}
| 888| 888| 				break;
| 889| 889| 		}
|    | [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
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887|    |-				}
|    | 887|+			}
| 888| 888| 				break;
| 889| 889| 		}
| 890| 890| 		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
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888|    |-				break;
|    | 888|+			break;
| 889| 889| 		}
| 890| 890| 		break;
| 891| 891| 
|    | [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
|1525|1525| 		g_BatchTrainingEntityAllowedCount < batchedSize * appropriateBuildings.length)
|1526|1526| 	{
|1527|1527| 		// Train as many full batches as we can
|1528|    |-		let buildingsCountToTrainFullBatch = Math.floor( g_BatchTrainingEntityAllowedCount / batchedSize);
|    |1528|+		let buildingsCountToTrainFullBatch = Math.floor(g_BatchTrainingEntityAllowedCount / batchedSize);
|1529|1529| 		Engine.PostNetworkCommand({
|1530|1530| 			"type": "train",
|1531|1531| 			"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
|1604|1604| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1605|1605| 
|1606|1606| 	// Reset the last idle unit, etc., if the selection type has changed.
|1607|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1607|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1608|1608| 		resetIdleUnit();
|1609|1609| 	lastIdleClasses = classes;
|1610|1610| 

binaries/data/mods/public/gui/session/input.js
| 232| »   »   var·entState·=·GetEntityState(ent);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'entState' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
| 239| »   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
| 253| »   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
| 471| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 644| »   »   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
| 832| »   switch·(inputState)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

binaries/data/mods/public/gui/session/input.js
|1040| »   »   »   »   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
|1049| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 486| »   »   &&·(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
| 516| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 519| »   »   »   »   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
| 676| »   »   »   »   »   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
| 881| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

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

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

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

binaries/data/mods/public/simulation/components/Foundation.js
| 329| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 331| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 537| 537| 			if (cmpGarrisonHolder)
| 538| 538| 			{
| 539| 539| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 540|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 541|    |-				    && player != +cmd.owner)
|    | 540|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 541|+				    player != +cmd.owner)
| 542| 542| 						continue;
| 543| 543| 
| 544| 544| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 539| 539| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 540| 540| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 541| 541| 				    && player != +cmd.owner)
| 542|    |-						continue;
|    | 542|+					continue;
| 543| 543| 
| 544| 544| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 545| 545| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1480|1480| 		// Check that all its members are selected
|1481|1481| 		var fid = formationIds[0];
|1482|1482| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1483|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1484|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1483|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1484|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1485|1485| 		{
|1486|1486| 			cmpFormation.DeleteTwinFormations();
|1487|1487| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1588|1588| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1589|1589| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1590|1590| 				if (matrix[i][j] < distSq)
|1591|    |-					closeClusters = [i,j];
|    |1591|+					closeClusters = [i, j];
|1592|1592| 
|1593|1593| 		// if no more close clusters found, just return all found clusters so far
|1594|1594| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		}
|1611|1611| 		// remove the rows and columns in the matrix for the merged clusters,
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|    |-		clusters.splice(closeClusters[0],1);
|    |1613|+		clusters.splice(closeClusters[0], 1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// remove the rows and columns in the matrix for the merged clusters,
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|    |-		clusters.splice(closeClusters[1],1);
|    |1614|+		clusters.splice(closeClusters[1], 1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|    |-		matrix.splice(closeClusters[0],1);
|    |1615|+		matrix.splice(closeClusters[0], 1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|    |-		matrix.splice(closeClusters[1],1);
|    |1616|+		matrix.splice(closeClusters[1], 1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|1620|    |-				matrix[i].splice(closeClusters[0],1);
|    |1620|+				matrix[i].splice(closeClusters[0], 1);
|1621|1621| 			if (matrix[i].length > closeClusters[1])
|1622|1622| 				matrix[i].splice(closeClusters[1],1);
|1623|1623| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|1620|1620| 				matrix[i].splice(closeClusters[0],1);
|1621|1621| 			if (matrix[i].length > closeClusters[1])
|1622|    |-				matrix[i].splice(closeClusters[1],1);
|    |1622|+				matrix[i].splice(closeClusters[1], 1);
|1623|1623| 		}
|1624|1624| 		// add a new row of distances to the matrix and the new cluster
|1625|1625| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 789| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1277| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1507| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1586| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1603| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1617| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|  53| var·g_Commands·=·{
|    | [NORMAL] JSHintBear:
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 541| »   »   »   »   ····&&·player·!=·+cmd.owner)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
| 729| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 948| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 961| »   »   var·count·=·0;
|    | [NORMAL] JSHintBear:
|    | 'count' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1108| »   »   var·cmpGuiInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGuiInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1362| »   »   var·piece·=·pieces[j];
|    | [NORMAL] JSHintBear:
|    | 'piece' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1445| »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1484| »   »   »   &&·cmpFormation.GetMemberCount()·==·formation.entities.length)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
|1510| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1543| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 821| 821| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 822| 822| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 823| 823| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 824|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 824|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 825| 825| 	}
| 826| 826| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 827| 827| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1701|1701| 			{
|1702|1702| 				minDist2 = dist2;
|1703|1703| 				minDistEntitySnapData = {
|1704|    |-						"x": pos.x,
|    |1704|+					"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1702|1702| 				minDist2 = dist2;
|1703|1703| 				minDistEntitySnapData = {
|1704|1704| 						"x": pos.x,
|1705|    |-						"z": pos.z,
|    |1705|+					"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|1708|1708| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1703|1703| 				minDistEntitySnapData = {
|1704|1704| 						"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|    |-						"angle": cmpPosition.GetRotation().y,
|    |1706|+					"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|1708|1708| 				};
|1709|1709| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1704|1704| 						"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|    |-						"ent": ent
|    |1707|+					"ent": ent
|1708|1708| 				};
|1709|1709| 			}
|1710|1710| 		}
Executing section cli...

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

Stan updated this revision to Diff 10142.Oct 12 2019, 11:15 PM

Remove more duplication.

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

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

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

Linter detected issues:
Executing section Source...
Executing section JS...

binaries/data/mods/public/simulation/components/Foundation.js
| 329| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 331| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 537| 537| 			if (cmpGarrisonHolder)
| 538| 538| 			{
| 539| 539| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 540|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 541|    |-				    && player != +cmd.owner)
|    | 540|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 541|+				    player != +cmd.owner)
| 542| 542| 						continue;
| 543| 543| 
| 544| 544| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 539| 539| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 540| 540| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 541| 541| 				    && player != +cmd.owner)
| 542|    |-						continue;
|    | 542|+					continue;
| 543| 543| 
| 544| 544| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 545| 545| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1480|1480| 		// Check that all its members are selected
|1481|1481| 		var fid = formationIds[0];
|1482|1482| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1483|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1484|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1483|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1484|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1485|1485| 		{
|1486|1486| 			cmpFormation.DeleteTwinFormations();
|1487|1487| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1588|1588| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1589|1589| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1590|1590| 				if (matrix[i][j] < distSq)
|1591|    |-					closeClusters = [i,j];
|    |1591|+					closeClusters = [i, j];
|1592|1592| 
|1593|1593| 		// if no more close clusters found, just return all found clusters so far
|1594|1594| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		}
|1611|1611| 		// remove the rows and columns in the matrix for the merged clusters,
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|    |-		clusters.splice(closeClusters[0],1);
|    |1613|+		clusters.splice(closeClusters[0], 1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// remove the rows and columns in the matrix for the merged clusters,
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|    |-		clusters.splice(closeClusters[1],1);
|    |1614|+		clusters.splice(closeClusters[1], 1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|    |-		matrix.splice(closeClusters[0],1);
|    |1615|+		matrix.splice(closeClusters[0], 1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|    |-		matrix.splice(closeClusters[1],1);
|    |1616|+		matrix.splice(closeClusters[1], 1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|1620|    |-				matrix[i].splice(closeClusters[0],1);
|    |1620|+				matrix[i].splice(closeClusters[0], 1);
|1621|1621| 			if (matrix[i].length > closeClusters[1])
|1622|1622| 				matrix[i].splice(closeClusters[1],1);
|1623|1623| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|1620|1620| 				matrix[i].splice(closeClusters[0],1);
|1621|1621| 			if (matrix[i].length > closeClusters[1])
|1622|    |-				matrix[i].splice(closeClusters[1],1);
|    |1622|+				matrix[i].splice(closeClusters[1], 1);
|1623|1623| 		}
|1624|1624| 		// add a new row of distances to the matrix and the new cluster
|1625|1625| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 789| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1277| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1507| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1586| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1603| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1617| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|  53| var·g_Commands·=·{
|    | [NORMAL] JSHintBear:
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 541| »   »   »   »   ····&&·player·!=·+cmd.owner)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
| 729| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 948| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 961| »   »   var·count·=·0;
|    | [NORMAL] JSHintBear:
|    | 'count' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1108| »   »   var·cmpGuiInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGuiInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1362| »   »   var·piece·=·pieces[j];
|    | [NORMAL] JSHintBear:
|    | 'piece' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1445| »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1484| »   »   »   &&·cmpFormation.GetMemberCount()·==·formation.entities.length)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
|1510| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1543| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 821| 821| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 822| 822| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 823| 823| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 824|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 824|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 825| 825| 	}
| 826| 826| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 827| 827| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1701|1701| 			{
|1702|1702| 				minDist2 = dist2;
|1703|1703| 				minDistEntitySnapData = {
|1704|    |-						"x": pos.x,
|    |1704|+					"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1702|1702| 				minDist2 = dist2;
|1703|1703| 				minDistEntitySnapData = {
|1704|1704| 						"x": pos.x,
|1705|    |-						"z": pos.z,
|    |1705|+					"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|1708|1708| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1703|1703| 				minDistEntitySnapData = {
|1704|1704| 						"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|    |-						"angle": cmpPosition.GetRotation().y,
|    |1706|+					"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|1708|1708| 				};
|1709|1709| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1704|1704| 						"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|    |-						"ent": ent
|    |1707|+					"ent": ent
|1708|1708| 				};
|1709|1709| 			}
|1710|1710| 		}
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [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
| 331| 331| 	}
| 332| 332| 
| 333| 333| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 334|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 334|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 335| 335| 	{
| 336| 336| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 337| 337| 		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
| 482| 482| 	mouseIsOverObject = (hoveredObject != null);
| 483| 483| 
| 484| 484| 	// Close the menu when interacting with the game world
| 485|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 486|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 485|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 486|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 487| 487| 		closeMenu();
| 488| 488| 
| 489| 489| 	// 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
| 643| 643| 		// user to continue building walls.
| 644| 644| 		switch (ev.type)
| 645| 645| 		{
| 646|    |-			case "mousemotion":
|    | 646|+		case "mousemotion":
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// 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
| 644| 644| 		switch (ev.type)
| 645| 645| 		{
| 646| 646| 			case "mousemotion":
| 647|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 647|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// 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
| 646| 646| 			case "mousemotion":
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649|    |-				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 649|+			// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// 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
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650|    |-				// the ending point and the starting point to snap to.
|    | 650|+			// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// 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
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651|    |-				//
|    | 651|+			//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// 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
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 652|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// 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
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 653|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// 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
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 654|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// 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
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 655|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
|    | [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| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 656|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
| 659| 659| 				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
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657|    |-				// points.
|    | 657|+			// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				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
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
| 659|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 659|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				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
| 657| 657| 				// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 660|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
|    | [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| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662|    |-				if (result && result.cost)
|    | 662|+			if (result && result.cost)
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					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
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663|    |-				{
|    | 663|+			{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						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
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
| 664|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 664|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						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
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665|    |-					placementSupport.tooltipMessage = [
|    | 665|+				placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].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
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666|    |-						getEntityCostTooltip(result),
|    | 666|+					getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
|    | [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
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667|    |-						getNeededResourcesTooltip(neededResources)
|    | 667|+					getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
|    | [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
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668|    |-					].filter(tip => tip).join("\n");
|    | 668|+				].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
| 671| 671| 				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
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669|    |-				}
|    | 669|+			}
| 670| 670| 
| 671| 671| 				break;
| 672| 672| 
|    | [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| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
| 671|    |-				break;
|    | 671|+			break;
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				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
| 670| 670| 
| 671| 671| 				break;
| 672| 672| 
| 673|    |-			case "mousebuttondown":
|    | 673|+		case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					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
| 671| 671| 				break;
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 674|+			if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					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
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675|    |-				{
|    | 675|+			{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
|    | [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
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 676|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						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
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677|    |-					if (tryPlaceWall(queued))
|    | 677|+				if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (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| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678|    |-					{
|    | 678|+				{
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681| 681| 							// 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
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679|    |-						if (queued)
|    | 679|+					if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							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
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680|    |-						{
|    | 680|+					{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							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
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681|    |-							// continue building, just set a new starting position where we left off
|    | 681|+						// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
|    | [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
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 682|+						placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							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
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683|    |-							placementSupport.wallEndPosition = undefined;
|    | 683|+						placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 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
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 685|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687| 687| 						else
| 688| 688| 						{
|    | [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
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686|    |-						}
|    | 686|+					}
| 687| 687| 						else
| 688| 688| 						{
| 689| 689| 							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
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687|    |-						else
|    | 687|+					else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							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
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687| 687| 						else
| 688|    |-						{
|    | 688|+					{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [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
| 686| 686| 						}
| 687| 687| 						else
| 688| 688| 						{
| 689|    |-							placementSupport.Reset();
|    | 689|+						placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
|    | [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
| 687| 687| 						else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690|    |-							inputState = INPUT_NORMAL;
|    | 690|+						inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 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| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 691|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
| 694| 694| 					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
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692|    |-						}
|    | 692|+					}
| 693| 693| 					}
| 694| 694| 					else
| 695| 695| 						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
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693|    |-					}
|    | 693|+				}
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
|    | [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| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
| 694|    |-					else
|    | 694|+				else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					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
| 692| 692| 						}
| 693| 693| 					}
| 694| 694| 					else
| 695|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 695|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					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
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697|    |-					updateBuildingPlacementPreview();
|    | 697|+				updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699| 699| 				}
| 700| 700| 				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
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698|    |-					return true;
|    | 698|+				return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
|    | [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
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699|    |-				}
|    | 699|+			}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": 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
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699| 699| 				}
| 700|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 700|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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| 					return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701|    |-				{
|    | 701|+			{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
|    | [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
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 702|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 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
| 865| 865| 			break;
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 868|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					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
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869|    |-				{
|    | 869|+			{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
|    | [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
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870|    |-					let now = Date.now();
|    | 870|+				let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						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
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 871|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
|    | [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
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872|    |-					{
|    | 872|+				{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							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
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 873|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							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
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874|    |-						{
|    | 874|+					{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
|    | [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
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875|    |-							var sptr = ev.hotkey.split(".");
|    | 875|+						var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
|    | [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
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876|    |-							performGroup("snap", sptr[3]);
|    | 876|+						performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					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
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877|    |-						}
|    | 877|+					}
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
|    | [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
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878|    |-					}
|    | 878|+				}
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						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
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879|    |-					else
|    | 879|+				else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						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
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
| 880|    |-					{
|    | 880|+				{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
|    | [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
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
| 881|    |-						var sptr = ev.hotkey.split(".");
|    | 881|+					var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						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
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882|    |-						performGroup(sptr[2], sptr[3]);
|    | 882|+					performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						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
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884|    |-						doublePressTimer = now;
|    | 884|+					doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
|    | [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
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885|    |-						prevHotkey = ev.hotkey;
|    | 885|+					prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888| 888| 				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
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886|    |-					}
|    | 886|+				}
| 887| 887| 				}
| 888| 888| 				break;
| 889| 889| 		}
|    | [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
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887|    |-				}
|    | 887|+			}
| 888| 888| 				break;
| 889| 889| 		}
| 890| 890| 		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
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888|    |-				break;
|    | 888|+			break;
| 889| 889| 		}
| 890| 890| 		break;
| 891| 891| 
|    | [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
|1525|1525| 		g_BatchTrainingEntityAllowedCount < batchedSize * appropriateBuildings.length)
|1526|1526| 	{
|1527|1527| 		// Train as many full batches as we can
|1528|    |-		let buildingsCountToTrainFullBatch = Math.floor( g_BatchTrainingEntityAllowedCount / batchedSize);
|    |1528|+		let buildingsCountToTrainFullBatch = Math.floor(g_BatchTrainingEntityAllowedCount / batchedSize);
|1529|1529| 		Engine.PostNetworkCommand({
|1530|1530| 			"type": "train",
|1531|1531| 			"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
|1604|1604| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1605|1605| 
|1606|1606| 	// Reset the last idle unit, etc., if the selection type has changed.
|1607|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1607|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1608|1608| 		resetIdleUnit();
|1609|1609| 	lastIdleClasses = classes;
|1610|1610| 

binaries/data/mods/public/gui/session/input.js
| 232| »   »   var·entState·=·GetEntityState(ent);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'entState' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
| 239| »   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
| 253| »   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
| 471| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 644| »   »   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
| 832| »   switch·(inputState)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

binaries/data/mods/public/gui/session/input.js
|1040| »   »   »   »   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
|1049| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 486| »   »   &&·(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
| 516| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 519| »   »   »   »   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
| 676| »   »   »   »   »   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
| 881| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

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

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

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

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

Freagarach added inline comments.Oct 13 2019, 7:21 AM
binaries/data/mods/public/simulation/components/GuiInterface.js
1942 ↗(On Diff #10142)

Early return when no slots?

binaries/data/mods/public/simulation/components/Visibility.js
101 ↗(On Diff #10134)

Okay :)

@Stan This patch does not seem to be able to repair the damaged stone walls and arrow towers directly. I have tried several factions, Athens, Macedonia, Carthage, the Indian Peacock Dynasty.

Stan updated this revision to Diff 11609.Mar 30 2020, 2:37 PM
Stan marked 2 inline comments as done.
Stan edited the summary of this revision. (Show Details)
Stan edited the test plan for this revision. (Show Details)

Add early return

Build failure - The Moirai have given mortals hearts that can endure.

Link to build: https://jenkins.wildfiregames.com/job/macos-differential/522/display/redirect

Build failure - The Moirai have given mortals hearts that can endure.

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

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1479|1479| 		// Check that all its members are selected
|1480|1480| 		var fid = formationIds[0];
|1481|1481| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1482|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1483|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1482|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1483|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1484|1484| 		{
|1485|1485| 			cmpFormation.DeleteTwinFormations();
|1486|1486| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1587|1587| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1588|1588| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1589|1589| 				if (matrix[i][j] < distSq)
|1590|    |-					closeClusters = [i,j];
|    |1590|+					closeClusters = [i, j];
|1591|1591| 
|1592|1592| 		// if no more close clusters found, just return all found clusters so far
|1593|1593| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1609|1609| 		}
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|    |-		clusters.splice(closeClusters[0],1);
|    |1612|+		clusters.splice(closeClusters[0], 1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|    |-		clusters.splice(closeClusters[1],1);
|    |1613|+		clusters.splice(closeClusters[1], 1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|    |-		matrix.splice(closeClusters[0],1);
|    |1614|+		matrix.splice(closeClusters[0], 1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|    |-		matrix.splice(closeClusters[1],1);
|    |1615|+		matrix.splice(closeClusters[1], 1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|    |-				matrix[i].splice(closeClusters[0],1);
|    |1619|+				matrix[i].splice(closeClusters[0], 1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|1621| 				matrix[i].splice(closeClusters[1],1);
|1622|1622| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|1619| 				matrix[i].splice(closeClusters[0],1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|    |-				matrix[i].splice(closeClusters[1],1);
|    |1621|+				matrix[i].splice(closeClusters[1], 1);
|1622|1622| 		}
|1623|1623| 		// add a new row of distances to the matrix and the new cluster
|1624|1624| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 788| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1275| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1506| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1585| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1602| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1616| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|  53| var·g_Commands·=·{
|    | [NORMAL] JSHintBear:
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 531| »   »   »   »   ····&&·player·!=·+cmd.owner)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
| 726| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 947| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 960| »   »   var·count·=·0;
|    | [NORMAL] JSHintBear:
|    | 'count' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1107| »   »   var·cmpGuiInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGuiInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1361| »   »   var·piece·=·pieces[j];
|    | [NORMAL] JSHintBear:
|    | 'piece' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1444| »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1483| »   »   »   &&·cmpFormation.GetMemberCount()·==·formation.entities.length)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
|1509| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1542| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 826| 826| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 827| 827| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 828| 828| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 829|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 829|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 830| 830| 	}
| 831| 831| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 832| 832| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1706|1706| 			{
|1707|1707| 				minDist2 = dist2;
|1708|1708| 				minDistEntitySnapData = {
|1709|    |-						"x": pos.x,
|    |1709|+					"x": pos.x,
|1710|1710| 						"z": pos.z,
|1711|1711| 						"angle": cmpPosition.GetRotation().y,
|1712|1712| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1707|1707| 				minDist2 = dist2;
|1708|1708| 				minDistEntitySnapData = {
|1709|1709| 						"x": pos.x,
|1710|    |-						"z": pos.z,
|    |1710|+					"z": pos.z,
|1711|1711| 						"angle": cmpPosition.GetRotation().y,
|1712|1712| 						"ent": ent
|1713|1713| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1708|1708| 				minDistEntitySnapData = {
|1709|1709| 						"x": pos.x,
|1710|1710| 						"z": pos.z,
|1711|    |-						"angle": cmpPosition.GetRotation().y,
|    |1711|+					"angle": cmpPosition.GetRotation().y,
|1712|1712| 						"ent": ent
|1713|1713| 				};
|1714|1714| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1709|1709| 						"x": pos.x,
|1710|1710| 						"z": pos.z,
|1711|1711| 						"angle": cmpPosition.GetRotation().y,
|1712|    |-						"ent": ent
|    |1712|+					"ent": ent
|1713|1713| 				};
|1714|1714| 			}
|1715|1715| 		}
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 169| 169| 	this.totalBuilderRate += buildRate;
| 170| 170| 
| 171| 171| 	return true;
| 172|    |-}
|    | 172|+};
| 173| 173| 
| 174| 174| /**
| 175| 175|  * Adds a builder to the counter.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 204| 204| 		cmpVisual.SetVariable("numbuilders", this.builders.size);
| 205| 205| 
| 206| 206| 	Engine.PostMessage(this.entity, MT_FoundationBuildersChanged, { "to": this.GetBuilders() });
| 207|    |-}
|    | 207|+};
| 208| 208| 
| 209| 209| /**
| 210| 210|  * The build multiplier is a penalty that is applied to each builder.

binaries/data/mods/public/simulation/components/Foundation.js
| 172| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 207| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 377| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 379| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [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
| 340| 340| 	}
| 341| 341| 
| 342| 342| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 343|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 343|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 344| 344| 	{
| 345| 345| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 346| 346| 		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
| 491| 491| 	mouseIsOverObject = (hoveredObject != null);
| 492| 492| 
| 493| 493| 	// Close the menu when interacting with the game world
| 494|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 495|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 494|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 495|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 496| 496| 		g_Menu.close();
| 497| 497| 
| 498| 498| 	// 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
| 652| 652| 		// user to continue building walls.
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655|    |-			case "mousemotion":
|    | 655|+		case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure 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
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655| 655| 			case "mousemotion":
| 656|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 656|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// 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
| 655| 655| 			case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 658|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// 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
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659|    |-				// the ending point and the starting point to snap to.
|    | 659|+			// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// 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
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660|    |-				//
|    | 660|+			//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// 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
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 661|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// 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
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 662|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// 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
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 663|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// 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
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 664|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
|    | [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| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 665|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				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
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666|    |-				// points.
|    | 666|+			// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				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
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 668|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				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
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 669|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
|    | [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| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671|    |-				if (result && result.cost)
|    | 671|+			if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					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
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672|    |-				{
|    | 672|+			{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						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
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 673|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						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
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674|    |-					placementSupport.tooltipMessage = [
|    | 674|+				placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].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
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675|    |-						getEntityCostTooltip(result),
|    | 675|+					getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
|    | [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
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676|    |-						getNeededResourcesTooltip(neededResources)
|    | 676|+					getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
|    | [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
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677|    |-					].filter(tip => tip).join("\n");
|    | 677|+				].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680| 680| 				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
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678|    |-				}
|    | 678|+			}
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
|    | [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
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680|    |-				break;
|    | 680|+			break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				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
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
| 682|    |-			case "mousebuttondown":
|    | 682|+		case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					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
| 680| 680| 				break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 683|+			if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					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
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684|    |-				{
|    | 684|+			{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
|    | [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
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 685|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						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
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686|    |-					if (tryPlaceWall(queued))
|    | 686|+				if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
|    | [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
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687|    |-					{
|    | 687|+				{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// 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
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688|    |-						if (queued)
|    | 688|+					if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							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
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689|    |-						{
|    | 689|+					{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							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
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690|    |-							// continue building, just set a new starting position where we left off
|    | 690|+						// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 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| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 691|+						placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							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
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692|    |-							placementSupport.wallEndPosition = undefined;
|    | 692|+						placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
|    | [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
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 694|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
|    | [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
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695|    |-						}
|    | 695|+					}
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							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
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696|    |-						else
|    | 696|+					else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							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
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697|    |-						{
|    | 697|+					{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [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
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
| 698|    |-							placementSupport.Reset();
|    | 698|+						placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
|    | [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
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699|    |-							inputState = INPUT_NORMAL;
|    | 699|+						inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
|    | [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
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 700|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					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
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701|    |-						}
|    | 701|+					}
| 702| 702| 					}
| 703| 703| 					else
| 704| 704| 						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
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702|    |-					}
|    | 702|+				}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
|    | [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| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703|    |-					else
|    | 703|+				else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					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
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
| 704|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 704|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					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
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706|    |-					updateBuildingPlacementPreview();
|    | 706|+				updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				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
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707|    |-					return true;
|    | 707|+				return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
|    | [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
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708|    |-				}
|    | 708|+			}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": 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
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 709|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// 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
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710|    |-				{
|    | 710|+			{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
|    | [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
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 711|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					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
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712|    |-					// reset to normal input mode
|    | 712|+				// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
|    | [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
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713|    |-					placementSupport.Reset();
|    | 713|+				placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					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
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					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
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716|    |-					inputState = INPUT_NORMAL;
|    | 716|+				inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719| 719| 				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
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717|    |-					return true;
|    | 717|+				return true;
| 718| 718| 				}
| 719| 719| 				break;
| 720| 720| 		}
|    | [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
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718|    |-				}
|    | 718|+			}
| 719| 719| 				break;
| 720| 720| 		}
| 721| 721| 		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
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719|    |-				break;
|    | 719|+			break;
| 720| 720| 		}
| 721| 721| 		break;
| 722| 722| 
|    | [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
| 858| 858| 			break;
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 861|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					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
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862|    |-				{
|    | 862|+			{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
|    | [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
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863|    |-					let now = Date.now();
|    | 863|+				let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						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
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 864|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
|    | [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
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865|    |-					{
|    | 865|+				{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							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
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 866|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							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
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867|    |-						{
|    | 867|+					{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
|    | [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
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868|    |-							var sptr = ev.hotkey.split(".");
|    | 868|+						var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
|    | [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
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869|    |-							performGroup("snap", sptr[3]);
|    | 869|+						performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					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
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870|    |-						}
|    | 870|+					}
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
|    | [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
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871|    |-					}
|    | 871|+				}
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						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
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872|    |-					else
|    | 872|+				else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						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
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
| 873|    |-					{
|    | 873|+				{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
|    | [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
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
| 874|    |-						var sptr = ev.hotkey.split(".");
|    | 874|+					var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						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
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875|    |-						performGroup(sptr[2], sptr[3]);
|    | 875|+					performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						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
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877|    |-						doublePressTimer = now;
|    | 877|+					doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
|    | [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
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878|    |-						prevHotkey = ev.hotkey;
|    | 878|+					prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881| 881| 				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
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879|    |-					}
|    | 879|+				}
| 880| 880| 				}
| 881| 881| 				break;
| 882| 882| 		}
|    | [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
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880|    |-				}
|    | 880|+			}
| 881| 881| 				break;
| 882| 882| 		}
| 883| 883| 		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
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881|    |-				break;
|    | 881|+			break;
| 882| 882| 		}
| 883| 883| 		break;
| 884| 884| 
|    | [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
|1612|1612| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1613|1613| 
|1614|1614| 	// Reset the last idle unit, etc., if the selection type has changed.
|1615|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1615|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1616|1616| 		resetIdleUnit();
|1617|1617| 	lastIdleClasses = classes;
|1618|1618| 

binaries/data/mods/public/gui/session/input.js
| 235| »   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
| 249| »   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
| 480| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 740| ·»   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 741| ·»   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 746| ·»   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

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

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

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

binaries/data/mods/public/gui/session/input.js
|1033| »   »   »   »   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
|1042| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1066| ·»   »   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1067| ·»   »   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1068| ·»   »   »   »   »   "z":·placementSupport.position.z,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1071| ·»   »   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 495| »   »   &&·(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
| 525| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 528| »   »   »   »   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
| 685| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

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

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

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

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

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

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

Build failure - The Moirai have given mortals hearts that can endure.

Link to build: https://jenkins.wildfiregames.com/job/macos-differential/526/display/redirect

@Stan' My friend, have those ghost slots been fixed?

Freagarach added inline comments.Apr 1 2020, 7:00 PM
binaries/data/mods/public/gui/session/input.js
193 ↗(On Diff #10134)

You can define this in placement.js as is the case of other properties.

binaries/data/mods/public/simulation/components/Foundation.js
48 ↗(On Diff #11609)

Couldn't this be abused? Removing carcasses by construction init? Instead of upon commit.

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

Still this?

1249 ↗(On Diff #11609)

let? And perhaps a more descriptive name ;)

1357 ↗(On Diff #11609)

Check?

1474 ↗(On Diff #11609)

let?

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15 ↗(On Diff #11609)

Template does not exist?

Silier added a comment.Apr 1 2020, 8:09 PM

Anyway I was planing another approach but if someone can make this one fully working it would be nice too.

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

snapRadiusMultiplier ?

1474 ↗(On Diff #11609)

const is fine and better then let because value is not changing in scope

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15 ↗(On Diff #11609)

maybe got lost during rebase, or i forgot to update them, crap

Silier added inline comments.Apr 1 2020, 8:13 PM
binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15 ↗(On Diff #11609)
Stan updated this revision to Diff 11617.Apr 2 2020, 3:14 PM
Stan marked 12 inline comments as done.

Fix inlines.

@Angen, feel free to commandeer back, I just really wanted that feature.

binaries/data/mods/public/simulation/components/Foundation.js
48 ↗(On Diff #11609)

How is it done currently for foundations?

binaries/data/mods/public/simulation/components/GuiInterface.js
1587–1588 ↗(On Diff #10134)

Where would you put this

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15 ↗(On Diff #11609)

To reproduce the bug do the following
arc patch
revert svn
arc patch again
This time all unversionned undeleted files won't get added.

Vulcan added a comment.Apr 2 2020, 3:24 PM

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 169| 169| 	this.totalBuilderRate += buildRate;
| 170| 170| 
| 171| 171| 	return true;
| 172|    |-}
|    | 172|+};
| 173| 173| 
| 174| 174| /**
| 175| 175|  * Adds a builder to the counter.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 204| 204| 		cmpVisual.SetVariable("numbuilders", this.builders.size);
| 205| 205| 
| 206| 206| 	Engine.PostMessage(this.entity, MT_FoundationBuildersChanged, { "to": this.GetBuilders() });
| 207|    |-}
|    | 207|+};
| 208| 208| 
| 209| 209| /**
| 210| 210|  * The build multiplier is a penalty that is applied to each builder.

binaries/data/mods/public/simulation/components/Foundation.js
| 172| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 207| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 377| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 379| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1479|1479| 		// Check that all its members are selected
|1480|1480| 		var fid = formationIds[0];
|1481|1481| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1482|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1483|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1482|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1483|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1484|1484| 		{
|1485|1485| 			cmpFormation.DeleteTwinFormations();
|1486|1486| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1587|1587| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1588|1588| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1589|1589| 				if (matrix[i][j] < distSq)
|1590|    |-					closeClusters = [i,j];
|    |1590|+					closeClusters = [i, j];
|1591|1591| 
|1592|1592| 		// if no more close clusters found, just return all found clusters so far
|1593|1593| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1609|1609| 		}
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|    |-		clusters.splice(closeClusters[0],1);
|    |1612|+		clusters.splice(closeClusters[0], 1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|    |-		clusters.splice(closeClusters[1],1);
|    |1613|+		clusters.splice(closeClusters[1], 1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|    |-		matrix.splice(closeClusters[0],1);
|    |1614|+		matrix.splice(closeClusters[0], 1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|    |-		matrix.splice(closeClusters[1],1);
|    |1615|+		matrix.splice(closeClusters[1], 1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|    |-				matrix[i].splice(closeClusters[0],1);
|    |1619|+				matrix[i].splice(closeClusters[0], 1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|1621| 				matrix[i].splice(closeClusters[1],1);
|1622|1622| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|1619| 				matrix[i].splice(closeClusters[0],1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|    |-				matrix[i].splice(closeClusters[1],1);
|    |1621|+				matrix[i].splice(closeClusters[1], 1);
|1622|1622| 		}
|1623|1623| 		// add a new row of distances to the matrix and the new cluster
|1624|1624| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 788| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1275| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1506| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1585| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1602| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1616| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|  53| var·g_Commands·=·{
|    | [NORMAL] JSHintBear:
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 531| »   »   »   »   ····&&·player·!=·+cmd.owner)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
| 726| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 947| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 960| »   »   var·count·=·0;
|    | [NORMAL] JSHintBear:
|    | 'count' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1107| »   »   var·cmpGuiInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGuiInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1361| »   »   var·piece·=·pieces[j];
|    | [NORMAL] JSHintBear:
|    | 'piece' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1444| »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1483| »   »   »   &&·cmpFormation.GetMemberCount()·==·formation.entities.length)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
|1509| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1542| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 826| 826| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 827| 827| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 828| 828| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 829|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 829|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 830| 830| 	}
| 831| 831| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 832| 832| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '='.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1246|1246| 	if (cmd.snapSlots)
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|    |-		let snapRadiusMultiplier  = 0.5;
|    |1249|+		let snapRadiusMultiplier = 0.5;
|1250|1250| 		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|    | [NORMAL] ESLintBear (semi-spacing):
|    | Unexpected whitespace before semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|1249| 		let snapRadiusMultiplier  = 0.5;
|1250|    |-		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|    |1250|+		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|1253|1253| 			"z": start.pos.z,
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1682|1682| 			{
|1683|1683| 				minDist2 = dist2;
|1684|1684| 				minDistEntitySnapData = {
|1685|    |-						"x": pos.x,
|    |1685|+					"x": pos.x,
|1686|1686| 						"z": pos.z,
|1687|1687| 						"angle": cmpPosition.GetRotation().y,
|1688|1688| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1683|1683| 				minDist2 = dist2;
|1684|1684| 				minDistEntitySnapData = {
|1685|1685| 						"x": pos.x,
|1686|    |-						"z": pos.z,
|    |1686|+					"z": pos.z,
|1687|1687| 						"angle": cmpPosition.GetRotation().y,
|1688|1688| 						"ent": ent
|1689|1689| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1684|1684| 				minDistEntitySnapData = {
|1685|1685| 						"x": pos.x,
|1686|1686| 						"z": pos.z,
|1687|    |-						"angle": cmpPosition.GetRotation().y,
|    |1687|+					"angle": cmpPosition.GetRotation().y,
|1688|1688| 						"ent": ent
|1689|1689| 				};
|1690|1690| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1685|1685| 						"x": pos.x,
|1686|1686| 						"z": pos.z,
|1687|1687| 						"angle": cmpPosition.GetRotation().y,
|1688|    |-						"ent": ent
|    |1688|+					"ent": ent
|1689|1689| 				};
|1690|1690| 			}
|1691|1691| 		}
|    | [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
| 340| 340| 	}
| 341| 341| 
| 342| 342| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 343|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 343|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 344| 344| 	{
| 345| 345| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 346| 346| 		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
| 491| 491| 	mouseIsOverObject = (hoveredObject != null);
| 492| 492| 
| 493| 493| 	// Close the menu when interacting with the game world
| 494|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 495|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 494|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 495|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 496| 496| 		g_Menu.close();
| 497| 497| 
| 498| 498| 	// 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
| 652| 652| 		// user to continue building walls.
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655|    |-			case "mousemotion":
|    | 655|+		case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure 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
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655| 655| 			case "mousemotion":
| 656|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 656|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// 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
| 655| 655| 			case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 658|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// 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
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659|    |-				// the ending point and the starting point to snap to.
|    | 659|+			// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// 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
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660|    |-				//
|    | 660|+			//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// 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
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 661|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// 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
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 662|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// 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
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 663|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// 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
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 664|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
|    | [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| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 665|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				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
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666|    |-				// points.
|    | 666|+			// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				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
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 668|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				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
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 669|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
|    | [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| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671|    |-				if (result && result.cost)
|    | 671|+			if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					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
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672|    |-				{
|    | 672|+			{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						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
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 673|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						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
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674|    |-					placementSupport.tooltipMessage = [
|    | 674|+				placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].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
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675|    |-						getEntityCostTooltip(result),
|    | 675|+					getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
|    | [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
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676|    |-						getNeededResourcesTooltip(neededResources)
|    | 676|+					getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
|    | [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
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677|    |-					].filter(tip => tip).join("\n");
|    | 677|+				].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680| 680| 				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
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678|    |-				}
|    | 678|+			}
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
|    | [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
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680|    |-				break;
|    | 680|+			break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				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
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
| 682|    |-			case "mousebuttondown":
|    | 682|+		case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					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
| 680| 680| 				break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 683|+			if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					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
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684|    |-				{
|    | 684|+			{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
|    | [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
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 685|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						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
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686|    |-					if (tryPlaceWall(queued))
|    | 686|+				if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
|    | [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
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687|    |-					{
|    | 687|+				{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// 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
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688|    |-						if (queued)
|    | 688|+					if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							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
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689|    |-						{
|    | 689|+					{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							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
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690|    |-							// continue building, just set a new starting position where we left off
|    | 690|+						// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 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| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 691|+						placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							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
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692|    |-							placementSupport.wallEndPosition = undefined;
|    | 692|+						placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
|    | [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
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 694|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
|    | [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
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695|    |-						}
|    | 695|+					}
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							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
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696|    |-						else
|    | 696|+					else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							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
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697|    |-						{
|    | 697|+					{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [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
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
| 698|    |-							placementSupport.Reset();
|    | 698|+						placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
|    | [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
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699|    |-							inputState = INPUT_NORMAL;
|    | 699|+						inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
|    | [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
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 700|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					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
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701|    |-						}
|    | 701|+					}
| 702| 702| 					}
| 703| 703| 					else
| 704| 704| 						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
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702|    |-					}
|    | 702|+				}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
|    | [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| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703|    |-					else
|    | 703|+				else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					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
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
| 704|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 704|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					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
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706|    |-					updateBuildingPlacementPreview();
|    | 706|+				updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				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
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707|    |-					return true;
|    | 707|+				return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
|    | [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
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708|    |-				}
|    | 708|+			}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": 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
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 709|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// 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
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710|    |-				{
|    | 710|+			{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
|    | [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
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 711|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					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
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712|    |-					// reset to normal input mode
|    | 712|+				// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
|    | [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
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713|    |-					placementSupport.Reset();
|    | 713|+				placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					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
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					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
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716|    |-					inputState = INPUT_NORMAL;
|    | 716|+				inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719| 719| 				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
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717|    |-					return true;
|    | 717|+				return true;
| 718| 718| 				}
| 719| 719| 				break;
| 720| 720| 		}
|    | [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
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718|    |-				}
|    | 718|+			}
| 719| 719| 				break;
| 720| 720| 		}
| 721| 721| 		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
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719|    |-				break;
|    | 719|+			break;
| 720| 720| 		}
| 721| 721| 		break;
| 722| 722| 
|    | [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
| 858| 858| 			break;
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 861|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					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
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862|    |-				{
|    | 862|+			{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
|    | [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
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863|    |-					let now = Date.now();
|    | 863|+				let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						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
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 864|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
|    | [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
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865|    |-					{
|    | 865|+				{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							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
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 866|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							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
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867|    |-						{
|    | 867|+					{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
|    | [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
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868|    |-							var sptr = ev.hotkey.split(".");
|    | 868|+						var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
|    | [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
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869|    |-							performGroup("snap", sptr[3]);
|    | 869|+						performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					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
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870|    |-						}
|    | 870|+					}
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
|    | [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
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871|    |-					}
|    | 871|+				}
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						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
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872|    |-					else
|    | 872|+				else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						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
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
| 873|    |-					{
|    | 873|+				{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
|    | [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
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
| 874|    |-						var sptr = ev.hotkey.split(".");
|    | 874|+					var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						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
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875|    |-						performGroup(sptr[2], sptr[3]);
|    | 875|+					performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						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
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877|    |-						doublePressTimer = now;
|    | 877|+					doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
|    | [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
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878|    |-						prevHotkey = ev.hotkey;
|    | 878|+					prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881| 881| 				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
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879|    |-					}
|    | 879|+				}
| 880| 880| 				}
| 881| 881| 				break;
| 882| 882| 		}
|    | [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
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880|    |-				}
|    | 880|+			}
| 881| 881| 				break;
| 882| 882| 		}
| 883| 883| 		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
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881|    |-				break;
|    | 881|+			break;
| 882| 882| 		}
| 883| 883| 		break;
| 884| 884| 
|    | [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
|1612|1612| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1613|1613| 
|1614|1614| 	// Reset the last idle unit, etc., if the selection type has changed.
|1615|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1615|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1616|1616| 		resetIdleUnit();
|1617|1617| 	lastIdleClasses = classes;
|1618|1618| 

binaries/data/mods/public/gui/session/input.js
| 235| »   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
| 249| »   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
| 480| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 740| ·»   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 741| ·»   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 746| ·»   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

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

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

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

binaries/data/mods/public/gui/session/input.js
|1033| »   »   »   »   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
|1042| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1066| ·»   »   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1067| ·»   »   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1068| ·»   »   »   »   »   "z":·placementSupport.position.z,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1071| ·»   »   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 495| »   »   &&·(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
| 525| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 528| »   »   »   »   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
| 685| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 940| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
Executing section cli...

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

Freagarach added inline comments.Apr 2 2020, 4:10 PM
binaries/data/mods/public/simulation/components/Foundation.js
48 ↗(On Diff #11609)

On the first build attempt of an entity.

binaries/data/mods/public/simulation/components/GuiInterface.js
1587–1588 ↗(On Diff #10134)
if (entInfo.slot)
  validPlacement = true;
else
{
  rest of checks;
}

Like that?

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15 ↗(On Diff #11609)

(One can do svn cleanup --remove-unversioned.)

source/simulation2/components/CCmpRangeManager.cpp
1623–1624 ↗(On Diff #11617)

Not sure about this by the way. To have it after the scripted visibility.

Stan updated this revision to Diff 11619.Apr 2 2020, 5:04 PM
Stan marked 3 inline comments as done.

fix inlines

Stan marked an inline comment as done.Apr 2 2020, 5:04 PM
Stan added inline comments.
binaries/data/mods/public/simulation/components/Foundation.js
48 ↗(On Diff #11609)

Does that mean I can remove it?

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15 ↗(On Diff #11609)

Sure, one might also forget :D

source/simulation2/components/CCmpRangeManager.cpp
1623–1624 ↗(On Diff #11617)

Maybe @Angen know why.

Vulcan added a comment.Apr 2 2020, 5:11 PM

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1479|1479| 		// Check that all its members are selected
|1480|1480| 		var fid = formationIds[0];
|1481|1481| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1482|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1483|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1482|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1483|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1484|1484| 		{
|1485|1485| 			cmpFormation.DeleteTwinFormations();
|1486|1486| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1587|1587| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1588|1588| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1589|1589| 				if (matrix[i][j] < distSq)
|1590|    |-					closeClusters = [i,j];
|    |1590|+					closeClusters = [i, j];
|1591|1591| 
|1592|1592| 		// if no more close clusters found, just return all found clusters so far
|1593|1593| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1609|1609| 		}
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|    |-		clusters.splice(closeClusters[0],1);
|    |1612|+		clusters.splice(closeClusters[0], 1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|    |-		clusters.splice(closeClusters[1],1);
|    |1613|+		clusters.splice(closeClusters[1], 1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|    |-		matrix.splice(closeClusters[0],1);
|    |1614|+		matrix.splice(closeClusters[0], 1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|    |-		matrix.splice(closeClusters[1],1);
|    |1615|+		matrix.splice(closeClusters[1], 1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|    |-				matrix[i].splice(closeClusters[0],1);
|    |1619|+				matrix[i].splice(closeClusters[0], 1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|1621| 				matrix[i].splice(closeClusters[1],1);
|1622|1622| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|1619| 				matrix[i].splice(closeClusters[0],1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|    |-				matrix[i].splice(closeClusters[1],1);
|    |1621|+				matrix[i].splice(closeClusters[1], 1);
|1622|1622| 		}
|1623|1623| 		// add a new row of distances to the matrix and the new cluster
|1624|1624| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 788| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1275| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1506| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1585| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1602| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1616| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|  53| var·g_Commands·=·{
|    | [NORMAL] JSHintBear:
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 531| »   »   »   »   ····&&·player·!=·+cmd.owner)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
| 726| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 947| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 960| »   »   var·count·=·0;
|    | [NORMAL] JSHintBear:
|    | 'count' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1107| »   »   var·cmpGuiInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGuiInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1361| »   »   var·piece·=·pieces[j];
|    | [NORMAL] JSHintBear:
|    | 'piece' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1444| »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1483| »   »   »   &&·cmpFormation.GetMemberCount()·==·formation.entities.length)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
|1509| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1542| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 826| 826| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 827| 827| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 828| 828| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 829|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 829|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 830| 830| 	}
| 831| 831| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 832| 832| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '='.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1246|1246| 	if (cmd.snapSlots)
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|    |-		let snapRadiusMultiplier  = 0.5;
|    |1249|+		let snapRadiusMultiplier = 0.5;
|1250|1250| 		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|    | [NORMAL] ESLintBear (semi-spacing):
|    | Unexpected whitespace before semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|1249| 		let snapRadiusMultiplier  = 0.5;
|1250|    |-		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|    |1250|+		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|1253|1253| 			"z": start.pos.z,
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1683|1683| 			{
|1684|1684| 				minDist2 = dist2;
|1685|1685| 				minDistEntitySnapData = {
|1686|    |-						"x": pos.x,
|    |1686|+					"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1684|1684| 				minDist2 = dist2;
|1685|1685| 				minDistEntitySnapData = {
|1686|1686| 						"x": pos.x,
|1687|    |-						"z": pos.z,
|    |1687|+					"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|1690|1690| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1685|1685| 				minDistEntitySnapData = {
|1686|1686| 						"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|    |-						"angle": cmpPosition.GetRotation().y,
|    |1688|+					"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|1690|1690| 				};
|1691|1691| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1686|1686| 						"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|    |-						"ent": ent
|    |1689|+					"ent": ent
|1690|1690| 				};
|1691|1691| 			}
|1692|1692| 		}
|    | [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
| 340| 340| 	}
| 341| 341| 
| 342| 342| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 343|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 343|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 344| 344| 	{
| 345| 345| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 346| 346| 		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
| 491| 491| 	mouseIsOverObject = (hoveredObject != null);
| 492| 492| 
| 493| 493| 	// Close the menu when interacting with the game world
| 494|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 495|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 494|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 495|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 496| 496| 		g_Menu.close();
| 497| 497| 
| 498| 498| 	// 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
| 652| 652| 		// user to continue building walls.
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655|    |-			case "mousemotion":
|    | 655|+		case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure 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
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655| 655| 			case "mousemotion":
| 656|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 656|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// 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
| 655| 655| 			case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 658|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// 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
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659|    |-				// the ending point and the starting point to snap to.
|    | 659|+			// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// 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
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660|    |-				//
|    | 660|+			//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// 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
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 661|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// 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
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 662|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// 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
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 663|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// 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
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 664|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
|    | [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| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 665|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				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
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666|    |-				// points.
|    | 666|+			// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				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
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 668|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				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
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 669|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
|    | [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| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671|    |-				if (result && result.cost)
|    | 671|+			if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					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
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672|    |-				{
|    | 672|+			{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						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
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 673|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						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
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674|    |-					placementSupport.tooltipMessage = [
|    | 674|+				placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].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
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675|    |-						getEntityCostTooltip(result),
|    | 675|+					getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
|    | [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
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676|    |-						getNeededResourcesTooltip(neededResources)
|    | 676|+					getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
|    | [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
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677|    |-					].filter(tip => tip).join("\n");
|    | 677|+				].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680| 680| 				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
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678|    |-				}
|    | 678|+			}
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
|    | [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
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680|    |-				break;
|    | 680|+			break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				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
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
| 682|    |-			case "mousebuttondown":
|    | 682|+		case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					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
| 680| 680| 				break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 683|+			if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					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
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684|    |-				{
|    | 684|+			{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
|    | [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
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 685|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						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
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686|    |-					if (tryPlaceWall(queued))
|    | 686|+				if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
|    | [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
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687|    |-					{
|    | 687|+				{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// 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
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688|    |-						if (queued)
|    | 688|+					if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							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
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689|    |-						{
|    | 689|+					{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							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
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690|    |-							// continue building, just set a new starting position where we left off
|    | 690|+						// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 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| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 691|+						placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							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
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692|    |-							placementSupport.wallEndPosition = undefined;
|    | 692|+						placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
|    | [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
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 694|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
|    | [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
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695|    |-						}
|    | 695|+					}
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							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
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696|    |-						else
|    | 696|+					else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							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
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697|    |-						{
|    | 697|+					{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [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
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
| 698|    |-							placementSupport.Reset();
|    | 698|+						placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
|    | [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
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699|    |-							inputState = INPUT_NORMAL;
|    | 699|+						inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
|    | [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
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 700|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					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
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701|    |-						}
|    | 701|+					}
| 702| 702| 					}
| 703| 703| 					else
| 704| 704| 						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
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702|    |-					}
|    | 702|+				}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
|    | [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| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703|    |-					else
|    | 703|+				else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					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
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
| 704|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 704|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					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
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706|    |-					updateBuildingPlacementPreview();
|    | 706|+				updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				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
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707|    |-					return true;
|    | 707|+				return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
|    | [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
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708|    |-				}
|    | 708|+			}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": 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
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 709|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// 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
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710|    |-				{
|    | 710|+			{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
|    | [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
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 711|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					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
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712|    |-					// reset to normal input mode
|    | 712|+				// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
|    | [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
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713|    |-					placementSupport.Reset();
|    | 713|+				placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					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
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					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
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716|    |-					inputState = INPUT_NORMAL;
|    | 716|+				inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719| 719| 				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
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717|    |-					return true;
|    | 717|+				return true;
| 718| 718| 				}
| 719| 719| 				break;
| 720| 720| 		}
|    | [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
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718|    |-				}
|    | 718|+			}
| 719| 719| 				break;
| 720| 720| 		}
| 721| 721| 		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
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719|    |-				break;
|    | 719|+			break;
| 720| 720| 		}
| 721| 721| 		break;
| 722| 722| 
|    | [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
| 858| 858| 			break;
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 861|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					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
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862|    |-				{
|    | 862|+			{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
|    | [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
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863|    |-					let now = Date.now();
|    | 863|+				let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						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
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 864|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
|    | [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
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865|    |-					{
|    | 865|+				{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							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
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 866|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							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
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867|    |-						{
|    | 867|+					{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
|    | [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
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868|    |-							var sptr = ev.hotkey.split(".");
|    | 868|+						var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
|    | [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
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869|    |-							performGroup("snap", sptr[3]);
|    | 869|+						performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					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
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870|    |-						}
|    | 870|+					}
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
|    | [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
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871|    |-					}
|    | 871|+				}
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						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
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872|    |-					else
|    | 872|+				else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						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
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
| 873|    |-					{
|    | 873|+				{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
|    | [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
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
| 874|    |-						var sptr = ev.hotkey.split(".");
|    | 874|+					var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						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
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875|    |-						performGroup(sptr[2], sptr[3]);
|    | 875|+					performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						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
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877|    |-						doublePressTimer = now;
|    | 877|+					doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
|    | [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
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878|    |-						prevHotkey = ev.hotkey;
|    | 878|+					prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881| 881| 				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
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879|    |-					}
|    | 879|+				}
| 880| 880| 				}
| 881| 881| 				break;
| 882| 882| 		}
|    | [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
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880|    |-				}
|    | 880|+			}
| 881| 881| 				break;
| 882| 882| 		}
| 883| 883| 		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
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881|    |-				break;
|    | 881|+			break;
| 882| 882| 		}
| 883| 883| 		break;
| 884| 884| 
|    | [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
|1612|1612| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1613|1613| 
|1614|1614| 	// Reset the last idle unit, etc., if the selection type has changed.
|1615|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1615|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1616|1616| 		resetIdleUnit();
|1617|1617| 	lastIdleClasses = classes;
|1618|1618| 

binaries/data/mods/public/gui/session/input.js
| 235| »   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
| 249| »   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
| 480| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 740| ·»   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 741| ·»   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 746| ·»   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

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

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

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

binaries/data/mods/public/gui/session/input.js
|1033| »   »   »   »   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
|1042| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1066| ·»   »   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1067| ·»   »   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1068| ·»   »   »   »   »   "z":·placementSupport.position.z,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1071| ·»   »   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 495| »   »   &&·(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
| 525| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 528| »   »   »   »   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
| 685| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 940| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 169| 169| 	this.totalBuilderRate += buildRate;
| 170| 170| 
| 171| 171| 	return true;
| 172|    |-}
|    | 172|+};
| 173| 173| 
| 174| 174| /**
| 175| 175|  * Adds a builder to the counter.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 204| 204| 		cmpVisual.SetVariable("numbuilders", this.builders.size);
| 205| 205| 
| 206| 206| 	Engine.PostMessage(this.entity, MT_FoundationBuildersChanged, { "to": this.GetBuilders() });
| 207|    |-}
|    | 207|+};
| 208| 208| 
| 209| 209| /**
| 210| 210|  * The build multiplier is a penalty that is applied to each builder.

binaries/data/mods/public/simulation/components/Foundation.js
| 172| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 207| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 377| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 379| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
Executing section cli...

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

Freagarach added inline comments.Apr 2 2020, 5:17 PM
binaries/data/mods/public/gui/session/placement.js
22 ↗(On Diff #11619)

this.wallSlots

binaries/data/mods/public/simulation/components/GuiInterface.js
2002–2009 ↗(On Diff #11619)

It can't find start here.

Stan updated this revision to Diff 11620.Apr 2 2020, 5:22 PM
Stan marked an inline comment as done.

Fix some inlines

Stan marked an inline comment as done.Apr 2 2020, 5:22 PM
Stan added inline comments.
binaries/data/mods/public/simulation/components/GuiInterface.js
2002–2009 ↗(On Diff #11619)

Duh

Silier added inline comments.Apr 2 2020, 5:24 PM
source/simulation2/components/CCmpRangeManager.cpp
1623–1624 ↗(On Diff #11617)

because else with revealed map, observer mod, current ai visibility one would see tower spots all the time

Freagarach added inline comments.Apr 2 2020, 5:26 PM
source/simulation2/components/CCmpRangeManager.cpp
1623–1624 ↗(On Diff #11617)

Yes, that I figured, but does/can it have unintended side effects?

Vulcan added a comment.Apr 2 2020, 5:31 PM

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1479|1479| 		// Check that all its members are selected
|1480|1480| 		var fid = formationIds[0];
|1481|1481| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1482|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1483|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1482|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1483|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1484|1484| 		{
|1485|1485| 			cmpFormation.DeleteTwinFormations();
|1486|1486| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1587|1587| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1588|1588| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1589|1589| 				if (matrix[i][j] < distSq)
|1590|    |-					closeClusters = [i,j];
|    |1590|+					closeClusters = [i, j];
|1591|1591| 
|1592|1592| 		// if no more close clusters found, just return all found clusters so far
|1593|1593| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1609|1609| 		}
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|    |-		clusters.splice(closeClusters[0],1);
|    |1612|+		clusters.splice(closeClusters[0], 1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|    |-		clusters.splice(closeClusters[1],1);
|    |1613|+		clusters.splice(closeClusters[1], 1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|    |-		matrix.splice(closeClusters[0],1);
|    |1614|+		matrix.splice(closeClusters[0], 1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|    |-		matrix.splice(closeClusters[1],1);
|    |1615|+		matrix.splice(closeClusters[1], 1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|    |-				matrix[i].splice(closeClusters[0],1);
|    |1619|+				matrix[i].splice(closeClusters[0], 1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|1621| 				matrix[i].splice(closeClusters[1],1);
|1622|1622| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|1619| 				matrix[i].splice(closeClusters[0],1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|    |-				matrix[i].splice(closeClusters[1],1);
|    |1621|+				matrix[i].splice(closeClusters[1], 1);
|1622|1622| 		}
|1623|1623| 		// add a new row of distances to the matrix and the new cluster
|1624|1624| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 788| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1275| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1506| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1585| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1602| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1616| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|  53| var·g_Commands·=·{
|    | [NORMAL] JSHintBear:
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 531| »   »   »   »   ····&&·player·!=·+cmd.owner)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
| 726| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 947| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 960| »   »   var·count·=·0;
|    | [NORMAL] JSHintBear:
|    | 'count' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1107| »   »   var·cmpGuiInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGuiInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1361| »   »   var·piece·=·pieces[j];
|    | [NORMAL] JSHintBear:
|    | 'piece' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1444| »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1483| »   »   »   &&·cmpFormation.GetMemberCount()·==·formation.entities.length)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
|1509| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1542| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 169| 169| 	this.totalBuilderRate += buildRate;
| 170| 170| 
| 171| 171| 	return true;
| 172|    |-}
|    | 172|+};
| 173| 173| 
| 174| 174| /**
| 175| 175|  * Adds a builder to the counter.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 204| 204| 		cmpVisual.SetVariable("numbuilders", this.builders.size);
| 205| 205| 
| 206| 206| 	Engine.PostMessage(this.entity, MT_FoundationBuildersChanged, { "to": this.GetBuilders() });
| 207|    |-}
|    | 207|+};
| 208| 208| 
| 209| 209| /**
| 210| 210|  * The build multiplier is a penalty that is applied to each builder.

binaries/data/mods/public/simulation/components/Foundation.js
| 172| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 207| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 377| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 379| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [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
| 340| 340| 	}
| 341| 341| 
| 342| 342| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 343|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 343|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 344| 344| 	{
| 345| 345| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 346| 346| 		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
| 491| 491| 	mouseIsOverObject = (hoveredObject != null);
| 492| 492| 
| 493| 493| 	// Close the menu when interacting with the game world
| 494|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 495|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 494|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 495|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 496| 496| 		g_Menu.close();
| 497| 497| 
| 498| 498| 	// 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
| 652| 652| 		// user to continue building walls.
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655|    |-			case "mousemotion":
|    | 655|+		case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure 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
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655| 655| 			case "mousemotion":
| 656|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 656|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// 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
| 655| 655| 			case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 658|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// 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
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659|    |-				// the ending point and the starting point to snap to.
|    | 659|+			// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// 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
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660|    |-				//
|    | 660|+			//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// 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
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 661|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// 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
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 662|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// 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
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 663|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// 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
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 664|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
|    | [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| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 665|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				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
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666|    |-				// points.
|    | 666|+			// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				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
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 668|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				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
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 669|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
|    | [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| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671|    |-				if (result && result.cost)
|    | 671|+			if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					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
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672|    |-				{
|    | 672|+			{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						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
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 673|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						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
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674|    |-					placementSupport.tooltipMessage = [
|    | 674|+				placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].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
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675|    |-						getEntityCostTooltip(result),
|    | 675|+					getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
|    | [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
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676|    |-						getNeededResourcesTooltip(neededResources)
|    | 676|+					getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
|    | [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
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677|    |-					].filter(tip => tip).join("\n");
|    | 677|+				].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680| 680| 				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
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678|    |-				}
|    | 678|+			}
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
|    | [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
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680|    |-				break;
|    | 680|+			break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				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
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
| 682|    |-			case "mousebuttondown":
|    | 682|+		case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					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
| 680| 680| 				break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 683|+			if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					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
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684|    |-				{
|    | 684|+			{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
|    | [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
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 685|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						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
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686|    |-					if (tryPlaceWall(queued))
|    | 686|+				if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
|    | [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
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687|    |-					{
|    | 687|+				{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// 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
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688|    |-						if (queued)
|    | 688|+					if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							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
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689|    |-						{
|    | 689|+					{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							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
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690|    |-							// continue building, just set a new starting position where we left off
|    | 690|+						// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 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| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 691|+						placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							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
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692|    |-							placementSupport.wallEndPosition = undefined;
|    | 692|+						placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
|    | [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
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 694|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
|    | [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
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695|    |-						}
|    | 695|+					}
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							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
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696|    |-						else
|    | 696|+					else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							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
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697|    |-						{
|    | 697|+					{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [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
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
| 698|    |-							placementSupport.Reset();
|    | 698|+						placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
|    | [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
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699|    |-							inputState = INPUT_NORMAL;
|    | 699|+						inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
|    | [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
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 700|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					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
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701|    |-						}
|    | 701|+					}
| 702| 702| 					}
| 703| 703| 					else
| 704| 704| 						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
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702|    |-					}
|    | 702|+				}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
|    | [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| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703|    |-					else
|    | 703|+				else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					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
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
| 704|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 704|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					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
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706|    |-					updateBuildingPlacementPreview();
|    | 706|+				updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				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
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707|    |-					return true;
|    | 707|+				return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
|    | [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
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708|    |-				}
|    | 708|+			}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": 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
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 709|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// 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
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710|    |-				{
|    | 710|+			{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
|    | [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
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 711|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					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
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712|    |-					// reset to normal input mode
|    | 712|+				// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
|    | [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
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713|    |-					placementSupport.Reset();
|    | 713|+				placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					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
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					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
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716|    |-					inputState = INPUT_NORMAL;
|    | 716|+				inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719| 719| 				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
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717|    |-					return true;
|    | 717|+				return true;
| 718| 718| 				}
| 719| 719| 				break;
| 720| 720| 		}
|    | [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
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718|    |-				}
|    | 718|+			}
| 719| 719| 				break;
| 720| 720| 		}
| 721| 721| 		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
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719|    |-				break;
|    | 719|+			break;
| 720| 720| 		}
| 721| 721| 		break;
| 722| 722| 
|    | [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
| 858| 858| 			break;
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 861|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					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
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862|    |-				{
|    | 862|+			{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
|    | [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
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863|    |-					let now = Date.now();
|    | 863|+				let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						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
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 864|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
|    | [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
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865|    |-					{
|    | 865|+				{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							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
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 866|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							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
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867|    |-						{
|    | 867|+					{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
|    | [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
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868|    |-							var sptr = ev.hotkey.split(".");
|    | 868|+						var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
|    | [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
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869|    |-							performGroup("snap", sptr[3]);
|    | 869|+						performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					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
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870|    |-						}
|    | 870|+					}
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
|    | [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
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871|    |-					}
|    | 871|+				}
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						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
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872|    |-					else
|    | 872|+				else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						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
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
| 873|    |-					{
|    | 873|+				{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
|    | [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
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
| 874|    |-						var sptr = ev.hotkey.split(".");
|    | 874|+					var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						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
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875|    |-						performGroup(sptr[2], sptr[3]);
|    | 875|+					performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						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
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877|    |-						doublePressTimer = now;
|    | 877|+					doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
|    | [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
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878|    |-						prevHotkey = ev.hotkey;
|    | 878|+					prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881| 881| 				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
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879|    |-					}
|    | 879|+				}
| 880| 880| 				}
| 881| 881| 				break;
| 882| 882| 		}
|    | [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
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880|    |-				}
|    | 880|+			}
| 881| 881| 				break;
| 882| 882| 		}
| 883| 883| 		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
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881|    |-				break;
|    | 881|+			break;
| 882| 882| 		}
| 883| 883| 		break;
| 884| 884| 
|    | [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
|1612|1612| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1613|1613| 
|1614|1614| 	// Reset the last idle unit, etc., if the selection type has changed.
|1615|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1615|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1616|1616| 		resetIdleUnit();
|1617|1617| 	lastIdleClasses = classes;
|1618|1618| 

binaries/data/mods/public/gui/session/input.js
| 235| »   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
| 249| »   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
| 480| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 740| ·»   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 741| ·»   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 746| ·»   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

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

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

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

binaries/data/mods/public/gui/session/input.js
|1033| »   »   »   »   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
|1042| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1066| ·»   »   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1067| ·»   »   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1068| ·»   »   »   »   »   "z":·placementSupport.position.z,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1071| ·»   »   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 495| »   »   &&·(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
| 525| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 528| »   »   »   »   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
| 685| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 940| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 826| 826| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 827| 827| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 828| 828| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 829|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 829|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 830| 830| 	}
| 831| 831| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 832| 832| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '='.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1246|1246| 	if (cmd.snapSlots)
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|    |-		let snapRadiusMultiplier  = 0.5;
|    |1249|+		let snapRadiusMultiplier = 0.5;
|1250|1250| 		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|    | [NORMAL] ESLintBear (semi-spacing):
|    | Unexpected whitespace before semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|1249| 		let snapRadiusMultiplier  = 0.5;
|1250|    |-		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|    |1250|+		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|1253|1253| 			"z": start.pos.z,
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1683|1683| 			{
|1684|1684| 				minDist2 = dist2;
|1685|1685| 				minDistEntitySnapData = {
|1686|    |-						"x": pos.x,
|    |1686|+					"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1684|1684| 				minDist2 = dist2;
|1685|1685| 				minDistEntitySnapData = {
|1686|1686| 						"x": pos.x,
|1687|    |-						"z": pos.z,
|    |1687|+					"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|1690|1690| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1685|1685| 				minDistEntitySnapData = {
|1686|1686| 						"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|    |-						"angle": cmpPosition.GetRotation().y,
|    |1688|+					"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|1690|1690| 				};
|1691|1691| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1686|1686| 						"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|    |-						"ent": ent
|    |1689|+					"ent": ent
|1690|1690| 				};
|1691|1691| 			}
|1692|1692| 		}
Executing section cli...

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

Silier added a comment.EditedApr 3 2020, 9:02 AM

What I was thinking was something like sockets, but with the visibility switching. They would spawn with every wall tower placement and get tower foundation assigned immediately by code. But would need to keep track of assigned wall parts. If no wall connected, it would be destroyed.

This could be better:
Or every wall would keep track of assigned towers. If assigned tower to wall would be missing and it wall building mode, it would display socket as locale entity like building preview is done and then destroyed. If tower would be destroyed or foundation would be placed, walls would update missing tower status.

Only reason they are not locale entities and cpp changes are needed is that now it needs to get list of them, but that would not be needed.

binaries/data/mods/public/simulation/components/Foundation.js
48 ↗(On Diff #11609)

But then one can place multiple tower foundations.

Stan marked an inline comment as done.Apr 3 2020, 2:29 PM

Feel free to commandeer @Angen

Silier added a comment.Apr 3 2020, 2:58 PM

(I was commenting with my thoughts how to do it, because I do not have this high at my priority list right now, so one can take over if feels)

Silier resigned from this revision.Jul 31 2023, 5:23 PM

When will this patch be available?

nifa added a subscriber: nifa.Aug 1 2023, 6:45 PM