Page MenuHomeWildfire Games

[WIP] - Building Sockets.
Needs ReviewPublic

Authored by Freagarach on Oct 18 2019, 10:47 PM.
This revision needs review, but there are no reviewers specified.

Details

Reviewers
None
Summary

This is a try at being able to use sockets for placing buildings.
Feedback is welcome and anyone who wants to give it a shot by themself is encouraged to commandeer ;)


Refs:

Test Plan

Place a socket, try to build a building on top. Or something like that,,,

Event Timeline

Freagarach created this revision.Oct 18 2019, 10:47 PM
Owners added a subscriber: Restricted Owners Package.Oct 18 2019, 10:47 PM

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

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

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

Linter detected issues:
Executing section Source...

source/simulation2/components/ICmpObstructionManager.h
|  53| class·ICmpObstructionManager·:·public·IComponent
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'classICmpObstructionManager:' is invalid C code. Use --std or --language to configure the language.

source/simulation2/components/ICmpObstruction.h
|  29| class·ICmpObstruction·:·public·IComponent
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'classICmpObstruction:' is invalid C code. Use --std or --language to configure the language.

source/simulation2/components/ICmpObstruction.cpp
|   1| /*·Copyright·(C)·2018·Wildfire·Games.
|    | [NORMAL] LicenseYearBear:
|    | License should have "2019" year instead of "2018"
Executing section JS...
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 0.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 153| 153| 	}
| 154| 154| 	else if (passClassName == "socket")
| 155| 155| 	{
| 156|    |-//		ret = cmpObstruction.CheckFoundation(passClassName, false, this.template.Socket);
|    | 156|+		//		ret = cmpObstruction.CheckFoundation(passClassName, false, this.template.Socket);
| 157| 157| //return result;
| 158| 158| 	}
| 159| 159| 	else
|    | [NORMAL] ESLintBear (spaced-comment):
|    | Expected space or tab after '//' in comment.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 154| 154| 	else if (passClassName == "socket")
| 155| 155| 	{
| 156| 156| //		ret = cmpObstruction.CheckFoundation(passClassName, false, this.template.Socket);
| 157|    |-//return result;
|    | 157|+// return result;
| 158| 158| 	}
| 159| 159| 	else
| 160| 160| 	{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 0.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 154| 154| 	else if (passClassName == "socket")
| 155| 155| 	{
| 156| 156| //		ret = cmpObstruction.CheckFoundation(passClassName, false, this.template.Socket);
| 157|    |-//return result;
|    | 157|+		//return result;
| 158| 158| 	}
| 159| 159| 	else
| 160| 160| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 235| 235| 		result.message = markForTranslation("%(name)s cannot be built in %(territoryType)s territory. Valid territories: %(validTerritories)s");
| 236| 236| 		result.translateParameters.push("territoryType");
| 237| 237| 		result.translateParameters.push("validTerritories");
| 238|    |-		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
|    | 238|+		result.parameters.territoryType = { "context": "Territory type", "message": invalidTerritory};
| 239| 239| 		// gui code will join this array to a string
| 240| 240| 		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
| 241| 241| 		return result;	// Fail
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 235| 235| 		result.message = markForTranslation("%(name)s cannot be built in %(territoryType)s territory. Valid territories: %(validTerritories)s");
| 236| 236| 		result.translateParameters.push("territoryType");
| 237| 237| 		result.translateParameters.push("validTerritories");
| 238|    |-		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
|    | 238|+		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory };
| 239| 239| 		// gui code will join this array to a string
| 240| 240| 		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
| 241| 241| 		return result;	// Fail
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 237| 237| 		result.translateParameters.push("validTerritories");
| 238| 238| 		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
| 239| 239| 		// gui code will join this array to a string
| 240|    |-		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
|    | 240|+		result.parameters.validTerritories = { "context": "Territory type list", "list": this.GetTerritories()};
| 241| 241| 		return result;	// Fail
| 242| 242| 	}
| 243| 243| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 237| 237| 		result.translateParameters.push("validTerritories");
| 238| 238| 		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
| 239| 239| 		// gui code will join this array to a string
| 240|    |-		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
|    | 240|+		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories() };
| 241| 241| 		return result;	// Fail
| 242| 242| 	}
| 243| 243| 

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 166| »   »   switch·(ret)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 268| »   »   »   var·cmpIdentity·=·Engine.QueryInterface(id,·IID_Identity);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'cmpIdentity' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 277| »   »   »   »   let·result·=·markForPluralTranslation(
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'result' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 298| »   »   »   »   let·result·=·markForPluralTranslation(
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'result' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 188| »   var·cmpPlayer·=·QueryOwnerInterface(this.entity,·IID_Player);
|    | [NORMAL] JSHintBear:
|    | 'cmpPlayer' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 262| »   »   var·cmpRangeManager·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_RangeManager);
|    | [NORMAL] JSHintBear:
|    | 'cmpRangeManager' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 263| »   »   var·cmpPlayer·=·QueryOwnerInterface(this.entity,·IID_Player);
|    | [NORMAL] JSHintBear:
|    | 'cmpPlayer' is already defined.
Executing section cli...

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

Stan added a subscriber: Stan.Oct 19 2019, 1:19 AM

The Settlement.js class should be updated/deleted/renamed :)

Some changes must be made to input js for snapping I guess .

I compleately overlooked Settlement.js,,,
A socket building only should check for the socket to exist and whether it is obstructed, not the type of terrain, IMHO.
Furthermore it should have a special check in BuildRestrictions.js, similar to the shore-check, whether the location is within a socket (cmpObstruction.CheckSlotPlacement(SlotTemplate)?).
Snapping should be indeed introduced and can (partly?) be reused from the wall snapping.

Freagarach edited the summary of this revision. (Show Details)
  • Renamed Settlement.js.
  • Every terrain as long as a socket exists (sockets not yet implemented).
  • cmpObstruction.CheckSocketPlacement(SlotTemplate). <- Not used yet.
Freagarach added inline comments.Oct 19 2019, 11:16 PM
source/simulation2/components/CCmpObstruction.cpp
612 ↗(On Diff #10180)

This does not work :(

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

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

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

Linter detected issues:
Executing section Source...

source/simulation2/components/ICmpObstructionManager.h
|  53| class·ICmpObstructionManager·:·public·IComponent
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'classICmpObstructionManager:' is invalid C code. Use --std or --language to configure the language.

source/simulation2/components/tests/test_ObstructionManager.h
|  23| class·MockObstruction·:·public·ICmpObstruction
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'classMockObstruction:' is invalid C code. Use --std or --language to configure the language.

source/simulation2/components/ICmpObstruction.h
|  29| class·ICmpObstruction·:·public·IComponent
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'classICmpObstruction:' is invalid C code. Use --std or --language to configure the language.
Executing section JS...
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 1 tab but found 0.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  13|  13| 			"</element>";
|  14|  14| 	}
|  15|  15| 
|  16|    |-/*
|    |  16|+	/*
|  17|  17|  * TODO: the vague plan is that this should keep track of who currently owns the settlement,
|  18|  18|  * and some other code can detect this (or get notified of changes) when it needs to.
|  19|  19|  * A civcenter's BuildRestrictions component will see that it's being built on this settlement,
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  25|  25| 	Init()
|  26|  26| 	{
|  27|  27| 		this.owner = INVALID_PLAYER;
|  28|    |-	};
|    |  28|+	}
|  29|  29| 
|  30|  30| 	/**
|  31|  31| 	 * Initialises construction, thus rendering this socket useless.
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  49|  49| 		cmpPosition.MoveOutOfWorld();
|  50|  50| 
|  51|  51| 		return true;
|  52|    |-	};
|    |  52|+	}
|  53|  53| 
|  54|  54| 	/**
|  55|  55| 	 * Resets this socket by setting the owner to -1 and moving back to its former position.
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  67|  67| 
|  68|  68| 		cmpPosition.JumpTo(this.previousPosition.x, this.previousPosition.z);
|  69|  69| 		delete this.previousPosition;
|  70|    |-	};
|    |  70|+	}
|  71|  71| 
|  72|  72| 	/**
|  73|  73| 	 * Get the current owner.

binaries/data/mods/public/simulation/components/BuildSlot.js
|  28| »   };
|    | [NORMAL] JSHintBear:
|    | Unnecessary semicolon.

binaries/data/mods/public/simulation/components/BuildSlot.js
|  52| »   };
|    | [NORMAL] JSHintBear:
|    | Unnecessary semicolon.

binaries/data/mods/public/simulation/components/BuildSlot.js
|  70| »   };
|    | [NORMAL] JSHintBear:
|    | Unnecessary semicolon.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 173| »   »   switch·(ret)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 280| »   »   »   var·cmpIdentity·=·Engine.QueryInterface(id,·IID_Identity);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'cmpIdentity' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 289| »   »   »   »   let·result·=·markForPluralTranslation(
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'result' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 310| »   »   »   »   let·result·=·markForPluralTranslation(
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'result' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 191| »   var·cmpPlayer·=·QueryOwnerInterface(this.entity,·IID_Player);
|    | [NORMAL] JSHintBear:
|    | 'cmpPlayer' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 274| »   »   var·cmpRangeManager·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_RangeManager);
|    | [NORMAL] JSHintBear:
|    | 'cmpRangeManager' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 275| »   »   var·cmpPlayer·=·QueryOwnerInterface(this.entity,·IID_Player);
|    | [NORMAL] JSHintBear:
|    | 'cmpPlayer' is already defined.
Executing section cli...

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

Freagarach planned changes to this revision.Nov 11 2019, 12:12 PM

To js.

Freagarach updated this revision to Diff 11458.Fri, Mar 6, 7:25 PM
Freagarach edited the summary of this revision. (Show Details)
Freagarach edited the test plan for this revision. (Show Details)

Moved to JS, it is partly functioning now.

Owners added subscribers: Restricted Owners Package, Restricted Owners Package.Fri, Mar 6, 7:25 PM
Vulcan added a comment.Fri, Mar 6, 7:39 PM

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

Linter detected issues:
Executing section Source...

source/simulation2/scripting/JSInterface_Simulation.h
|  25| namespace·JSI_Simulation
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'namespaceJSI_Simulation{' is invalid C code. Use --std or --language to configure the language.
Executing section JS...
|    | [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
| 345| 345| 	}
| 346| 346| 
| 347| 347| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 348|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 348|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 349| 349| 	{
| 350| 350| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 351| 351| 		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
| 495| 495| 	mouseIsOverObject = (hoveredObject != null);
| 496| 496| 
| 497| 497| 	// Close the menu when interacting with the game world
| 498|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 499|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 498|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 499|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 500| 500| 		g_Menu.close();
| 501| 501| 
| 502| 502| 	// 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
| 656| 656| 		// user to continue building walls.
| 657| 657| 		switch (ev.type)
| 658| 658| 		{
| 659|    |-			case "mousemotion":
|    | 659|+		case "mousemotion":
| 660| 660| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 661| 661| 
| 662| 662| 				// 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
| 657| 657| 		switch (ev.type)
| 658| 658| 		{
| 659| 659| 			case "mousemotion":
| 660|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 660|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 661| 661| 
| 662| 662| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 663| 663| 				// 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
| 659| 659| 			case "mousemotion":
| 660| 660| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 661| 661| 
| 662|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 662|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 663| 663| 				// the ending point and the starting point to snap to.
| 664| 664| 				//
| 665| 665| 				// 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
| 660| 660| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 661| 661| 
| 662| 662| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 663|    |-				// the ending point and the starting point to snap to.
|    | 663|+			// the ending point and the starting point to snap to.
| 664| 664| 				//
| 665| 665| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 666| 666| 				// 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
| 661| 661| 
| 662| 662| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 663| 663| 				// the ending point and the starting point to snap to.
| 664|    |-				//
|    | 664|+			//
| 665| 665| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 666| 666| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 667| 667| 				// 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
| 662| 662| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 663| 663| 				// the ending point and the starting point to snap to.
| 664| 664| 				//
| 665|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 665|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 666| 666| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 667| 667| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 668| 668| 				// 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
| 663| 663| 				// the ending point and the starting point to snap to.
| 664| 664| 				//
| 665| 665| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 666|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 666|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 667| 667| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 668| 668| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 669| 669| 				// 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
| 664| 664| 				//
| 665| 665| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 666| 666| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 667|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 667|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 668| 668| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 669| 669| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 670| 670| 				// 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
| 665| 665| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 666| 666| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 667| 667| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 668|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 668|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 669| 669| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 670| 670| 				// points.
| 671| 671| 
|    | [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| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 667| 667| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 668| 668| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 669|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 669|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 670| 670| 				// points.
| 671| 671| 
| 672| 672| 				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
| 667| 667| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 668| 668| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 669| 669| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 670|    |-				// points.
|    | 670|+			// points.
| 671| 671| 
| 672| 672| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 673| 673| 				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
| 669| 669| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 670| 670| 				// points.
| 671| 671| 
| 672|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 672|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 673| 673| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 674| 674| 
| 675| 675| 				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
| 670| 670| 				// points.
| 671| 671| 
| 672| 672| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 673|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 673|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 674| 674| 
| 675| 675| 				if (result && result.cost)
| 676| 676| 				{
|    | [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| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 673| 673| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 674| 674| 
| 675|    |-				if (result && result.cost)
|    | 675|+			if (result && result.cost)
| 676| 676| 				{
| 677| 677| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 678| 678| 					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
| 673| 673| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 674| 674| 
| 675| 675| 				if (result && result.cost)
| 676|    |-				{
|    | 676|+			{
| 677| 677| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 678| 678| 					placementSupport.tooltipMessage = [
| 679| 679| 						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
| 674| 674| 
| 675| 675| 				if (result && result.cost)
| 676| 676| 				{
| 677|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 677|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 678| 678| 					placementSupport.tooltipMessage = [
| 679| 679| 						getEntityCostTooltip(result),
| 680| 680| 						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
| 675| 675| 				if (result && result.cost)
| 676| 676| 				{
| 677| 677| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 678|    |-					placementSupport.tooltipMessage = [
|    | 678|+				placementSupport.tooltipMessage = [
| 679| 679| 						getEntityCostTooltip(result),
| 680| 680| 						getNeededResourcesTooltip(neededResources)
| 681| 681| 					].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
| 676| 676| 				{
| 677| 677| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 678| 678| 					placementSupport.tooltipMessage = [
| 679|    |-						getEntityCostTooltip(result),
|    | 679|+					getEntityCostTooltip(result),
| 680| 680| 						getNeededResourcesTooltip(neededResources)
| 681| 681| 					].filter(tip => tip).join("\n");
| 682| 682| 				}
|    | [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| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 678| 678| 					placementSupport.tooltipMessage = [
| 679| 679| 						getEntityCostTooltip(result),
| 680|    |-						getNeededResourcesTooltip(neededResources)
|    | 680|+					getNeededResourcesTooltip(neededResources)
| 681| 681| 					].filter(tip => tip).join("\n");
| 682| 682| 				}
| 683| 683| 
|    | [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
| 678| 678| 					placementSupport.tooltipMessage = [
| 679| 679| 						getEntityCostTooltip(result),
| 680| 680| 						getNeededResourcesTooltip(neededResources)
| 681|    |-					].filter(tip => tip).join("\n");
|    | 681|+				].filter(tip => tip).join("\n");
| 682| 682| 				}
| 683| 683| 
| 684| 684| 				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
| 679| 679| 						getEntityCostTooltip(result),
| 680| 680| 						getNeededResourcesTooltip(neededResources)
| 681| 681| 					].filter(tip => tip).join("\n");
| 682|    |-				}
|    | 682|+			}
| 683| 683| 
| 684| 684| 				break;
| 685| 685| 
|    | [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| 					].filter(tip => tip).join("\n");
| 682| 682| 				}
| 683| 683| 
| 684|    |-				break;
|    | 684|+			break;
| 685| 685| 
| 686| 686| 			case "mousebuttondown":
| 687| 687| 				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
| 683| 683| 
| 684| 684| 				break;
| 685| 685| 
| 686|    |-			case "mousebuttondown":
|    | 686|+		case "mousebuttondown":
| 687| 687| 				if (ev.button == SDL_BUTTON_LEFT)
| 688| 688| 				{
| 689| 689| 					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
| 684| 684| 				break;
| 685| 685| 
| 686| 686| 			case "mousebuttondown":
| 687|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 687|+			if (ev.button == SDL_BUTTON_LEFT)
| 688| 688| 				{
| 689| 689| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 690| 690| 					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
| 685| 685| 
| 686| 686| 			case "mousebuttondown":
| 687| 687| 				if (ev.button == SDL_BUTTON_LEFT)
| 688|    |-				{
|    | 688|+			{
| 689| 689| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 690| 690| 					if (tryPlaceWall(queued))
| 691| 691| 					{
|    | [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
| 686| 686| 			case "mousebuttondown":
| 687| 687| 				if (ev.button == SDL_BUTTON_LEFT)
| 688| 688| 				{
| 689|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 689|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 690| 690| 					if (tryPlaceWall(queued))
| 691| 691| 					{
| 692| 692| 						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
| 687| 687| 				if (ev.button == SDL_BUTTON_LEFT)
| 688| 688| 				{
| 689| 689| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 690|    |-					if (tryPlaceWall(queued))
|    | 690|+				if (tryPlaceWall(queued))
| 691| 691| 					{
| 692| 692| 						if (queued)
| 693| 693| 						{
|    | [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
| 688| 688| 				{
| 689| 689| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 690| 690| 					if (tryPlaceWall(queued))
| 691|    |-					{
|    | 691|+				{
| 692| 692| 						if (queued)
| 693| 693| 						{
| 694| 694| 							// 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
| 689| 689| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 690| 690| 					if (tryPlaceWall(queued))
| 691| 691| 					{
| 692|    |-						if (queued)
|    | 692|+					if (queued)
| 693| 693| 						{
| 694| 694| 							// continue building, just set a new starting position where we left off
| 695| 695| 							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
| 690| 690| 					if (tryPlaceWall(queued))
| 691| 691| 					{
| 692| 692| 						if (queued)
| 693|    |-						{
|    | 693|+					{
| 694| 694| 							// continue building, just set a new starting position where we left off
| 695| 695| 							placementSupport.position = placementSupport.wallEndPosition;
| 696| 696| 							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
| 691| 691| 					{
| 692| 692| 						if (queued)
| 693| 693| 						{
| 694|    |-							// continue building, just set a new starting position where we left off
|    | 694|+						// continue building, just set a new starting position where we left off
| 695| 695| 							placementSupport.position = placementSupport.wallEndPosition;
| 696| 696| 							placementSupport.wallEndPosition = undefined;
| 697| 697| 
|    | [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
| 692| 692| 						if (queued)
| 693| 693| 						{
| 694| 694| 							// continue building, just set a new starting position where we left off
| 695|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 695|+						placementSupport.position = placementSupport.wallEndPosition;
| 696| 696| 							placementSupport.wallEndPosition = undefined;
| 697| 697| 
| 698| 698| 							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
| 693| 693| 						{
| 694| 694| 							// continue building, just set a new starting position where we left off
| 695| 695| 							placementSupport.position = placementSupport.wallEndPosition;
| 696|    |-							placementSupport.wallEndPosition = undefined;
|    | 696|+						placementSupport.wallEndPosition = undefined;
| 697| 697| 
| 698| 698| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 699| 699| 						}
|    | [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| 							placementSupport.position = placementSupport.wallEndPosition;
| 696| 696| 							placementSupport.wallEndPosition = undefined;
| 697| 697| 
| 698|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 698|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 699| 699| 						}
| 700| 700| 						else
| 701| 701| 						{
|    | [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
| 696| 696| 							placementSupport.wallEndPosition = undefined;
| 697| 697| 
| 698| 698| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 699|    |-						}
|    | 699|+					}
| 700| 700| 						else
| 701| 701| 						{
| 702| 702| 							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
| 697| 697| 
| 698| 698| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 699| 699| 						}
| 700|    |-						else
|    | 700|+					else
| 701| 701| 						{
| 702| 702| 							placementSupport.Reset();
| 703| 703| 							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
| 698| 698| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 699| 699| 						}
| 700| 700| 						else
| 701|    |-						{
|    | 701|+					{
| 702| 702| 							placementSupport.Reset();
| 703| 703| 							inputState = INPUT_NORMAL;
| 704| 704| 						}
|    | [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
| 699| 699| 						}
| 700| 700| 						else
| 701| 701| 						{
| 702|    |-							placementSupport.Reset();
|    | 702|+						placementSupport.Reset();
| 703| 703| 							inputState = INPUT_NORMAL;
| 704| 704| 						}
| 705| 705| 					}
|    | [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
| 700| 700| 						else
| 701| 701| 						{
| 702| 702| 							placementSupport.Reset();
| 703|    |-							inputState = INPUT_NORMAL;
|    | 703|+						inputState = INPUT_NORMAL;
| 704| 704| 						}
| 705| 705| 					}
| 706| 706| 					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
| 701| 701| 						{
| 702| 702| 							placementSupport.Reset();
| 703| 703| 							inputState = INPUT_NORMAL;
| 704|    |-						}
|    | 704|+					}
| 705| 705| 					}
| 706| 706| 					else
| 707| 707| 						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
| 702| 702| 							placementSupport.Reset();
| 703| 703| 							inputState = INPUT_NORMAL;
| 704| 704| 						}
| 705|    |-					}
|    | 705|+				}
| 706| 706| 					else
| 707| 707| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 708| 708| 
|    | [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| 							inputState = INPUT_NORMAL;
| 704| 704| 						}
| 705| 705| 					}
| 706|    |-					else
|    | 706|+				else
| 707| 707| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 708| 708| 
| 709| 709| 					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
| 704| 704| 						}
| 705| 705| 					}
| 706| 706| 					else
| 707|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 707|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 708| 708| 
| 709| 709| 					updateBuildingPlacementPreview();
| 710| 710| 					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
| 706| 706| 					else
| 707| 707| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 708| 708| 
| 709|    |-					updateBuildingPlacementPreview();
|    | 709|+				updateBuildingPlacementPreview();
| 710| 710| 					return true;
| 711| 711| 				}
| 712| 712| 				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
| 707| 707| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 708| 708| 
| 709| 709| 					updateBuildingPlacementPreview();
| 710|    |-					return true;
|    | 710|+				return true;
| 711| 711| 				}
| 712| 712| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 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
| 708| 708| 
| 709| 709| 					updateBuildingPlacementPreview();
| 710| 710| 					return true;
| 711|    |-				}
|    | 711|+			}
| 712| 712| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 713| 713| 				{
| 714| 714| 					// 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
| 709| 709| 					updateBuildingPlacementPreview();
| 710| 710| 					return true;
| 711| 711| 				}
| 712|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 712|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 713| 713| 				{
| 714| 714| 					// reset to normal input mode
| 715| 715| 					placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 710| 710| 					return true;
| 711| 711| 				}
| 712| 712| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 713|    |-				{
|    | 713|+			{
| 714| 714| 					// reset to normal input mode
| 715| 715| 					placementSupport.Reset();
| 716| 716| 					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
| 711| 711| 				}
| 712| 712| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 713| 713| 				{
| 714|    |-					// reset to normal input mode
|    | 714|+				// reset to normal input mode
| 715| 715| 					placementSupport.Reset();
| 716| 716| 					updateBuildingPlacementPreview();
| 717| 717| 
|    | [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
| 712| 712| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 713| 713| 				{
| 714| 714| 					// reset to normal input mode
| 715|    |-					placementSupport.Reset();
|    | 715|+				placementSupport.Reset();
| 716| 716| 					updateBuildingPlacementPreview();
| 717| 717| 
| 718| 718| 					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
| 713| 713| 				{
| 714| 714| 					// reset to normal input mode
| 715| 715| 					placementSupport.Reset();
| 716|    |-					updateBuildingPlacementPreview();
|    | 716|+				updateBuildingPlacementPreview();
| 717| 717| 
| 718| 718| 					inputState = INPUT_NORMAL;
| 719| 719| 					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
| 715| 715| 					placementSupport.Reset();
| 716| 716| 					updateBuildingPlacementPreview();
| 717| 717| 
| 718|    |-					inputState = INPUT_NORMAL;
|    | 718|+				inputState = INPUT_NORMAL;
| 719| 719| 					return true;
| 720| 720| 				}
| 721| 721| 				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
| 716| 716| 					updateBuildingPlacementPreview();
| 717| 717| 
| 718| 718| 					inputState = INPUT_NORMAL;
| 719|    |-					return true;
|    | 719|+				return true;
| 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
| 717| 717| 
| 718| 718| 					inputState = INPUT_NORMAL;
| 719| 719| 					return true;
| 720|    |-				}
|    | 720|+			}
| 721| 721| 				break;
| 722| 722| 		}
| 723| 723| 		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
| 718| 718| 					inputState = INPUT_NORMAL;
| 719| 719| 					return true;
| 720| 720| 				}
| 721|    |-				break;
|    | 721|+			break;
| 722| 722| 		}
| 723| 723| 		break;
| 724| 724| 
|    | [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
| 860| 860| 			break;
| 861| 861| 
| 862| 862| 		case "hotkeydown":
| 863|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 863|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 864| 864| 				{
| 865| 865| 					let now = Date.now();
| 866| 866| 					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
| 861| 861| 
| 862| 862| 		case "hotkeydown":
| 863| 863| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 864|    |-				{
|    | 864|+			{
| 865| 865| 					let now = Date.now();
| 866| 866| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 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| 		case "hotkeydown":
| 863| 863| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 864| 864| 				{
| 865|    |-					let now = Date.now();
|    | 865|+				let now = Date.now();
| 866| 866| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 867| 867| 					{
| 868| 868| 						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
| 863| 863| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 864| 864| 				{
| 865| 865| 					let now = Date.now();
| 866|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 866|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 867| 867| 					{
| 868| 868| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 869| 869| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 864| 864| 				{
| 865| 865| 					let now = Date.now();
| 866| 866| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 867|    |-					{
|    | 867|+				{
| 868| 868| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 869| 869| 						{
| 870| 870| 							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
| 865| 865| 					let now = Date.now();
| 866| 866| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 867| 867| 					{
| 868|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 868|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 869| 869| 						{
| 870| 870| 							var sptr = ev.hotkey.split(".");
| 871| 871| 							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
| 866| 866| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 867| 867| 					{
| 868| 868| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 869|    |-						{
|    | 869|+					{
| 870| 870| 							var sptr = ev.hotkey.split(".");
| 871| 871| 							performGroup("snap", sptr[3]);
| 872| 872| 						}
|    | [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
| 867| 867| 					{
| 868| 868| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 869| 869| 						{
| 870|    |-							var sptr = ev.hotkey.split(".");
|    | 870|+						var sptr = ev.hotkey.split(".");
| 871| 871| 							performGroup("snap", sptr[3]);
| 872| 872| 						}
| 873| 873| 					}
|    | [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
| 868| 868| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 869| 869| 						{
| 870| 870| 							var sptr = ev.hotkey.split(".");
| 871|    |-							performGroup("snap", sptr[3]);
|    | 871|+						performGroup("snap", sptr[3]);
| 872| 872| 						}
| 873| 873| 					}
| 874| 874| 					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
| 869| 869| 						{
| 870| 870| 							var sptr = ev.hotkey.split(".");
| 871| 871| 							performGroup("snap", sptr[3]);
| 872|    |-						}
|    | 872|+					}
| 873| 873| 					}
| 874| 874| 					else
| 875| 875| 					{
|    | [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| 							var sptr = ev.hotkey.split(".");
| 871| 871| 							performGroup("snap", sptr[3]);
| 872| 872| 						}
| 873|    |-					}
|    | 873|+				}
| 874| 874| 					else
| 875| 875| 					{
| 876| 876| 						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
| 871| 871| 							performGroup("snap", sptr[3]);
| 872| 872| 						}
| 873| 873| 					}
| 874|    |-					else
|    | 874|+				else
| 875| 875| 					{
| 876| 876| 						var sptr = ev.hotkey.split(".");
| 877| 877| 						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
| 872| 872| 						}
| 873| 873| 					}
| 874| 874| 					else
| 875|    |-					{
|    | 875|+				{
| 876| 876| 						var sptr = ev.hotkey.split(".");
| 877| 877| 						performGroup(sptr[2], sptr[3]);
| 878| 878| 
|    | [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
| 873| 873| 					}
| 874| 874| 					else
| 875| 875| 					{
| 876|    |-						var sptr = ev.hotkey.split(".");
|    | 876|+					var sptr = ev.hotkey.split(".");
| 877| 877| 						performGroup(sptr[2], sptr[3]);
| 878| 878| 
| 879| 879| 						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
| 874| 874| 					else
| 875| 875| 					{
| 876| 876| 						var sptr = ev.hotkey.split(".");
| 877|    |-						performGroup(sptr[2], sptr[3]);
|    | 877|+					performGroup(sptr[2], sptr[3]);
| 878| 878| 
| 879| 879| 						doublePressTimer = now;
| 880| 880| 						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
| 876| 876| 						var sptr = ev.hotkey.split(".");
| 877| 877| 						performGroup(sptr[2], sptr[3]);
| 878| 878| 
| 879|    |-						doublePressTimer = now;
|    | 879|+					doublePressTimer = now;
| 880| 880| 						prevHotkey = ev.hotkey;
| 881| 881| 					}
| 882| 882| 				}
|    | [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
| 877| 877| 						performGroup(sptr[2], sptr[3]);
| 878| 878| 
| 879| 879| 						doublePressTimer = now;
| 880|    |-						prevHotkey = ev.hotkey;
|    | 880|+					prevHotkey = ev.hotkey;
| 881| 881| 					}
| 882| 882| 				}
| 883| 883| 				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
| 878| 878| 
| 879| 879| 						doublePressTimer = now;
| 880| 880| 						prevHotkey = ev.hotkey;
| 881|    |-					}
|    | 881|+				}
| 882| 882| 				}
| 883| 883| 				break;
| 884| 884| 		}
|    | [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
| 879| 879| 						doublePressTimer = now;
| 880| 880| 						prevHotkey = ev.hotkey;
| 881| 881| 					}
| 882|    |-				}
|    | 882|+			}
| 883| 883| 				break;
| 884| 884| 		}
| 885| 885| 		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
| 880| 880| 						prevHotkey = ev.hotkey;
| 881| 881| 					}
| 882| 882| 				}
| 883|    |-				break;
|    | 883|+			break;
| 884| 884| 		}
| 885| 885| 		break;
| 886| 886| 
|    | [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
| 240| »   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
| 254| »   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
| 484| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
|1133| »   »   »   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
| 240| »   var·target·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'target' to 'undefined'.

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 942| »   »   »   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 (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
|1681|1681| 			{
|1682|1682| 				minDist2 = dist2;
|1683|1683| 				minDistEntitySnapData = {
|1684|    |-						"x": pos.x,
|    |1684|+					"x": pos.x,
|1685|1685| 						"z": pos.z,
|1686|1686| 						"angle": cmpPosition.GetRotation().y,
|1687|1687| 						"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
|1682|1682| 				minDist2 = dist2;
|1683|1683| 				minDistEntitySnapData = {
|1684|1684| 						"x": pos.x,
|1685|    |-						"z": pos.z,
|    |1685|+					"z": pos.z,
|1686|1686| 						"angle": cmpPosition.GetRotation().y,
|1687|1687| 						"ent": ent
|1688|1688| 				};
|    | [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| 				minDistEntitySnapData = {
|1684|1684| 						"x": pos.x,
|1685|1685| 						"z": pos.z,
|1686|    |-						"angle": cmpPosition.GetRotation().y,
|    |1686|+					"angle": cmpPosition.GetRotation().y,
|1687|1687| 						"ent": ent
|1688|1688| 				};
|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| 						"x": pos.x,
|1685|1685| 						"z": pos.z,
|1686|1686| 						"angle": cmpPosition.GetRotation().y,
|1687|    |-						"ent": ent
|    |1687|+					"ent": ent
|1688|1688| 				};
|1689|1689| 			}
|1690|1690| 		}
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  24|  24| 	Init()
|  25|  25| 	{
|  26|  26| 		this.owner = INVALID_PLAYER;
|  27|    |-	};
|    |  27|+	}
|  28|  28| 
|  29|  29| 	/**
|  30|  30| 	 * Initialises construction, thus rendering this socket useless.
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  48|  48| 		cmpPosition.MoveOutOfWorld();
|  49|  49| 
|  50|  50| 		return true;
|  51|    |-	};
|    |  51|+	}
|  52|  52| 
|  53|  53| 	/**
|  54|  54| 	 * Resets this socket by setting the owner to -1 and moving back to its former position.
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  66|  66| 
|  67|  67| 		cmpPosition.JumpTo(this.previousPosition.x, this.previousPosition.z);
|  68|  68| 		delete this.previousPosition;
|  69|    |-	};
|    |  69|+	}
|  70|  70| 
|  71|  71| 	/**
|  72|  72| 	 * Get the current owner.

binaries/data/mods/public/simulation/components/BuildSlot.js
|  27| »   };
|    | [NORMAL] JSHintBear:
|    | Unnecessary semicolon.

binaries/data/mods/public/simulation/components/BuildSlot.js
|  51| »   };
|    | [NORMAL] JSHintBear:
|    | Unnecessary semicolon.

binaries/data/mods/public/simulation/components/BuildSlot.js
|  69| »   };
|    | [NORMAL] JSHintBear:
|    | Unnecessary semicolon.
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 227| 227| 		result.message = markForTranslation("%(name)s cannot be built in %(territoryType)s territory. Valid territories: %(validTerritories)s");
| 228| 228| 		result.translateParameters.push("territoryType");
| 229| 229| 		result.translateParameters.push("validTerritories");
| 230|    |-		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
|    | 230|+		result.parameters.territoryType = { "context": "Territory type", "message": invalidTerritory};
| 231| 231| 		// gui code will join this array to a string
| 232| 232| 		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
| 233| 233| 		return result;	// Fail
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 227| 227| 		result.message = markForTranslation("%(name)s cannot be built in %(territoryType)s territory. Valid territories: %(validTerritories)s");
| 228| 228| 		result.translateParameters.push("territoryType");
| 229| 229| 		result.translateParameters.push("validTerritories");
| 230|    |-		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
|    | 230|+		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory };
| 231| 231| 		// gui code will join this array to a string
| 232| 232| 		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
| 233| 233| 		return result;	// Fail
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 229| 229| 		result.translateParameters.push("validTerritories");
| 230| 230| 		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
| 231| 231| 		// gui code will join this array to a string
| 232|    |-		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
|    | 232|+		result.parameters.validTerritories = { "context": "Territory type list", "list": this.GetTerritories()};
| 233| 233| 		return result;	// Fail
| 234| 234| 	}
| 235| 235| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 229| 229| 		result.translateParameters.push("validTerritories");
| 230| 230| 		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
| 231| 231| 		// gui code will join this array to a string
| 232|    |-		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
|    | 232|+		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories() };
| 233| 233| 		return result;	// Fail
| 234| 234| 	}
| 235| 235| 

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 162| »   »   switch·(ret)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 268| »   »   »   var·cmpIdentity·=·Engine.QueryInterface(id,·IID_Identity);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'cmpIdentity' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 277| »   »   »   »   let·result·=·markForPluralTranslation(
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'result' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 298| »   »   »   »   let·result·=·markForPluralTranslation(
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'result' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 157| »   »   var·ret·=·cmpObstruction.CheckFoundation(passClassName,·false);
|    | [NORMAL] JSHintBear:
|    | 'ret' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 180| »   var·cmpPlayer·=·QueryOwnerInterface(this.entity,·IID_Player);
|    | [NORMAL] JSHintBear:
|    | 'cmpPlayer' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 262| »   »   var·cmpRangeManager·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_RangeManager);
|    | [NORMAL] JSHintBear:
|    | 'cmpRangeManager' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 263| »   »   var·cmpPlayer·=·QueryOwnerInterface(this.entity,·IID_Player);
|    | [NORMAL] JSHintBear:
|    | 'cmpPlayer' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 160| »   if·(ret·!=·"success"·&&·this.template.PlacementType·!=·"socket")
|    | [NORMAL] JSHintBear:
|    | 'ret' used out of scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 162| »   »   switch·(ret)
|    | [NORMAL] JSHintBear:
|    | 'ret' used out of scope.
Executing section cli...

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

Freagarach updated this revision to Diff 11482.Sat, Mar 14, 3:50 PM

Some more work, it properly snaps and is buildable now.

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

Linter detected issues:
Executing section Source...

source/simulation2/scripting/JSInterface_Simulation.h
|  25| namespace·JSI_Simulation
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'namespaceJSI_Simulation{' is invalid C code. Use --std or --language to configure the language.
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| 
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
| 274| 274| 				ret.buildRestrictions.distance.max = getEntityValue("BuildRestrictions/Distance/MaxDistance");
| 275| 275| 		}
| 276| 276| 		if (template.BuildRestrictions.Sockets)
| 277|    |-			ret.buildRestrictions.sockets = template.BuildRestrictions.Sockets._string
|    | 277|+			ret.buildRestrictions.sockets = template.BuildRestrictions.Sockets._string;
| 278| 278| 	}
| 279| 279| 
| 280| 280| 	if (template.TrainingRestrictions)

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.

binaries/data/mods/public/globalscripts/Templates.js
| 277| »   »   »   ret.buildRestrictions.sockets·=·template.BuildRestrictions.Sockets._string
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [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 (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1105|1105| 			result.x = snapData.x;
|1106|1106| 			result.z = snapData.z;
|1107|1107| 			if (snapData.entity)
|1108|    |-				result.snappedEnt = snapData.snappedEntity
|    |1108|+				result.snappedEnt = snapData.snappedEntity;
|1109|1109| 		}
|1110|1110| 
|1111|1111| 		let cmpRangeOverlayManager = Engine.QueryInterface(ent, IID_RangeOverlayManager);
|    | [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
|1690|1690| 			{
|1691|1691| 				minDist2 = dist2;
|1692|1692| 				minDistEntitySnapData = {
|1693|    |-						"x": pos.x,
|    |1693|+					"x": pos.x,
|1694|1694| 						"z": pos.z,
|1695|1695| 						"angle": cmpPosition.GetRotation().y,
|1696|1696| 						"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
|1691|1691| 				minDist2 = dist2;
|1692|1692| 				minDistEntitySnapData = {
|1693|1693| 						"x": pos.x,
|1694|    |-						"z": pos.z,
|    |1694|+					"z": pos.z,
|1695|1695| 						"angle": cmpPosition.GetRotation().y,
|1696|1696| 						"ent": ent
|1697|1697| 				};
|    | [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
|1692|1692| 				minDistEntitySnapData = {
|1693|1693| 						"x": pos.x,
|1694|1694| 						"z": pos.z,
|1695|    |-						"angle": cmpPosition.GetRotation().y,
|    |1695|+					"angle": cmpPosition.GetRotation().y,
|1696|1696| 						"ent": ent
|1697|1697| 				};
|1698|1698| 			}
|    | [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
|1693|1693| 						"x": pos.x,
|1694|1694| 						"z": pos.z,
|1695|1695| 						"angle": cmpPosition.GetRotation().y,
|1696|    |-						"ent": ent
|    |1696|+					"ent": ent
|1697|1697| 				};
|1698|1698| 			}
|1699|1699| 		}

binaries/data/mods/public/simulation/components/GuiInterface.js
|1108| »   »   »   »   result.snappedEnt·=·snapData.snappedEntity
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 227| 227| 		result.message = markForTranslation("%(name)s cannot be built in %(territoryType)s territory. Valid territories: %(validTerritories)s");
| 228| 228| 		result.translateParameters.push("territoryType");
| 229| 229| 		result.translateParameters.push("validTerritories");
| 230|    |-		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
|    | 230|+		result.parameters.territoryType = { "context": "Territory type", "message": invalidTerritory};
| 231| 231| 		// gui code will join this array to a string
| 232| 232| 		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
| 233| 233| 		return result;	// Fail
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 227| 227| 		result.message = markForTranslation("%(name)s cannot be built in %(territoryType)s territory. Valid territories: %(validTerritories)s");
| 228| 228| 		result.translateParameters.push("territoryType");
| 229| 229| 		result.translateParameters.push("validTerritories");
| 230|    |-		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
|    | 230|+		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory };
| 231| 231| 		// gui code will join this array to a string
| 232| 232| 		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
| 233| 233| 		return result;	// Fail
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 229| 229| 		result.translateParameters.push("validTerritories");
| 230| 230| 		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
| 231| 231| 		// gui code will join this array to a string
| 232|    |-		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
|    | 232|+		result.parameters.validTerritories = { "context": "Territory type list", "list": this.GetTerritories()};
| 233| 233| 		return result;	// Fail
| 234| 234| 	}
| 235| 235| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 229| 229| 		result.translateParameters.push("validTerritories");
| 230| 230| 		result.parameters.territoryType = {"context": "Territory type", "message": invalidTerritory};
| 231| 231| 		// gui code will join this array to a string
| 232|    |-		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
|    | 232|+		result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories() };
| 233| 233| 		return result;	// Fail
| 234| 234| 	}
| 235| 235| 

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 162| »   »   switch·(ret)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 268| »   »   »   var·cmpIdentity·=·Engine.QueryInterface(id,·IID_Identity);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'cmpIdentity' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 277| »   »   »   »   let·result·=·markForPluralTranslation(
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'result' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 298| »   »   »   »   let·result·=·markForPluralTranslation(
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'result' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 157| »   »   var·ret·=·cmpObstruction.CheckFoundation(passClassName,·false);
|    | [NORMAL] JSHintBear:
|    | 'ret' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 180| »   var·cmpPlayer·=·QueryOwnerInterface(this.entity,·IID_Player);
|    | [NORMAL] JSHintBear:
|    | 'cmpPlayer' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 262| »   »   var·cmpRangeManager·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_RangeManager);
|    | [NORMAL] JSHintBear:
|    | 'cmpRangeManager' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 263| »   »   var·cmpPlayer·=·QueryOwnerInterface(this.entity,·IID_Player);
|    | [NORMAL] JSHintBear:
|    | 'cmpPlayer' is already defined.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 160| »   if·(ret·!=·"success"·&&·this.template.PlacementType·!=·"socket")
|    | [NORMAL] JSHintBear:
|    | 'ret' used out of scope.

binaries/data/mods/public/simulation/components/BuildRestrictions.js
| 162| »   »   switch·(ret)
|    | [NORMAL] JSHintBear:
|    | 'ret' used out of scope.
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  24|  24| 	Init()
|  25|  25| 	{
|  26|  26| 		this.owner = INVALID_PLAYER;
|  27|    |-	};
|    |  27|+	}
|  28|  28| 
|  29|  29| 	/**
|  30|  30| 	 * Initialises construction, thus rendering this socket useless.
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  48|  48| 		cmpPosition.MoveOutOfWorld();
|  49|  49| 
|  50|  50| 		return true;
|  51|    |-	};
|    |  51|+	}
|  52|  52| 
|  53|  53| 	/**
|  54|  54| 	 * Resets this socket by setting the owner to -1 and moving back to its former position.
|    | [NORMAL] ESLintBear (no-extra-semi):
|    | Unnecessary semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/BuildSlot.js
|  66|  66| 
|  67|  67| 		cmpPosition.JumpTo(this.previousPosition.x, this.previousPosition.z);
|  68|  68| 		delete this.previousPosition;
|  69|    |-	};
|    |  69|+	}
|  70|  70| 
|  71|  71| 	/**
|  72|  72| 	 * Get the current owner.

binaries/data/mods/public/simulation/components/BuildSlot.js
|  27| »   };
|    | [NORMAL] JSHintBear:
|    | Unnecessary semicolon.

binaries/data/mods/public/simulation/components/BuildSlot.js
|  51| »   };
|    | [NORMAL] JSHintBear:
|    | Unnecessary semicolon.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 944| »   »   »   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/1853/display/redirect

Stan added inline comments.Sat, Mar 14, 4:14 PM
binaries/data/mods/public/simulation/components/BuildRestrictions.js
245

Merge

binaries/data/mods/public/simulation/components/tests/test_BuildSlot.js
8

"false" ?