Page MenuHomeWildfire Games

[WIP] Map flares
Needs ReviewPublic

Authored by Imarok on Jan 18 2019, 12:56 PM.

Details

Reviewers
vladislavbelov
Trac Tickets
#3491
Summary

This patch implements map flares by sending the flared location via simulation command and show that on the minimap.
To trigger a flare you can either use a hotkey that modifies your click action or use the minimap button to start a preselected action and then click on somewhere on the terrain or on the minimap.
The flare indicator on the minimap will have the displaycolor of the player that flared. (I account for toggling of diplomacycolors, but only in the moment a new flare is created. So a flare doesn't change it's color in the midst of its life.)

TODO (on my side):

  • I draw circles by drawing a scaled circle texture. I should try using a fragment shader for a prettier result. (Maybe even multiple concentric circles per flare?)
  • Limit the number of flares on the receiver side?
  • Lower the texture size to 256x156 pixels as soon as the general look is accepted.
  • Target markers should be also colored in playercolor.
  • Improve animation
  • ARB shaders for drawing the circle textures

TODO (probably for someone else):

  • highlighted version of the flare button
  • Target Marker for flaring
  • Flaring sound

current rendering:


First try with one texture:

Old version with rectangles:

Test Plan

Try to find flaws

To flare, use the hotkey or the gui button. Then click on the map or the minimap.

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Imarok added inline comments.Apr 28 2019, 5:23 PM
source/gui/MiniMap.cpp
678 ↗(On Diff #7363)

This is still ugly wip draw code. ;P

I'd prefer to not use the simulation as imho minimap pings shouldn't be in the simualation. They are a purely gui thing, just as chat.

The question is which features would be useful to have, rather than only ending after the first step.
For example one conceivable use case would be setting an attack request point somewhere on the map for the next 30 seconds to 3 minutes.
If someone rejoins and if it's stored in the simulation, then it will be visible to the rejoiner.
Can/should also check what feature plans and ideas were expressed in the tickets, commit history, design documents, forum threads, IRC logs.

elexis added a comment.EditedMay 12 2019, 11:33 AM

Yeah it's bad that it will be defined for all GUI objects, but I don't see this as a blocker.

rP22134, adds only a little bit of mess, not a blocker, someone else can fix it afterwards
D1781, adds only a little bit of mess, not a blocker, someone else can fix it afterwards
D1751, adds only a little bit of mess, not a blocker, someone else can fix it afterwards
Who will fix it?
Why should he fix it?
When will he fix it?
Why should the code be introduced with a known defect?
Why do I get accused of wanting to stop people from progressing if I point out anti-patterns that only add a little defect for now that can be fixed in the future by someone else?
Created #5442.

Just for fuelling the fire:

Who will fix it?
Why should he fix it?
When will he fix it?

Whoever gets around to doing that of course ;) We all love a good series of cleanup patches.


It does appear like there is a structural change opportunity here to clean our GUI code overall, so that's something we should look at in anticipation of this.

In D1751#77680, @elexis wrote:

Yeah it's bad that it will be defined for all GUI objects, but I don't see this as a blocker.

rP22134, adds only a little bit of mess, not a blocker, someone else can fix it afterwards
D1781, adds only a little bit of mess, not a blocker, someone else can fix it afterwards
D1751, adds only a little bit of mess, not a blocker, someone else can fix it afterwards
Who will fix it?
Why should he fix it?
When will he fix it?
Why should the code be introduced with a known defect?
Why do I get accused of wanting to stop people from progressing if I point out anti-patterns that only add a little defect for now that can be fixed in the future by someone else?
Created #5442.

Sure but I thought that is currently the only possible way of doing that?

In D1751#77994, @Imarok wrote:

Sure but I thought that is currently the only possible way of doing that?

Is it?

In D1751#77632, @elexis wrote:

I'd prefer to not use the simulation as imho minimap pings shouldn't be in the simualation. They are a purely gui thing, just as chat.

Seems like I was arguing with myself. I already do the pings as simulation commands. xD Sorry for my confusion.

The question is which features would be useful to have, rather than only ending after the first step.
For example one conceivable use case would be setting an attack request point somewhere on the map for the next 30 seconds to 3 minutes.

Could be an idea. But I think a variable duration overcomplicates the thing. I mean you also have to provide a gui for that. (But of course it can be added later)

Can/should also check what feature plans and ideas were expressed in the tickets, commit history, design documents, forum threads, IRC logs.

Only feature in the ticket that is currently not on my list are different types of pings. That can be easily added later.

In D1751#78011, @elexis wrote:
In D1751#77994, @Imarok wrote:

Sure but I thought that is currently the only possible way of doing that?

Is it?

Feel free to suggest a better way.

In D1751#78023, @Imarok wrote:
In D1751#77632, @elexis wrote:

I'd prefer to not use the simulation as imho minimap pings shouldn't be in the simualation. They are a purely gui thing, just as chat.

Seems like I was arguing with myself. I already do the pings as simulation commands. xD

I didn't speak about simulation commands but serializing the events.
I.e. if it should be displayed for 30 seconds and someone rejoins a second after it was initiated, then his unrejoined allies will see it for 29 seconds and the rejoiner ally will not see the signal.

The question is which features would be useful to have, rather than only ending after the first step.
For example one conceivable use case would be setting an attack request point somewhere on the map for the next 30 seconds to 3 minutes.

Could be an idea. But I think a variable duration overcomplicates the thing. I mean you also have to provide a gui for that. (But of course it can be added later)

I didn't say player defined length.
The problem still is that a developer defined 30 second map ping is not visible for 29 seconds after the rejoin started one second after the command was sent.

Can/should also check what feature plans and ideas were expressed in the tickets, commit history, design documents, forum threads, IRC logs.

Only feature in the ticket that is currently not on my list are different types of pings. That can be easily added later.

That is the trac ticket(s?), and what about the commit history, design documents, forum threads, IRC logs?
In the code there are several TODOs and unfinished implementations that may be a lead.
Ticket was created May 13th 2006, written by Acumen / Stuart, so I suspect there is some forum discussion that might be located using these two constraints, the keyword, the trac URL.
I didn't find anything quickly in the meetinglogs from that time downloaded on the staff lounge, but it would be locateable if we have forum threads.
The list is also missing imagination of the author and possibly anyone else who has some imagination.

I'm wondering about the branding, it doesn't have anything to do with the minimap, other than the minimap being one way to send the signal. It should equally be possible to iniiate the signal without the minimap.
It does ping, but it should do more than pinging, it's a signal, it can inform players where to attack, where to establish a trade route, where to build a wall etc, and that could be displayed using different visual actors.

Another possible utilization of the simulation is that the simulation components might actually process this thing. I they are serialized anyhow, they would also be ready to use.
Imagine 'map-pings' in the realworld, they are flares or fires and they can also influence the actors and the environment. So it's not trivial to decide.
(And map-pings are not comparable to chat, because they already are entities in the simulation (whether you serialize them or not). More comparable to rallypoints.)

In D1751#78011, @elexis wrote:
In D1751#77994, @Imarok wrote:

Sure but I thought that is currently the only possible way of doing that?

Is it?

Feel free to suggest a better way.

See above:

this file should be split into one file per GUI Object type, since the new function will be added to every GUI Object type)
Created #5442.

Study of JSInterface_IGUIObject.cpp is necessary whether you add the proposed function only to the minimap object type or all gui object types.

Sorry for my confusion.

Sorry, I spent 60 minutes on this reply (don't ask me why but that's what the clock says), which are 55 too many.
I didn't post this and the previous replies to become involved in this feature but to make you a more self-sustained developer that finds his way around without me.

elexis added inline comments.Aug 31 2019, 12:54 PM
source/gui/MiniMap.cpp
76 ↗(On Diff #7864)

(AddSetting<bool> etc following rP22604)

287 ↗(On Diff #7864)

ScriptInterface::CreateObject(target, "x", x, "z", z) following rP22528.

195 ↗(On Diff #7363)

Settings should be used for settings, functions for functios.

Have a look at https://trac.wildfiregames.com/browser/ps/trunk/source/gui/scripting/JSInterface_IGUITextOwner.cpp?rev=22596 from rP22596 and how JSI_IGUITextOwner::RegisterScriptFunctions is called.
So it could easily use JSInterface_MiniMap.cpp that provides a ping(Vector2D) or similar.

(If this was a setting, then it would have been cleaner to implement a ScriptInterface::FromJSVal<MapPingObj> for your existing MapPingObj with the content below, also registering the setting with AddSetting<MapPingObj> if it was a setting)

source/gui/MiniMap.h
107 ↗(On Diff #7864)

(Didn't check, perhaps this can become a const function)

Stan updated this revision to Diff 11771.May 1 2020, 11:14 PM
Stan added a subscriber: Stan.

Rebase

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

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

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

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

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

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

Stan updated this revision to Diff 11772.May 1 2020, 11:26 PM

Fix rogue semicolon

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

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

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

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

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

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

badosu added a subscriber: badosu.May 2 2020, 12:01 AM

This is great! Can we add a keybinding to ping on the center of the current camera view?

Stan updated this revision to Diff 11773.May 2 2020, 12:07 AM

Fix build

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

Linter detected issues:
Executing section Source...

source/gui/ObjectTypes/CMiniMap.h
|  37| class·CMiniMap·:·public·IGUIObject
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'classCMiniMap:' is invalid C code. Use --std or --language to configure the language.
Executing section JS...
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/messages.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/messages.js
| 351| 351| 	let notificationText =
| 352| 352| 		notification.instructions.reduce((instructions, item) =>
| 353| 353| 			instructions + (typeof item == "string" ? translate(item) : colorizeHotkey(translate(item.text), item.hotkey)),
| 354|    |-			"");
|    | 354|+		"");
| 355| 355| 
| 356| 356| 	Engine.GetGUIObjectByName("tutorialText").caption = g_TutorialMessages.concat(setStringTags(notificationText, g_TutorialNewMessageTags)).join("\n");
| 357| 357| 	g_TutorialMessages.push(notificationText);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'execute'.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
| 532| 532| 
| 533| 533| 	"cancel-setup-trade-route":
| 534| 534| 	{
| 535|    |-		"execute":function(target, action, selection, queued)
|    | 535|+		"execute": function(target, action, selection, queued)
| 536| 536| 		{
| 537| 537| 			Engine.PostNetworkCommand({
| 538| 538| 				"type": "cancel-setup-trade-route",
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
| 577| 577| 				"cursor": "action-cancel-setup-trade-route",
| 578| 578| 				"tooltip": actionInfo.tooltip,
| 579| 579| 				"target": target
| 580|    |-			}
|    | 580|+			};
| 581| 581| 		},
| 582| 582| 		"specificness": 2,
| 583| 583| 	},
|    | [NORMAL] ESLintBear (spaced-comment):
|    | Expected space or tab after '//' in comment.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|1580|1580| 		"z": target.z
|1581|1581| 	});
|1582|1582| 
|1583|    |-	//TODO: is there a better way to call the ping function of the minimap?
|    |1583|+	// TODO: is there a better way to call the ping function of the minimap?
|1584|1584| 	let minimap = Engine.GetGUIObjectByName("minimap");
|1585|1585| 	minimap.ping_x = target.x;
|1586|1586| 	minimap.ping_z = target.z;

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

binaries/data/mods/public/gui/session/unit_actions.js
| 580| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1151|1151| 
|1152|1152| 	// send Metadata info if any
|1153|1153| 	if (cmd.metadata)
|1154|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1154|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1155|1155| 
|1156|1156| 	// Tell the units to start building this new entity
|1157|1157| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1151|1151| 
|1152|1152| 	// send Metadata info if any
|1153|1153| 	if (cmd.metadata)
|1154|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1154|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1155|1155| 
|1156|1156| 	// Tell the units to start building this new entity
|1157|1157| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1151|1151| 
|1152|1152| 	// send Metadata info if any
|1153|1153| 	if (cmd.metadata)
|1154|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1154|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1155|1155| 
|1156|1156| 	// Tell the units to start building this new entity
|1157|1157| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (spaced-comment):
|    | Expected space or tab after '//' in comment.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1259|1259| 		}
|1260|1260| 
|1261|1261| 		lastTowerControlGroup = cmpSnappedStartObstruction.GetControlGroup();
|1262|    |-		//warn("setting lastTowerControlGroup to control group of start snapped entity " + cmd.startSnappedEntity + ": " + lastTowerControlGroup);
|    |1262|+		// warn("setting lastTowerControlGroup to control group of start snapped entity " + cmd.startSnappedEntity + ": " + lastTowerControlGroup);
|1263|1263| 	}
|1264|1264| 
|1265|1265| 	var i = 0;
|    | [NORMAL] ESLintBear (spaced-comment):
|    | Expected space or tab after '//' in comment.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1323|1323| 
|1324|1324| 				if (i > 0)
|1325|1325| 				{
|1326|    |-					//warn("   updating previous wall piece's secondary control group to " + newTowerControlGroup);
|    |1326|+					// warn("   updating previous wall piece's secondary control group to " + newTowerControlGroup);
|1327|1327| 					var cmpPreviousObstruction = Engine.QueryInterface(pieces[i-1].ent, IID_Obstruction);
|1328|1328| 					// TODO: ensure that cmpPreviousObstruction exists
|1329|1329| 					// TODO: ensure that the previous obstruction does not yet have a secondary control group set
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1486|1486| 		// Check that all its members are selected
|1487|1487| 		var fid = formationIds[0];
|1488|1488| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1489|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1490|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1489|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1490|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1491|1491| 		{
|1492|1492| 			cmpFormation.DeleteTwinFormations();
|1493|1493| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1594|1594| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1595|1595| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1596|1596| 				if (matrix[i][j] < distSq)
|1597|    |-					closeClusters = [i,j];
|    |1597|+					closeClusters = [i, j];
|1598|1598| 
|1599|1599| 		// if no more close clusters found, just return all found clusters so far
|1600|1600| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		}
|1617|1617| 		// remove the rows and columns in the matrix for the merged clusters,
|1618|1618| 		// and the clusters themselves from the cluster list
|1619|    |-		clusters.splice(closeClusters[0],1);
|    |1619|+		clusters.splice(closeClusters[0], 1);
|1620|1620| 		clusters.splice(closeClusters[1],1);
|1621|1621| 		matrix.splice(closeClusters[0],1);
|1622|1622| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1617|1617| 		// remove the rows and columns in the matrix for the merged clusters,
|1618|1618| 		// and the clusters themselves from the cluster list
|1619|1619| 		clusters.splice(closeClusters[0],1);
|1620|    |-		clusters.splice(closeClusters[1],1);
|    |1620|+		clusters.splice(closeClusters[1], 1);
|1621|1621| 		matrix.splice(closeClusters[0],1);
|1622|1622| 		matrix.splice(closeClusters[1],1);
|1623|1623| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 		// and the clusters themselves from the cluster list
|1619|1619| 		clusters.splice(closeClusters[0],1);
|1620|1620| 		clusters.splice(closeClusters[1],1);
|1621|    |-		matrix.splice(closeClusters[0],1);
|    |1621|+		matrix.splice(closeClusters[0], 1);
|1622|1622| 		matrix.splice(closeClusters[1],1);
|1623|1623| 		for (let i = 0; i < matrix.length; ++i)
|1624|1624| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1619|1619| 		clusters.splice(closeClusters[0],1);
|1620|1620| 		clusters.splice(closeClusters[1],1);
|1621|1621| 		matrix.splice(closeClusters[0],1);
|1622|    |-		matrix.splice(closeClusters[1],1);
|    |1622|+		matrix.splice(closeClusters[1], 1);
|1623|1623| 		for (let i = 0; i < matrix.length; ++i)
|1624|1624| 		{
|1625|1625| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1623|1623| 		for (let i = 0; i < matrix.length; ++i)
|1624|1624| 		{
|1625|1625| 			if (matrix[i].length > closeClusters[0])
|1626|    |-				matrix[i].splice(closeClusters[0],1);
|    |1626|+				matrix[i].splice(closeClusters[0], 1);
|1627|1627| 			if (matrix[i].length > closeClusters[1])
|1628|1628| 				matrix[i].splice(closeClusters[1],1);
|1629|1629| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1625|1625| 			if (matrix[i].length > closeClusters[0])
|1626|1626| 				matrix[i].splice(closeClusters[0],1);
|1627|1627| 			if (matrix[i].length > closeClusters[1])
|1628|    |-				matrix[i].splice(closeClusters[1],1);
|    |1628|+				matrix[i].splice(closeClusters[1], 1);
|1629|1629| 		}
|1630|1630| 		// add a new row of distances to the matrix and the new cluster
|1631|1631| 		clusters.push(newCluster);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1549| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 243| 243| 	// if two actions are possible, the first one is taken
| 244| 244| 	// thus the most specific should appear first.
| 245| 245| 
| 246|    |-	let actionInfo = undefined;
|    | 246|+	let actionInfo;
| 247| 247| 	if (preSelectedAction != ACTION_NONE)
| 248| 248| 	{
| 249| 249| 		for (let action of g_UnitActionsSortedKeys)
|    | [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
| 337| 337| 	}
| 338| 338| 
| 339| 339| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 340|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 340|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 341| 341| 	{
| 342| 342| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 343| 343| 		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
| 487| 487| 	mouseIsOverObject = (hoveredObject != null);
| 488| 488| 
| 489| 489| 	// Close the menu when interacting with the game world
| 490|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 491|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 490|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 491|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 492| 492| 		g_Menu.close();
| 493| 493| 
| 494| 494| 	// 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
| 648| 648| 		// user to continue building walls.
| 649| 649| 		switch (ev.type)
| 650| 650| 		{
| 651|    |-			case "mousemotion":
|    | 651|+		case "mousemotion":
| 652| 652| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 653| 653| 
| 654| 654| 				// 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
| 649| 649| 		switch (ev.type)
| 650| 650| 		{
| 651| 651| 			case "mousemotion":
| 652|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 652|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 653| 653| 
| 654| 654| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 655| 655| 				// 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
| 651| 651| 			case "mousemotion":
| 652| 652| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 653| 653| 
| 654|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 654|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 655| 655| 				// the ending point and the starting point to snap to.
| 656| 656| 				//
| 657| 657| 				// 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
| 652| 652| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 653| 653| 
| 654| 654| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 655|    |-				// the ending point and the starting point to snap to.
|    | 655|+			// the ending point and the starting point to snap to.
| 656| 656| 				//
| 657| 657| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 658| 658| 				// 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
| 653| 653| 
| 654| 654| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 655| 655| 				// the ending point and the starting point to snap to.
| 656|    |-				//
|    | 656|+			//
| 657| 657| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 658| 658| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 659| 659| 				// 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
| 654| 654| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 655| 655| 				// the ending point and the starting point to snap to.
| 656| 656| 				//
| 657|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 657|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 658| 658| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 659| 659| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 660| 660| 				// 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
| 655| 655| 				// the ending point and the starting point to snap to.
| 656| 656| 				//
| 657| 657| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 658|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 658|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 659| 659| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 660| 660| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 661| 661| 				// 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
| 656| 656| 				//
| 657| 657| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 658| 658| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 659|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 659|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 660| 660| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 661| 661| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 662| 662| 				// 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
| 657| 657| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 658| 658| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 659| 659| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 660|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 660|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 661| 661| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 662| 662| 				// points.
| 663| 663| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 658| 658| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 659| 659| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 660| 660| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 661|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 661|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 662| 662| 				// points.
| 663| 663| 
| 664| 664| 				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
| 659| 659| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 660| 660| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 661| 661| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 662|    |-				// points.
|    | 662|+			// points.
| 663| 663| 
| 664| 664| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 665| 665| 				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
| 661| 661| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 662| 662| 				// points.
| 663| 663| 
| 664|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 664|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 665| 665| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 666| 666| 
| 667| 667| 				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
| 662| 662| 				// points.
| 663| 663| 
| 664| 664| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 665|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 665|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 666| 666| 
| 667| 667| 				if (result && result.cost)
| 668| 668| 				{
|    | [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| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 665| 665| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 666| 666| 
| 667|    |-				if (result && result.cost)
|    | 667|+			if (result && result.cost)
| 668| 668| 				{
| 669| 669| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 670| 670| 					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
| 665| 665| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 666| 666| 
| 667| 667| 				if (result && result.cost)
| 668|    |-				{
|    | 668|+			{
| 669| 669| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 670| 670| 					placementSupport.tooltipMessage = [
| 671| 671| 						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
| 666| 666| 
| 667| 667| 				if (result && result.cost)
| 668| 668| 				{
| 669|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 669|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 670| 670| 					placementSupport.tooltipMessage = [
| 671| 671| 						getEntityCostTooltip(result),
| 672| 672| 						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
| 667| 667| 				if (result && result.cost)
| 668| 668| 				{
| 669| 669| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 670|    |-					placementSupport.tooltipMessage = [
|    | 670|+				placementSupport.tooltipMessage = [
| 671| 671| 						getEntityCostTooltip(result),
| 672| 672| 						getNeededResourcesTooltip(neededResources)
| 673| 673| 					].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
| 668| 668| 				{
| 669| 669| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 670| 670| 					placementSupport.tooltipMessage = [
| 671|    |-						getEntityCostTooltip(result),
|    | 671|+					getEntityCostTooltip(result),
| 672| 672| 						getNeededResourcesTooltip(neededResources)
| 673| 673| 					].filter(tip => tip).join("\n");
| 674| 674| 				}
|    | [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
| 669| 669| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 670| 670| 					placementSupport.tooltipMessage = [
| 671| 671| 						getEntityCostTooltip(result),
| 672|    |-						getNeededResourcesTooltip(neededResources)
|    | 672|+					getNeededResourcesTooltip(neededResources)
| 673| 673| 					].filter(tip => tip).join("\n");
| 674| 674| 				}
| 675| 675| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 670| 670| 					placementSupport.tooltipMessage = [
| 671| 671| 						getEntityCostTooltip(result),
| 672| 672| 						getNeededResourcesTooltip(neededResources)
| 673|    |-					].filter(tip => tip).join("\n");
|    | 673|+				].filter(tip => tip).join("\n");
| 674| 674| 				}
| 675| 675| 
| 676| 676| 				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
| 671| 671| 						getEntityCostTooltip(result),
| 672| 672| 						getNeededResourcesTooltip(neededResources)
| 673| 673| 					].filter(tip => tip).join("\n");
| 674|    |-				}
|    | 674|+			}
| 675| 675| 
| 676| 676| 				break;
| 677| 677| 
|    | [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| 					].filter(tip => tip).join("\n");
| 674| 674| 				}
| 675| 675| 
| 676|    |-				break;
|    | 676|+			break;
| 677| 677| 
| 678| 678| 			case "mousebuttondown":
| 679| 679| 				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
| 675| 675| 
| 676| 676| 				break;
| 677| 677| 
| 678|    |-			case "mousebuttondown":
|    | 678|+		case "mousebuttondown":
| 679| 679| 				if (ev.button == SDL_BUTTON_LEFT)
| 680| 680| 				{
| 681| 681| 					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
| 676| 676| 				break;
| 677| 677| 
| 678| 678| 			case "mousebuttondown":
| 679|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 679|+			if (ev.button == SDL_BUTTON_LEFT)
| 680| 680| 				{
| 681| 681| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 682| 682| 					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
| 677| 677| 
| 678| 678| 			case "mousebuttondown":
| 679| 679| 				if (ev.button == SDL_BUTTON_LEFT)
| 680|    |-				{
|    | 680|+			{
| 681| 681| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 682| 682| 					if (tryPlaceWall(queued))
| 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| 			case "mousebuttondown":
| 679| 679| 				if (ev.button == SDL_BUTTON_LEFT)
| 680| 680| 				{
| 681|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 681|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 682| 682| 					if (tryPlaceWall(queued))
| 683| 683| 					{
| 684| 684| 						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
| 679| 679| 				if (ev.button == SDL_BUTTON_LEFT)
| 680| 680| 				{
| 681| 681| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 682|    |-					if (tryPlaceWall(queued))
|    | 682|+				if (tryPlaceWall(queued))
| 683| 683| 					{
| 684| 684| 						if (queued)
| 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| 				{
| 681| 681| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 682| 682| 					if (tryPlaceWall(queued))
| 683|    |-					{
|    | 683|+				{
| 684| 684| 						if (queued)
| 685| 685| 						{
| 686| 686| 							// 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
| 681| 681| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 682| 682| 					if (tryPlaceWall(queued))
| 683| 683| 					{
| 684|    |-						if (queued)
|    | 684|+					if (queued)
| 685| 685| 						{
| 686| 686| 							// continue building, just set a new starting position where we left off
| 687| 687| 							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
| 682| 682| 					if (tryPlaceWall(queued))
| 683| 683| 					{
| 684| 684| 						if (queued)
| 685|    |-						{
|    | 685|+					{
| 686| 686| 							// continue building, just set a new starting position where we left off
| 687| 687| 							placementSupport.position = placementSupport.wallEndPosition;
| 688| 688| 							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
| 683| 683| 					{
| 684| 684| 						if (queued)
| 685| 685| 						{
| 686|    |-							// continue building, just set a new starting position where we left off
|    | 686|+						// continue building, just set a new starting position where we left off
| 687| 687| 							placementSupport.position = placementSupport.wallEndPosition;
| 688| 688| 							placementSupport.wallEndPosition = undefined;
| 689| 689| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 684| 684| 						if (queued)
| 685| 685| 						{
| 686| 686| 							// continue building, just set a new starting position where we left off
| 687|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 687|+						placementSupport.position = placementSupport.wallEndPosition;
| 688| 688| 							placementSupport.wallEndPosition = undefined;
| 689| 689| 
| 690| 690| 							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
| 685| 685| 						{
| 686| 686| 							// continue building, just set a new starting position where we left off
| 687| 687| 							placementSupport.position = placementSupport.wallEndPosition;
| 688|    |-							placementSupport.wallEndPosition = undefined;
|    | 688|+						placementSupport.wallEndPosition = undefined;
| 689| 689| 
| 690| 690| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 691| 691| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 687| 687| 							placementSupport.position = placementSupport.wallEndPosition;
| 688| 688| 							placementSupport.wallEndPosition = undefined;
| 689| 689| 
| 690|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 690|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 691| 691| 						}
| 692| 692| 						else
| 693| 693| 						{
|    | [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
| 688| 688| 							placementSupport.wallEndPosition = undefined;
| 689| 689| 
| 690| 690| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 691|    |-						}
|    | 691|+					}
| 692| 692| 						else
| 693| 693| 						{
| 694| 694| 							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
| 689| 689| 
| 690| 690| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 691| 691| 						}
| 692|    |-						else
|    | 692|+					else
| 693| 693| 						{
| 694| 694| 							placementSupport.Reset();
| 695| 695| 							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
| 690| 690| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 691| 691| 						}
| 692| 692| 						else
| 693|    |-						{
|    | 693|+					{
| 694| 694| 							placementSupport.Reset();
| 695| 695| 							inputState = INPUT_NORMAL;
| 696| 696| 						}
|    | [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| 						else
| 693| 693| 						{
| 694|    |-							placementSupport.Reset();
|    | 694|+						placementSupport.Reset();
| 695| 695| 							inputState = INPUT_NORMAL;
| 696| 696| 						}
| 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| 						else
| 693| 693| 						{
| 694| 694| 							placementSupport.Reset();
| 695|    |-							inputState = INPUT_NORMAL;
|    | 695|+						inputState = INPUT_NORMAL;
| 696| 696| 						}
| 697| 697| 					}
| 698| 698| 					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
| 693| 693| 						{
| 694| 694| 							placementSupport.Reset();
| 695| 695| 							inputState = INPUT_NORMAL;
| 696|    |-						}
|    | 696|+					}
| 697| 697| 					}
| 698| 698| 					else
| 699| 699| 						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
| 694| 694| 							placementSupport.Reset();
| 695| 695| 							inputState = INPUT_NORMAL;
| 696| 696| 						}
| 697|    |-					}
|    | 697|+				}
| 698| 698| 					else
| 699| 699| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 700| 700| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 695| 695| 							inputState = INPUT_NORMAL;
| 696| 696| 						}
| 697| 697| 					}
| 698|    |-					else
|    | 698|+				else
| 699| 699| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 700| 700| 
| 701| 701| 					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
| 696| 696| 						}
| 697| 697| 					}
| 698| 698| 					else
| 699|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 699|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 700| 700| 
| 701| 701| 					updateBuildingPlacementPreview();
| 702| 702| 					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
| 698| 698| 					else
| 699| 699| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 700| 700| 
| 701|    |-					updateBuildingPlacementPreview();
|    | 701|+				updateBuildingPlacementPreview();
| 702| 702| 					return true;
| 703| 703| 				}
| 704| 704| 				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
| 699| 699| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 700| 700| 
| 701| 701| 					updateBuildingPlacementPreview();
| 702|    |-					return true;
|    | 702|+				return true;
| 703| 703| 				}
| 704| 704| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 705| 705| 				{
|    | [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
| 700| 700| 
| 701| 701| 					updateBuildingPlacementPreview();
| 702| 702| 					return true;
| 703|    |-				}
|    | 703|+			}
| 704| 704| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 705| 705| 				{
| 706| 706| 					// 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
| 701| 701| 					updateBuildingPlacementPreview();
| 702| 702| 					return true;
| 703| 703| 				}
| 704|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 704|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 705| 705| 				{
| 706| 706| 					// reset to normal input mode
| 707| 707| 					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
| 702| 702| 					return true;
| 703| 703| 				}
| 704| 704| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 705|    |-				{
|    | 705|+			{
| 706| 706| 					// reset to normal input mode
| 707| 707| 					placementSupport.Reset();
| 708| 708| 					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
| 703| 703| 				}
| 704| 704| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 705| 705| 				{
| 706|    |-					// reset to normal input mode
|    | 706|+				// reset to normal input mode
| 707| 707| 					placementSupport.Reset();
| 708| 708| 					updateBuildingPlacementPreview();
| 709| 709| 
|    | [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| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 705| 705| 				{
| 706| 706| 					// reset to normal input mode
| 707|    |-					placementSupport.Reset();
|    | 707|+				placementSupport.Reset();
| 708| 708| 					updateBuildingPlacementPreview();
| 709| 709| 
| 710| 710| 					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
| 705| 705| 				{
| 706| 706| 					// reset to normal input mode
| 707| 707| 					placementSupport.Reset();
| 708|    |-					updateBuildingPlacementPreview();
|    | 708|+				updateBuildingPlacementPreview();
| 709| 709| 
| 710| 710| 					inputState = INPUT_NORMAL;
| 711| 711| 					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
| 707| 707| 					placementSupport.Reset();
| 708| 708| 					updateBuildingPlacementPreview();
| 709| 709| 
| 710|    |-					inputState = INPUT_NORMAL;
|    | 710|+				inputState = INPUT_NORMAL;
| 711| 711| 					return true;
| 712| 712| 				}
| 713| 713| 				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
| 708| 708| 					updateBuildingPlacementPreview();
| 709| 709| 
| 710| 710| 					inputState = INPUT_NORMAL;
| 711|    |-					return true;
|    | 711|+				return true;
| 712| 712| 				}
| 713| 713| 				break;
| 714| 714| 		}
|    | [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| 
| 710| 710| 					inputState = INPUT_NORMAL;
| 711| 711| 					return true;
| 712|    |-				}
|    | 712|+			}
| 713| 713| 				break;
| 714| 714| 		}
| 715| 715| 		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
| 710| 710| 					inputState = INPUT_NORMAL;
| 711| 711| 					return true;
| 712| 712| 				}
| 713|    |-				break;
|    | 713|+			break;
| 714| 714| 		}
| 715| 715| 		break;
| 716| 716| 
|    | [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
| 852| 852| 			break;
| 853| 853| 
| 854| 854| 		case "hotkeydown":
| 855|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 855|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 856| 856| 				{
| 857| 857| 					let now = Date.now();
| 858| 858| 					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
| 853| 853| 
| 854| 854| 		case "hotkeydown":
| 855| 855| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 856|    |-				{
|    | 856|+			{
| 857| 857| 					let now = Date.now();
| 858| 858| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 859| 859| 					{
|    | [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
| 854| 854| 		case "hotkeydown":
| 855| 855| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 856| 856| 				{
| 857|    |-					let now = Date.now();
|    | 857|+				let now = Date.now();
| 858| 858| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 859| 859| 					{
| 860| 860| 						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
| 855| 855| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 856| 856| 				{
| 857| 857| 					let now = Date.now();
| 858|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 858|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 859| 859| 					{
| 860| 860| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 861| 861| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 856| 856| 				{
| 857| 857| 					let now = Date.now();
| 858| 858| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 859|    |-					{
|    | 859|+				{
| 860| 860| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 861| 861| 						{
| 862| 862| 							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
| 857| 857| 					let now = Date.now();
| 858| 858| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 859| 859| 					{
| 860|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 860|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 861| 861| 						{
| 862| 862| 							var sptr = ev.hotkey.split(".");
| 863| 863| 							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
| 858| 858| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 859| 859| 					{
| 860| 860| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 861|    |-						{
|    | 861|+					{
| 862| 862| 							var sptr = ev.hotkey.split(".");
| 863| 863| 							performGroup("snap", sptr[3]);
| 864| 864| 						}
|    | [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
| 859| 859| 					{
| 860| 860| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 861| 861| 						{
| 862|    |-							var sptr = ev.hotkey.split(".");
|    | 862|+						var sptr = ev.hotkey.split(".");
| 863| 863| 							performGroup("snap", sptr[3]);
| 864| 864| 						}
| 865| 865| 					}
|    | [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
| 860| 860| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 861| 861| 						{
| 862| 862| 							var sptr = ev.hotkey.split(".");
| 863|    |-							performGroup("snap", sptr[3]);
|    | 863|+						performGroup("snap", sptr[3]);
| 864| 864| 						}
| 865| 865| 					}
| 866| 866| 					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
| 861| 861| 						{
| 862| 862| 							var sptr = ev.hotkey.split(".");
| 863| 863| 							performGroup("snap", sptr[3]);
| 864|    |-						}
|    | 864|+					}
| 865| 865| 					}
| 866| 866| 					else
| 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| 							var sptr = ev.hotkey.split(".");
| 863| 863| 							performGroup("snap", sptr[3]);
| 864| 864| 						}
| 865|    |-					}
|    | 865|+				}
| 866| 866| 					else
| 867| 867| 					{
| 868| 868| 						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
| 863| 863| 							performGroup("snap", sptr[3]);
| 864| 864| 						}
| 865| 865| 					}
| 866|    |-					else
|    | 866|+				else
| 867| 867| 					{
| 868| 868| 						var sptr = ev.hotkey.split(".");
| 869| 869| 						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
| 864| 864| 						}
| 865| 865| 					}
| 866| 866| 					else
| 867|    |-					{
|    | 867|+				{
| 868| 868| 						var sptr = ev.hotkey.split(".");
| 869| 869| 						performGroup(sptr[2], sptr[3]);
| 870| 870| 
|    | [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| 					}
| 866| 866| 					else
| 867| 867| 					{
| 868|    |-						var sptr = ev.hotkey.split(".");
|    | 868|+					var sptr = ev.hotkey.split(".");
| 869| 869| 						performGroup(sptr[2], sptr[3]);
| 870| 870| 
| 871| 871| 						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
| 866| 866| 					else
| 867| 867| 					{
| 868| 868| 						var sptr = ev.hotkey.split(".");
| 869|    |-						performGroup(sptr[2], sptr[3]);
|    | 869|+					performGroup(sptr[2], sptr[3]);
| 870| 870| 
| 871| 871| 						doublePressTimer = now;
| 872| 872| 						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
| 868| 868| 						var sptr = ev.hotkey.split(".");
| 869| 869| 						performGroup(sptr[2], sptr[3]);
| 870| 870| 
| 871|    |-						doublePressTimer = now;
|    | 871|+					doublePressTimer = now;
| 872| 872| 						prevHotkey = ev.hotkey;
| 873| 873| 					}
| 874| 874| 				}
|    | [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| 						performGroup(sptr[2], sptr[3]);
| 870| 870| 
| 871| 871| 						doublePressTimer = now;
| 872|    |-						prevHotkey = ev.hotkey;
|    | 872|+					prevHotkey = ev.hotkey;
| 873| 873| 					}
| 874| 874| 				}
| 875| 875| 				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
| 870| 870| 
| 871| 871| 						doublePressTimer = now;
| 872| 872| 						prevHotkey = ev.hotkey;
| 873|    |-					}
|    | 873|+				}
| 874| 874| 				}
| 875| 875| 				break;
| 876| 876| 		}
|    | [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
| 871| 871| 						doublePressTimer = now;
| 872| 872| 						prevHotkey = ev.hotkey;
| 873| 873| 					}
| 874|    |-				}
|    | 874|+			}
| 875| 875| 				break;
| 876| 876| 		}
| 877| 877| 		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
| 872| 872| 						prevHotkey = ev.hotkey;
| 873| 873| 					}
| 874| 874| 				}
| 875|    |-				break;
|    | 875|+			break;
| 876| 876| 		}
| 877| 877| 		break;
| 878| 878| 
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1604|1604| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1605|1605| 
|1606|1606| 	// Reset the last idle unit, etc., if the selection type has changed.
|1607|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1607|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1608|1608| 		resetIdleUnit();
|1609|1609| 	lastIdleClasses = classes;
|1610|1610| 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 934| »   »   »   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/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  13|  13| 	{
|  14|  14| 		switch (data.type)
|  15|  15| 		{
|  16|    |-			case "mouserightrelease":
|    |  16|+		case "mouserightrelease":
|  17|  17| 			case "mouserightdoubleclick":
|  18|  18| 			{
|  19|  19| 				// Partly duplicated from handleInputAfterGui(), but with the input being
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  14|  14| 		switch (data.type)
|  15|  15| 		{
|  16|  16| 			case "mouserightrelease":
|  17|    |-			case "mouserightdoubleclick":
|    |  17|+		case "mouserightdoubleclick":
|  18|  18| 			{
|  19|  19| 				// Partly duplicated from handleInputAfterGui(), but with the input being
|  20|  20| 				// world coordinates instead of screen coordinates.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  15|  15| 		{
|  16|  16| 			case "mouserightrelease":
|  17|  17| 			case "mouserightdoubleclick":
|  18|    |-			{
|    |  18|+		{
|  19|  19| 				// Partly duplicated from handleInputAfterGui(), but with the input being
|  20|  20| 				// world coordinates instead of screen coordinates.
|  21|  21| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  16|  16| 			case "mouserightrelease":
|  17|  17| 			case "mouserightdoubleclick":
|  18|  18| 			{
|  19|    |-				// Partly duplicated from handleInputAfterGui(), but with the input being
|    |  19|+			// Partly duplicated from handleInputAfterGui(), but with the input being
|  20|  20| 				// world coordinates instead of screen coordinates.
|  21|  21| 
|  22|  22| 				if (inputState != INPUT_NORMAL)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  17|  17| 			case "mouserightdoubleclick":
|  18|  18| 			{
|  19|  19| 				// Partly duplicated from handleInputAfterGui(), but with the input being
|  20|    |-				// world coordinates instead of screen coordinates.
|    |  20|+			// world coordinates instead of screen coordinates.
|  21|  21| 
|  22|  22| 				if (inputState != INPUT_NORMAL)
|  23|  23| 					return false;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  19|  19| 				// Partly duplicated from handleInputAfterGui(), but with the input being
|  20|  20| 				// world coordinates instead of screen coordinates.
|  21|  21| 
|  22|    |-				if (inputState != INPUT_NORMAL)
|    |  22|+			if (inputState != INPUT_NORMAL)
|  23|  23| 					return false;
|  24|  24| 
|  25|  25| 				let action = determineAction(undefined, undefined, true);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  20|  20| 				// world coordinates instead of screen coordinates.
|  21|  21| 
|  22|  22| 				if (inputState != INPUT_NORMAL)
|  23|    |-					return false;
|    |  23|+				return false;
|  24|  24| 
|  25|  25| 				let action = determineAction(undefined, undefined, true);
|  26|  26| 				return action && handleUnitAction(data.target, action);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  22|  22| 				if (inputState != INPUT_NORMAL)
|  23|  23| 					return false;
|  24|  24| 
|  25|    |-				let action = determineAction(undefined, undefined, true);
|    |  25|+			let action = determineAction(undefined, undefined, true);
|  26|  26| 				return action && handleUnitAction(data.target, action);
|  27|  27| 			}
|  28|  28| 			case "mousemiddlerelease":
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  23|  23| 					return false;
|  24|  24| 
|  25|  25| 				let action = determineAction(undefined, undefined, true);
|  26|    |-				return action && handleUnitAction(data.target, action);
|    |  26|+			return action && handleUnitAction(data.target, action);
|  27|  27| 			}
|  28|  28| 			case "mousemiddlerelease":
|  29|  29| 			case "mousemiddledoubleclick":
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  24|  24| 
|  25|  25| 				let action = determineAction(undefined, undefined, true);
|  26|  26| 				return action && handleUnitAction(data.target, action);
|  27|    |-			}
|    |  27|+		}
|  28|  28| 			case "mousemiddlerelease":
|  29|  29| 			case "mousemiddledoubleclick":
|  30|  30| 			{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  25|  25| 				let action = determineAction(undefined, undefined, true);
|  26|  26| 				return action && handleUnitAction(data.target, action);
|  27|  27| 			}
|  28|    |-			case "mousemiddlerelease":
|    |  28|+		case "mousemiddlerelease":
|  29|  29| 			case "mousemiddledoubleclick":
|  30|  30| 			{
|  31|  31| 				let now = Date.now();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  26|  26| 				return action && handleUnitAction(data.target, action);
|  27|  27| 			}
|  28|  28| 			case "mousemiddlerelease":
|  29|    |-			case "mousemiddledoubleclick":
|    |  29|+		case "mousemiddledoubleclick":
|  30|  30| 			{
|  31|  31| 				let now = Date.now();
|  32|  32| 				if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  27|  27| 			}
|  28|  28| 			case "mousemiddlerelease":
|  29|  29| 			case "mousemiddledoubleclick":
|  30|    |-			{
|    |  30|+		{
|  31|  31| 				let now = Date.now();
|  32|  32| 				if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
|  33|  33| 					g_LastMapPingTime = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  28|  28| 			case "mousemiddlerelease":
|  29|  29| 			case "mousemiddledoubleclick":
|  30|  30| 			{
|  31|    |-				let now = Date.now();
|    |  31|+			let now = Date.now();
|  32|  32| 				if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
|  33|  33| 					g_LastMapPingTime = now;
|  34|  34| 					displayMapPing(data.target, Engine.GetPlayerID());
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  29|  29| 			case "mousemiddledoubleclick":
|  30|  30| 			{
|  31|  31| 				let now = Date.now();
|  32|    |-				if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
|    |  32|+			if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
|  33|  33| 					g_LastMapPingTime = now;
|  34|  34| 					displayMapPing(data.target, Engine.GetPlayerID());
|  35|  35| 					Engine.PostNetworkCommand({
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  30|  30| 			{
|  31|  31| 				let now = Date.now();
|  32|  32| 				if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
|  33|    |-					g_LastMapPingTime = now;
|    |  33|+				g_LastMapPingTime = now;
|  34|  34| 					displayMapPing(data.target, Engine.GetPlayerID());
|  35|  35| 					Engine.PostNetworkCommand({
|  36|  36| 						"type": "map-ping",
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  31|  31| 				let now = Date.now();
|  32|  32| 				if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
|  33|  33| 					g_LastMapPingTime = now;
|  34|    |-					displayMapPing(data.target, Engine.GetPlayerID());
|    |  34|+				displayMapPing(data.target, Engine.GetPlayerID());
|  35|  35| 					Engine.PostNetworkCommand({
|  36|  36| 						"type": "map-ping",
|  37|  37| 						"target": data.target
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  32|  32| 				if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
|  33|  33| 					g_LastMapPingTime = now;
|  34|  34| 					displayMapPing(data.target, Engine.GetPlayerID());
|  35|    |-					Engine.PostNetworkCommand({
|    |  35|+				Engine.PostNetworkCommand({
|  36|  36| 						"type": "map-ping",
|  37|  37| 						"target": data.target
|  38|  38| 					});
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  33|  33| 					g_LastMapPingTime = now;
|  34|  34| 					displayMapPing(data.target, Engine.GetPlayerID());
|  35|  35| 					Engine.PostNetworkCommand({
|  36|    |-						"type": "map-ping",
|    |  36|+					"type": "map-ping",
|  37|  37| 						"target": data.target
|  38|  38| 					});
|  39|  39| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  34|  34| 					displayMapPing(data.target, Engine.GetPlayerID());
|  35|  35| 					Engine.PostNetworkCommand({
|  36|  36| 						"type": "map-ping",
|  37|    |-						"target": data.target
|    |  37|+					"target": data.target
|  38|  38| 					});
|  39|  39| 					return true;
|  40|  40| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  35|  35| 					Engine.PostNetworkCommand({
|  36|  36| 						"type": "map-ping",
|  37|  37| 						"target": data.target
|  38|    |-					});
|    |  38|+				});
|  39|  39| 					return true;
|  40|  40| 				}
|  41|  41| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  36|  36| 						"type": "map-ping",
|  37|  37| 						"target": data.target
|  38|  38| 					});
|  39|    |-					return true;
|    |  39|+				return true;
|  40|  40| 				}
|  41|  41| 				break;
|  42|  42| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  37|  37| 						"target": data.target
|  38|  38| 					});
|  39|  39| 					return true;
|  40|    |-				}
|    |  40|+			}
|  41|  41| 				break;
|  42|  42| 			}
|  43|  43| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  38|  38| 					});
|  39|  39| 					return true;
|  40|  40| 				}
|  41|    |-				break;
|    |  41|+			break;
|  42|  42| 			}
|  43|  43| 		}
|  44|  44| 		return false;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  39|  39| 					return true;
|  40|  40| 				}
|  41|  41| 				break;
|  42|    |-			}
|    |  42|+		}
|  43|  43| 		}
|  44|  44| 		return false;
|  45|  45| 	}

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

binaries/data/mods/public/gui/session/minimap/MiniMap.js
|  32| »   »   »   »   if·(!g_LastMapPingTime·||·now·>·g_LastMapPingTime·+·1000)·{
|    | [NORMAL] ESLintBear (brace-rules/brace-on-same-line):
|    | Opening curly brace appears on the same line as controlling statement.
Executing section cli...

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

Imarok added a comment.EditedMay 2 2020, 6:43 PM

This is great! Can we add a keybinding to ping on the center of the current camera view?

We could. current plan was to add a keybinding so you can click anywhere on the minimap or map to do the ping.
Edit: Is there any advantage in also having your center of the view ping?

badosu added a comment.EditedMay 3 2020, 12:14 AM

We could. current plan was to add a keybinding so you can click anywhere on the minimap or map to do the ping.

Yeah, I would expect that, my suggestion was as an addition.

Edit: Is there any advantage in also having your center of the view ping?

Reaching for the minimap with the mouse might be a little imprecise, especially with ongoing action.

It also offers a faster way to ping without disrupting micro/macro (e.g. "this is my base", "this is where I am fighting/rushing", etc)

Imarok edited the summary of this revision. (Show Details)May 15 2020, 6:08 PM
Imarok edited the test plan for this revision. (Show Details)

Note to self: According to Vladislav a texture should be used to draw circles. Scaling should be done with "adding tex coords and so on". Entry point for understanding how that works could be OverlayRenderer::RenderForegroundOverlays.

Imarok updated this revision to Diff 12050.May 29 2020, 8:47 PM

This patch is still WIP.

I did this changes:

  • Rebase.
  • Use a clean way to add a new Flare to the minimap.
  • Add a button for flaring.
  • Use K as hotkey for flaring. (key + Right Click)

TODO (on my side):

  • Clean drawing of circles.
  • Limit the number of flares on the receiver side?

TODO (probably for someone else):

  • highlighted version of the flare button
  • Target Marker for flaring
  • Flaring sound
Owners added a subscriber: Restricted Owners Package.May 29 2020, 8:47 PM

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

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

Imarok updated this revision to Diff 12051.May 29 2020, 10:00 PM

Small style fixes.

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

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

wraitii added inline comments.Jun 14 2020, 1:25 PM
source/gui/ObjectTypes/CMiniMap.cpp
499

This loads up the minimap shader with MINIMAP_BASE define.

509

Here it binds the transform and the texture, and then uses the helper DrawTexture to render two triangles at the appropriate coordinates.

You should be able to do exactly the same thing, but call DrawTexture with different x,y,x2,y2 and your Flare texture.

522

See here it's doing the same for territory -> you can pretty much reuse this

549

Here it reloads the shader with MINIMAP_POINT but I think you can just keep MINIMAP_BASE

Imarok updated this revision to Diff 12316.Jun 14 2020, 8:11 PM

Use a circle texture.

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

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

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

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

Imarok added a comment.EditedJun 20 2020, 11:13 AM

Seems like this does not work with GLSL disabled.
Edit: Found another issue: when pinging at mid of the minimap border, the ping is also drawn outside of the minimap. (I thought scissoring would fix that, but doesn't seem like.)

Imarok added inline comments.Jun 20 2020, 11:52 AM
source/gui/ObjectTypes/CMiniMap.cpp
678

I needto enable scissoring here to get it. ^^

Imarok updated this revision to Diff 12405.Jun 21 2020, 4:55 PM

Correct scissoring → Don't draw parts of the ping outside the minimap.

Play the notification sound only for the one receiving the ping.

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

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

Imarok edited the summary of this revision. (Show Details)Jun 21 2020, 5:06 PM
Imarok edited the test plan for this revision. (Show Details)
Imarok updated this revision to Diff 12411.Jun 21 2020, 7:41 PM

Add frames for an animated ping.

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

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

Imarok edited the summary of this revision. (Show Details)Jun 21 2020, 7:42 PM
Imarok edited the summary of this revision. (Show Details)Jun 21 2020, 7:46 PM
Imarok edited the summary of this revision. (Show Details)Jun 21 2020, 7:57 PM
Stan added a comment.Jul 3 2020, 1:49 PM

For map ping alarmally_1.ogg could be used as placeholder

Imarok updated this revision to Diff 12950.Jul 28 2020, 5:24 PM

flare animation only in 256×256.
Use prop svn:mime-type=image/png. Maybe this helps with arcanist downloading pngs.

Imarok edited the summary of this revision. (Show Details)Jul 28 2020, 5:51 PM
Imarok edited the summary of this revision. (Show Details)

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

Linter detected issues:
Executing section Source...

source/gui/ObjectTypes/CMiniMap.h
|  37| class·CMiniMap·:·public·IGUIObject
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'classCMiniMap:' is invalid C code. Use --std or --language to configure the language.

source/ps/CStrInternStatic.h
|   1| /*·Copyright·(C)·2014·Wildfire·Games.
|    | [NORMAL] LicenseYearBear:
|    | License should have "2020" year instead of "2014"
Executing section JS...
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'execute'.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
| 547| 547| 
| 548| 548| 	"cancel-setup-trade-route":
| 549| 549| 	{
| 550|    |-		"execute":function(target, action, selection, queued)
|    | 550|+		"execute": function(target, action, selection, queued)
| 551| 551| 		{
| 552| 552| 			Engine.PostNetworkCommand({
| 553| 553| 				"type": "cancel-setup-trade-route",
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
| 592| 592| 				"cursor": "action-cancel-setup-trade-route",
| 593| 593| 				"tooltip": actionInfo.tooltip,
| 594| 594| 				"target": target
| 595|    |-			}
|    | 595|+			};
| 596| 596| 		},
| 597| 597| 		"specificness": 2,
| 598| 598| 	},
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|1594|1594| 		"x": target.x,
|1595|1595| 		"z": target.z
|1596|1596| 	});
|1597|    |-	g_MiniMapPanel.flare(target, playerID)
|    |1597|+	g_MiniMapPanel.flare(target, playerID);
|1598|1598| }
|1599|1599| 
|1600|1600| function findGatherType(gatherer, supply)

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

binaries/data/mods/public/gui/session/unit_actions.js
| 595| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/gui/session/unit_actions.js
|1597| »   g_MiniMapPanel.flare(target,·playerID)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 253| 253| 	// if two actions are possible, the first one is taken
| 254| 254| 	// thus the most specific should appear first.
| 255| 255| 
| 256|    |-	let actionInfo = undefined;
|    | 256|+	let actionInfo;
| 257| 257| 	if (preSelectedAction != ACTION_NONE)
| 258| 258| 	{
| 259| 259| 		for (let action of g_UnitActionsSortedKeys)
|    | [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
| 500| 500| 	mouseIsOverObject = (hoveredObject != null);
| 501| 501| 
| 502| 502| 	// Close the menu when interacting with the game world
| 503|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 504|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 503|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 504|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 505| 505| 		g_Menu.close();
| 506| 506| 
| 507| 507| 	// 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
| 661| 661| 		// user to continue building walls.
| 662| 662| 		switch (ev.type)
| 663| 663| 		{
| 664|    |-			case "mousemotion":
|    | 664|+		case "mousemotion":
| 665| 665| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 666| 666| 
| 667| 667| 				// 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
| 662| 662| 		switch (ev.type)
| 663| 663| 		{
| 664| 664| 			case "mousemotion":
| 665|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 665|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 666| 666| 
| 667| 667| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668| 668| 				// 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
| 664| 664| 			case "mousemotion":
| 665| 665| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 666| 666| 
| 667|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 667|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668| 668| 				// the ending point and the starting point to snap to.
| 669| 669| 				//
| 670| 670| 				// 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
| 665| 665| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 666| 666| 
| 667| 667| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668|    |-				// the ending point and the starting point to snap to.
|    | 668|+			// the ending point and the starting point to snap to.
| 669| 669| 				//
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// 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
| 666| 666| 
| 667| 667| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668| 668| 				// the ending point and the starting point to snap to.
| 669|    |-				//
|    | 669|+			//
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// 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
| 667| 667| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668| 668| 				// the ending point and the starting point to snap to.
| 669| 669| 				//
| 670|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 670|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// 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
| 668| 668| 				// the ending point and the starting point to snap to.
| 669| 669| 				//
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 671|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674| 674| 				// 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
| 669| 669| 				//
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 672|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674| 674| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675| 675| 				// 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
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 673|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674| 674| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675| 675| 				// points.
| 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
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 674|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675| 675| 				// points.
| 676| 676| 
| 677| 677| 				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
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674| 674| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675|    |-				// points.
|    | 675|+			// points.
| 676| 676| 
| 677| 677| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 678| 678| 				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
| 674| 674| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675| 675| 				// points.
| 676| 676| 
| 677|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 677|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 678| 678| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 679| 679| 
| 680| 680| 				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
| 675| 675| 				// points.
| 676| 676| 
| 677| 677| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 678|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 678|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 679| 679| 
| 680| 680| 				if (result && result.cost)
| 681| 681| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 678| 678| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 679| 679| 
| 680|    |-				if (result && result.cost)
|    | 680|+			if (result && result.cost)
| 681| 681| 				{
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					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
| 678| 678| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 679| 679| 
| 680| 680| 				if (result && result.cost)
| 681|    |-				{
|    | 681|+			{
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					placementSupport.tooltipMessage = [
| 684| 684| 						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
| 679| 679| 
| 680| 680| 				if (result && result.cost)
| 681| 681| 				{
| 682|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 682|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					placementSupport.tooltipMessage = [
| 684| 684| 						getEntityCostTooltip(result),
| 685| 685| 						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
| 680| 680| 				if (result && result.cost)
| 681| 681| 				{
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683|    |-					placementSupport.tooltipMessage = [
|    | 683|+				placementSupport.tooltipMessage = [
| 684| 684| 						getEntityCostTooltip(result),
| 685| 685| 						getNeededResourcesTooltip(neededResources)
| 686| 686| 					].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
| 681| 681| 				{
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					placementSupport.tooltipMessage = [
| 684|    |-						getEntityCostTooltip(result),
|    | 684|+					getEntityCostTooltip(result),
| 685| 685| 						getNeededResourcesTooltip(neededResources)
| 686| 686| 					].filter(tip => tip).join("\n");
| 687| 687| 				}
|    | [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
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					placementSupport.tooltipMessage = [
| 684| 684| 						getEntityCostTooltip(result),
| 685|    |-						getNeededResourcesTooltip(neededResources)
|    | 685|+					getNeededResourcesTooltip(neededResources)
| 686| 686| 					].filter(tip => tip).join("\n");
| 687| 687| 				}
| 688| 688| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 683| 683| 					placementSupport.tooltipMessage = [
| 684| 684| 						getEntityCostTooltip(result),
| 685| 685| 						getNeededResourcesTooltip(neededResources)
| 686|    |-					].filter(tip => tip).join("\n");
|    | 686|+				].filter(tip => tip).join("\n");
| 687| 687| 				}
| 688| 688| 
| 689| 689| 				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
| 684| 684| 						getEntityCostTooltip(result),
| 685| 685| 						getNeededResourcesTooltip(neededResources)
| 686| 686| 					].filter(tip => tip).join("\n");
| 687|    |-				}
|    | 687|+			}
| 688| 688| 
| 689| 689| 				break;
| 690| 690| 
|    | [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| 					].filter(tip => tip).join("\n");
| 687| 687| 				}
| 688| 688| 
| 689|    |-				break;
|    | 689|+			break;
| 690| 690| 
| 691| 691| 			case "mousebuttondown":
| 692| 692| 				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
| 688| 688| 
| 689| 689| 				break;
| 690| 690| 
| 691|    |-			case "mousebuttondown":
|    | 691|+		case "mousebuttondown":
| 692| 692| 				if (ev.button == SDL_BUTTON_LEFT)
| 693| 693| 				{
| 694| 694| 					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
| 689| 689| 				break;
| 690| 690| 
| 691| 691| 			case "mousebuttondown":
| 692|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 692|+			if (ev.button == SDL_BUTTON_LEFT)
| 693| 693| 				{
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					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
| 690| 690| 
| 691| 691| 			case "mousebuttondown":
| 692| 692| 				if (ev.button == SDL_BUTTON_LEFT)
| 693|    |-				{
|    | 693|+			{
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					if (tryPlaceWall(queued))
| 696| 696| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 			case "mousebuttondown":
| 692| 692| 				if (ev.button == SDL_BUTTON_LEFT)
| 693| 693| 				{
| 694|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 694|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					if (tryPlaceWall(queued))
| 696| 696| 					{
| 697| 697| 						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
| 692| 692| 				if (ev.button == SDL_BUTTON_LEFT)
| 693| 693| 				{
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695|    |-					if (tryPlaceWall(queued))
|    | 695|+				if (tryPlaceWall(queued))
| 696| 696| 					{
| 697| 697| 						if (queued)
| 698| 698| 						{
|    | [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
| 693| 693| 				{
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					if (tryPlaceWall(queued))
| 696|    |-					{
|    | 696|+				{
| 697| 697| 						if (queued)
| 698| 698| 						{
| 699| 699| 							// 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
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					if (tryPlaceWall(queued))
| 696| 696| 					{
| 697|    |-						if (queued)
|    | 697|+					if (queued)
| 698| 698| 						{
| 699| 699| 							// continue building, just set a new starting position where we left off
| 700| 700| 							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
| 695| 695| 					if (tryPlaceWall(queued))
| 696| 696| 					{
| 697| 697| 						if (queued)
| 698|    |-						{
|    | 698|+					{
| 699| 699| 							// continue building, just set a new starting position where we left off
| 700| 700| 							placementSupport.position = placementSupport.wallEndPosition;
| 701| 701| 							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
| 696| 696| 					{
| 697| 697| 						if (queued)
| 698| 698| 						{
| 699|    |-							// continue building, just set a new starting position where we left off
|    | 699|+						// continue building, just set a new starting position where we left off
| 700| 700| 							placementSupport.position = placementSupport.wallEndPosition;
| 701| 701| 							placementSupport.wallEndPosition = undefined;
| 702| 702| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 						if (queued)
| 698| 698| 						{
| 699| 699| 							// continue building, just set a new starting position where we left off
| 700|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 700|+						placementSupport.position = placementSupport.wallEndPosition;
| 701| 701| 							placementSupport.wallEndPosition = undefined;
| 702| 702| 
| 703| 703| 							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
| 698| 698| 						{
| 699| 699| 							// continue building, just set a new starting position where we left off
| 700| 700| 							placementSupport.position = placementSupport.wallEndPosition;
| 701|    |-							placementSupport.wallEndPosition = undefined;
|    | 701|+						placementSupport.wallEndPosition = undefined;
| 702| 702| 
| 703| 703| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 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
| 700| 700| 							placementSupport.position = placementSupport.wallEndPosition;
| 701| 701| 							placementSupport.wallEndPosition = undefined;
| 702| 702| 
| 703|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 703|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 704| 704| 						}
| 705| 705| 						else
| 706| 706| 						{
|    | [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| 							placementSupport.wallEndPosition = undefined;
| 702| 702| 
| 703| 703| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 704|    |-						}
|    | 704|+					}
| 705| 705| 						else
| 706| 706| 						{
| 707| 707| 							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
| 702| 702| 
| 703| 703| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 704| 704| 						}
| 705|    |-						else
|    | 705|+					else
| 706| 706| 						{
| 707| 707| 							placementSupport.Reset();
| 708| 708| 							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
| 703| 703| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 704| 704| 						}
| 705| 705| 						else
| 706|    |-						{
|    | 706|+					{
| 707| 707| 							placementSupport.Reset();
| 708| 708| 							inputState = INPUT_NORMAL;
| 709| 709| 						}
|    | [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
| 704| 704| 						}
| 705| 705| 						else
| 706| 706| 						{
| 707|    |-							placementSupport.Reset();
|    | 707|+						placementSupport.Reset();
| 708| 708| 							inputState = INPUT_NORMAL;
| 709| 709| 						}
| 710| 710| 					}
|    | [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
| 705| 705| 						else
| 706| 706| 						{
| 707| 707| 							placementSupport.Reset();
| 708|    |-							inputState = INPUT_NORMAL;
|    | 708|+						inputState = INPUT_NORMAL;
| 709| 709| 						}
| 710| 710| 					}
| 711| 711| 					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
| 706| 706| 						{
| 707| 707| 							placementSupport.Reset();
| 708| 708| 							inputState = INPUT_NORMAL;
| 709|    |-						}
|    | 709|+					}
| 710| 710| 					}
| 711| 711| 					else
| 712| 712| 						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
| 707| 707| 							placementSupport.Reset();
| 708| 708| 							inputState = INPUT_NORMAL;
| 709| 709| 						}
| 710|    |-					}
|    | 710|+				}
| 711| 711| 					else
| 712| 712| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
|    | [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| 							inputState = INPUT_NORMAL;
| 709| 709| 						}
| 710| 710| 					}
| 711|    |-					else
|    | 711|+				else
| 712| 712| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
| 714| 714| 					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
| 709| 709| 						}
| 710| 710| 					}
| 711| 711| 					else
| 712|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 712|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 					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
| 711| 711| 					else
| 712| 712| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 					return true;
| 716| 716| 				}
| 717| 717| 				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
| 712| 712| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
| 714| 714| 					updateBuildingPlacementPreview();
| 715|    |-					return true;
|    | 715|+				return true;
| 716| 716| 				}
| 717| 717| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
|    | [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
| 713| 713| 
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 					return true;
| 716|    |-				}
|    | 716|+			}
| 717| 717| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
| 719| 719| 					// 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
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 					return true;
| 716| 716| 				}
| 717|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 717|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
| 719| 719| 					// reset to normal input mode
| 720| 720| 					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
| 715| 715| 					return true;
| 716| 716| 				}
| 717| 717| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718|    |-				{
|    | 718|+			{
| 719| 719| 					// reset to normal input mode
| 720| 720| 					placementSupport.Reset();
| 721| 721| 					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
| 716| 716| 				}
| 717| 717| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
| 719|    |-					// reset to normal input mode
|    | 719|+				// reset to normal input mode
| 720| 720| 					placementSupport.Reset();
| 721| 721| 					updateBuildingPlacementPreview();
| 722| 722| 
|    | [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| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
| 719| 719| 					// reset to normal input mode
| 720|    |-					placementSupport.Reset();
|    | 720|+				placementSupport.Reset();
| 721| 721| 					updateBuildingPlacementPreview();
| 722| 722| 
| 723| 723| 					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
| 718| 718| 				{
| 719| 719| 					// reset to normal input mode
| 720| 720| 					placementSupport.Reset();
| 721|    |-					updateBuildingPlacementPreview();
|    | 721|+				updateBuildingPlacementPreview();
| 722| 722| 
| 723| 723| 					inputState = INPUT_NORMAL;
| 724| 724| 					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
| 720| 720| 					placementSupport.Reset();
| 721| 721| 					updateBuildingPlacementPreview();
| 722| 722| 
| 723|    |-					inputState = INPUT_NORMAL;
|    | 723|+				inputState = INPUT_NORMAL;
| 724| 724| 					return true;
| 725| 725| 				}
| 726| 726| 				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
| 721| 721| 					updateBuildingPlacementPreview();
| 722| 722| 
| 723| 723| 					inputState = INPUT_NORMAL;
| 724|    |-					return true;
|    | 724|+				return true;
| 725| 725| 				}
| 726| 726| 				break;
| 727| 727| 		}
|    | [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
| 722| 722| 
| 723| 723| 					inputState = INPUT_NORMAL;
| 724| 724| 					return true;
| 725|    |-				}
|    | 725|+			}
| 726| 726| 				break;
| 727| 727| 		}
| 728| 728| 		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
| 723| 723| 					inputState = INPUT_NORMAL;
| 724| 724| 					return true;
| 725| 725| 				}
| 726|    |-				break;
|    | 726|+			break;
| 727| 727| 		}
| 728| 728| 		break;
| 729| 729| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 			break;
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 868|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869|    |-				{
|    | 869|+			{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870|    |-					let now = Date.now();
|    | 870|+				let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 871|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872|    |-					{
|    | 872|+				{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 873|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874|    |-						{
|    | 874|+					{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875|    |-							var sptr = ev.hotkey.split(".");
|    | 875|+						var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876|    |-							performGroup("snap", sptr[3]);
|    | 876|+						performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877|    |-						}
|    | 877|+					}
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878|    |-					}
|    | 878|+				}
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879|    |-					else
|    | 879|+				else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
| 880|    |-					{
|    | 880|+				{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
| 881|    |-						var sptr = ev.hotkey.split(".");
|    | 881|+					var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882|    |-						performGroup(sptr[2], sptr[3]);
|    | 882|+					performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884|    |-						doublePressTimer = now;
|    | 884|+					doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885|    |-						prevHotkey = ev.hotkey;
|    | 885|+					prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888| 888| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886|    |-					}
|    | 886|+				}
| 887| 887| 				}
| 888| 888| 				break;
| 889| 889| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887|    |-				}
|    | 887|+			}
| 888| 888| 				break;
| 889| 889| 		}
| 890| 890| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888|    |-				break;
|    | 888|+			break;
| 889| 889| 		}
| 890| 890| 		break;
| 891| 891| 
|    | [NORMAL] ESLintBear (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
|1632|1632| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1633|1633| 
|1634|1634| 	// Reset the last idle unit, etc., if the selection type has changed.
|1635|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1635|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1636|1636| 		resetIdleUnit();
|1637|1637| 	lastIdleClasses = classes;
|1638|1638| 

binaries/data/mods/public/gui/session/input.js
| 273| »   »   »   let·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'r' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
| 281| »   »   »   let·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'r' is already declared in the upper scope.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 947| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1152|1152| 
|1153|1153| 	// send Metadata info if any
|1154|1154| 	if (cmd.metadata)
|1155|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1155|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1156|1156| 
|1157|1157| 	// Tell the units to start building this new entity
|1158|1158| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1152|1152| 
|1153|1153| 	// send Metadata info if any
|1154|1154| 	if (cmd.metadata)
|1155|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1155|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1156|1156| 
|1157|1157| 	// Tell the units to start building this new entity
|1158|1158| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1152|1152| 
|1153|1153| 	// send Metadata info if any
|1154|1154| 	if (cmd.metadata)
|1155|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1155|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1156|1156| 
|1157|1157| 	// Tell the units to start building this new entity
|1158|1158| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (spaced-comment):
|    | Expected space or tab after '//' in comment.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1260|1260| 		}
|1261|1261| 
|1262|1262| 		lastTowerControlGroup = cmpSnappedStartObstruction.GetControlGroup();
|1263|    |-		//warn("setting lastTowerControlGroup to control group of start snapped entity " + cmd.startSnappedEntity + ": " + lastTowerControlGroup);
|    |1263|+		// warn("setting lastTowerControlGroup to control group of start snapped entity " + cmd.startSnappedEntity + ": " + lastTowerControlGroup);
|1264|1264| 	}
|1265|1265| 
|1266|1266| 	var i = 0;
|    | [NORMAL] ESLintBear (spaced-comment):
|    | Expected space or tab after '//' in comment.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1324|1324| 
|1325|1325| 				if (i > 0)
|1326|1326| 				{
|1327|    |-					//warn("   updating previous wall piece's secondary control group to " + newTowerControlGroup);
|    |1327|+					// warn("   updating previous wall piece's secondary control group to " + newTowerControlGroup);
|1328|1328| 					var cmpPreviousObstruction = Engine.QueryInterface(pieces[i-1].ent, IID_Obstruction);
|1329|1329| 					// TODO: ensure that cmpPreviousObstruction exists
|1330|1330| 					// TODO: ensure that the previous obstruction does not yet have a secondary control group set
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1487|1487| 		// Check that all its members are selected
|1488|1488| 		var fid = formationIds[0];
|1489|1489| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1490|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1491|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1490|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1491|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1492|1492| 		{
|1493|1493| 			cmpFormation.DeleteTwinFormations();
|1494|1494| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1590|1590| 	while (clusters.length > 1)
|1591|1591| 	{
|1592|1592| 		// search two clusters that are closer than the required distance
|1593|    |-		let closeClusters = undefined;
|    |1593|+		let closeClusters;
|1594|1594| 
|1595|1595| 		for (let i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1596|1596| 			for (let j = i - 1; j >= 0 && !closeClusters; --j)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1595|1595| 		for (let i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1596|1596| 			for (let j = i - 1; j >= 0 && !closeClusters; --j)
|1597|1597| 				if (matrix[i][j] < distSq)
|1598|    |-					closeClusters = [i,j];
|    |1598|+					closeClusters = [i, j];
|1599|1599| 
|1600|1600| 		// if no more close clusters found, just return all found clusters so far
|1601|1601| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1619|1619| 		}
|1620|1620| 		// remove the rows and columns in the matrix for the merged clusters,
|1621|1621| 		// and the clusters themselves from the cluster list
|1622|    |-		clusters.splice(closeClusters[0],1);
|    |1622|+		clusters.splice(closeClusters[0], 1);
|1623|1623| 		clusters.splice(closeClusters[1],1);
|1624|1624| 		matrix.splice(closeClusters[0],1);
|1625|1625| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1620|1620| 		// remove the rows and columns in the matrix for the merged clusters,
|1621|1621| 		// and the clusters themselves from the cluster list
|1622|1622| 		clusters.splice(closeClusters[0],1);
|1623|    |-		clusters.splice(closeClusters[1],1);
|    |1623|+		clusters.splice(closeClusters[1], 1);
|1624|1624| 		matrix.splice(closeClusters[0],1);
|1625|1625| 		matrix.splice(closeClusters[1],1);
|1626|1626| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1621|1621| 		// and the clusters themselves from the cluster list
|1622|1622| 		clusters.splice(closeClusters[0],1);
|1623|1623| 		clusters.splice(closeClusters[1],1);
|1624|    |-		matrix.splice(closeClusters[0],1);
|    |1624|+		matrix.splice(closeClusters[0], 1);
|1625|1625| 		matrix.splice(closeClusters[1],1);
|1626|1626| 		for (let i = 0; i < matrix.length; ++i)
|1627|1627| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1622|1622| 		clusters.splice(closeClusters[0],1);
|1623|1623| 		clusters.splice(closeClusters[1],1);
|1624|1624| 		matrix.splice(closeClusters[0],1);
|1625|    |-		matrix.splice(closeClusters[1],1);
|    |1625|+		matrix.splice(closeClusters[1], 1);
|1626|1626| 		for (let i = 0; i < matrix.length; ++i)
|1627|1627| 		{
|1628|1628| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1626|1626| 		for (let i = 0; i < matrix.length; ++i)
|1627|1627| 		{
|1628|1628| 			if (matrix[i].length > closeClusters[0])
|1629|    |-				matrix[i].splice(closeClusters[0],1);
|    |1629|+				matrix[i].splice(closeClusters[0], 1);
|1630|1630| 			if (matrix[i].length > closeClusters[1])
|1631|1631| 				matrix[i].splice(closeClusters[1],1);
|1632|1632| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1628|1628| 			if (matrix[i].length > closeClusters[0])
|1629|1629| 				matrix[i].splice(closeClusters[0],1);
|1630|1630| 			if (matrix[i].length > closeClusters[1])
|1631|    |-				matrix[i].splice(closeClusters[1],1);
|    |1631|+				matrix[i].splice(closeClusters[1], 1);
|1632|1632| 		}
|1633|1633| 		// add a new row of distances to the matrix and the new cluster
|1634|1634| 		clusters.push(newCluster);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1550| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1593| »   »   let·closeClusters·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'closeClusters' to 'undefined'.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/messages.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/messages.js
| 350| 350| 	let notificationText =
| 351| 351| 		notification.instructions.reduce((instructions, item) =>
| 352| 352| 			instructions + (typeof item == "string" ? translate(item) : colorizeHotkey(translate(item.text), item.hotkey)),
| 353|    |-			"");
|    | 353|+		"");
| 354| 354| 
| 355| 355| 	Engine.GetGUIObjectByName("tutorialText").caption = g_TutorialMessages.concat(setStringTags(notificationText, g_TutorialNewMessageTags)).join("\n");
| 356| 356| 	g_TutorialMessages.push(notificationText);
Executing section cli...

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

Imarok retitled this revision from [WIP] Map ping to [WIP] Map flares.Jul 29 2020, 12:12 AM
Imarok edited the summary of this revision. (Show Details)
Imarok edited the test plan for this revision. (Show Details)
Imarok updated this revision to Diff 12954.Jul 29 2020, 12:14 AM

Use alarmally_1.ogg. Consistently name it flare.

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

Linter detected issues:
Executing section Source...

source/ps/CStrInternStatic.h
|   1| /*·Copyright·(C)·2014·Wildfire·Games.
|    | [NORMAL] LicenseYearBear:
|    | License should have "2020" year instead of "2014"

source/gui/ObjectTypes/CMiniMap.h
|  37| class·CMiniMap·:·public·IGUIObject
|    | [MAJOR] CPPCheckBear (syntaxError):
|    | Code 'classCMiniMap:' is invalid C code. Use --std or --language to configure the language.
Executing section JS...
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/messages.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/messages.js
| 350| 350| 	let notificationText =
| 351| 351| 		notification.instructions.reduce((instructions, item) =>
| 352| 352| 			instructions + (typeof item == "string" ? translate(item) : colorizeHotkey(translate(item.text), item.hotkey)),
| 353|    |-			"");
|    | 353|+		"");
| 354| 354| 
| 355| 355| 	Engine.GetGUIObjectByName("tutorialText").caption = g_TutorialMessages.concat(setStringTags(notificationText, g_TutorialNewMessageTags)).join("\n");
| 356| 356| 	g_TutorialMessages.push(notificationText);
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 253| 253| 	// if two actions are possible, the first one is taken
| 254| 254| 	// thus the most specific should appear first.
| 255| 255| 
| 256|    |-	let actionInfo = undefined;
|    | 256|+	let actionInfo;
| 257| 257| 	if (preSelectedAction != ACTION_NONE)
| 258| 258| 	{
| 259| 259| 		for (let action of g_UnitActionsSortedKeys)
|    | [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
| 500| 500| 	mouseIsOverObject = (hoveredObject != null);
| 501| 501| 
| 502| 502| 	// Close the menu when interacting with the game world
| 503|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 504|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 503|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 504|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 505| 505| 		g_Menu.close();
| 506| 506| 
| 507| 507| 	// 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
| 661| 661| 		// user to continue building walls.
| 662| 662| 		switch (ev.type)
| 663| 663| 		{
| 664|    |-			case "mousemotion":
|    | 664|+		case "mousemotion":
| 665| 665| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 666| 666| 
| 667| 667| 				// 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
| 662| 662| 		switch (ev.type)
| 663| 663| 		{
| 664| 664| 			case "mousemotion":
| 665|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 665|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 666| 666| 
| 667| 667| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668| 668| 				// 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
| 664| 664| 			case "mousemotion":
| 665| 665| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 666| 666| 
| 667|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 667|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668| 668| 				// the ending point and the starting point to snap to.
| 669| 669| 				//
| 670| 670| 				// 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
| 665| 665| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 666| 666| 
| 667| 667| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668|    |-				// the ending point and the starting point to snap to.
|    | 668|+			// the ending point and the starting point to snap to.
| 669| 669| 				//
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// 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
| 666| 666| 
| 667| 667| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668| 668| 				// the ending point and the starting point to snap to.
| 669|    |-				//
|    | 669|+			//
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// 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
| 667| 667| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 668| 668| 				// the ending point and the starting point to snap to.
| 669| 669| 				//
| 670|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 670|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// 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
| 668| 668| 				// the ending point and the starting point to snap to.
| 669| 669| 				//
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 671|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674| 674| 				// 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
| 669| 669| 				//
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 672|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674| 674| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675| 675| 				// 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
| 670| 670| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 673|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674| 674| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675| 675| 				// points.
| 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
| 671| 671| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 674|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675| 675| 				// points.
| 676| 676| 
| 677| 677| 				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
| 672| 672| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 673| 673| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 674| 674| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675|    |-				// points.
|    | 675|+			// points.
| 676| 676| 
| 677| 677| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 678| 678| 				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
| 674| 674| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 675| 675| 				// points.
| 676| 676| 
| 677|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 677|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 678| 678| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 679| 679| 
| 680| 680| 				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
| 675| 675| 				// points.
| 676| 676| 
| 677| 677| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 678|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 678|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 679| 679| 
| 680| 680| 				if (result && result.cost)
| 681| 681| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 678| 678| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 679| 679| 
| 680|    |-				if (result && result.cost)
|    | 680|+			if (result && result.cost)
| 681| 681| 				{
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					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
| 678| 678| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 679| 679| 
| 680| 680| 				if (result && result.cost)
| 681|    |-				{
|    | 681|+			{
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					placementSupport.tooltipMessage = [
| 684| 684| 						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
| 679| 679| 
| 680| 680| 				if (result && result.cost)
| 681| 681| 				{
| 682|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 682|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					placementSupport.tooltipMessage = [
| 684| 684| 						getEntityCostTooltip(result),
| 685| 685| 						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
| 680| 680| 				if (result && result.cost)
| 681| 681| 				{
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683|    |-					placementSupport.tooltipMessage = [
|    | 683|+				placementSupport.tooltipMessage = [
| 684| 684| 						getEntityCostTooltip(result),
| 685| 685| 						getNeededResourcesTooltip(neededResources)
| 686| 686| 					].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
| 681| 681| 				{
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					placementSupport.tooltipMessage = [
| 684|    |-						getEntityCostTooltip(result),
|    | 684|+					getEntityCostTooltip(result),
| 685| 685| 						getNeededResourcesTooltip(neededResources)
| 686| 686| 					].filter(tip => tip).join("\n");
| 687| 687| 				}
|    | [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
| 682| 682| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 683| 683| 					placementSupport.tooltipMessage = [
| 684| 684| 						getEntityCostTooltip(result),
| 685|    |-						getNeededResourcesTooltip(neededResources)
|    | 685|+					getNeededResourcesTooltip(neededResources)
| 686| 686| 					].filter(tip => tip).join("\n");
| 687| 687| 				}
| 688| 688| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 683| 683| 					placementSupport.tooltipMessage = [
| 684| 684| 						getEntityCostTooltip(result),
| 685| 685| 						getNeededResourcesTooltip(neededResources)
| 686|    |-					].filter(tip => tip).join("\n");
|    | 686|+				].filter(tip => tip).join("\n");
| 687| 687| 				}
| 688| 688| 
| 689| 689| 				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
| 684| 684| 						getEntityCostTooltip(result),
| 685| 685| 						getNeededResourcesTooltip(neededResources)
| 686| 686| 					].filter(tip => tip).join("\n");
| 687|    |-				}
|    | 687|+			}
| 688| 688| 
| 689| 689| 				break;
| 690| 690| 
|    | [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| 					].filter(tip => tip).join("\n");
| 687| 687| 				}
| 688| 688| 
| 689|    |-				break;
|    | 689|+			break;
| 690| 690| 
| 691| 691| 			case "mousebuttondown":
| 692| 692| 				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
| 688| 688| 
| 689| 689| 				break;
| 690| 690| 
| 691|    |-			case "mousebuttondown":
|    | 691|+		case "mousebuttondown":
| 692| 692| 				if (ev.button == SDL_BUTTON_LEFT)
| 693| 693| 				{
| 694| 694| 					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
| 689| 689| 				break;
| 690| 690| 
| 691| 691| 			case "mousebuttondown":
| 692|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 692|+			if (ev.button == SDL_BUTTON_LEFT)
| 693| 693| 				{
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					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
| 690| 690| 
| 691| 691| 			case "mousebuttondown":
| 692| 692| 				if (ev.button == SDL_BUTTON_LEFT)
| 693|    |-				{
|    | 693|+			{
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					if (tryPlaceWall(queued))
| 696| 696| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 			case "mousebuttondown":
| 692| 692| 				if (ev.button == SDL_BUTTON_LEFT)
| 693| 693| 				{
| 694|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 694|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					if (tryPlaceWall(queued))
| 696| 696| 					{
| 697| 697| 						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
| 692| 692| 				if (ev.button == SDL_BUTTON_LEFT)
| 693| 693| 				{
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695|    |-					if (tryPlaceWall(queued))
|    | 695|+				if (tryPlaceWall(queued))
| 696| 696| 					{
| 697| 697| 						if (queued)
| 698| 698| 						{
|    | [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
| 693| 693| 				{
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					if (tryPlaceWall(queued))
| 696|    |-					{
|    | 696|+				{
| 697| 697| 						if (queued)
| 698| 698| 						{
| 699| 699| 							// 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
| 694| 694| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 695| 695| 					if (tryPlaceWall(queued))
| 696| 696| 					{
| 697|    |-						if (queued)
|    | 697|+					if (queued)
| 698| 698| 						{
| 699| 699| 							// continue building, just set a new starting position where we left off
| 700| 700| 							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
| 695| 695| 					if (tryPlaceWall(queued))
| 696| 696| 					{
| 697| 697| 						if (queued)
| 698|    |-						{
|    | 698|+					{
| 699| 699| 							// continue building, just set a new starting position where we left off
| 700| 700| 							placementSupport.position = placementSupport.wallEndPosition;
| 701| 701| 							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
| 696| 696| 					{
| 697| 697| 						if (queued)
| 698| 698| 						{
| 699|    |-							// continue building, just set a new starting position where we left off
|    | 699|+						// continue building, just set a new starting position where we left off
| 700| 700| 							placementSupport.position = placementSupport.wallEndPosition;
| 701| 701| 							placementSupport.wallEndPosition = undefined;
| 702| 702| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 						if (queued)
| 698| 698| 						{
| 699| 699| 							// continue building, just set a new starting position where we left off
| 700|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 700|+						placementSupport.position = placementSupport.wallEndPosition;
| 701| 701| 							placementSupport.wallEndPosition = undefined;
| 702| 702| 
| 703| 703| 							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
| 698| 698| 						{
| 699| 699| 							// continue building, just set a new starting position where we left off
| 700| 700| 							placementSupport.position = placementSupport.wallEndPosition;
| 701|    |-							placementSupport.wallEndPosition = undefined;
|    | 701|+						placementSupport.wallEndPosition = undefined;
| 702| 702| 
| 703| 703| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 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
| 700| 700| 							placementSupport.position = placementSupport.wallEndPosition;
| 701| 701| 							placementSupport.wallEndPosition = undefined;
| 702| 702| 
| 703|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 703|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 704| 704| 						}
| 705| 705| 						else
| 706| 706| 						{
|    | [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| 							placementSupport.wallEndPosition = undefined;
| 702| 702| 
| 703| 703| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 704|    |-						}
|    | 704|+					}
| 705| 705| 						else
| 706| 706| 						{
| 707| 707| 							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
| 702| 702| 
| 703| 703| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 704| 704| 						}
| 705|    |-						else
|    | 705|+					else
| 706| 706| 						{
| 707| 707| 							placementSupport.Reset();
| 708| 708| 							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
| 703| 703| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 704| 704| 						}
| 705| 705| 						else
| 706|    |-						{
|    | 706|+					{
| 707| 707| 							placementSupport.Reset();
| 708| 708| 							inputState = INPUT_NORMAL;
| 709| 709| 						}
|    | [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
| 704| 704| 						}
| 705| 705| 						else
| 706| 706| 						{
| 707|    |-							placementSupport.Reset();
|    | 707|+						placementSupport.Reset();
| 708| 708| 							inputState = INPUT_NORMAL;
| 709| 709| 						}
| 710| 710| 					}
|    | [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
| 705| 705| 						else
| 706| 706| 						{
| 707| 707| 							placementSupport.Reset();
| 708|    |-							inputState = INPUT_NORMAL;
|    | 708|+						inputState = INPUT_NORMAL;
| 709| 709| 						}
| 710| 710| 					}
| 711| 711| 					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
| 706| 706| 						{
| 707| 707| 							placementSupport.Reset();
| 708| 708| 							inputState = INPUT_NORMAL;
| 709|    |-						}
|    | 709|+					}
| 710| 710| 					}
| 711| 711| 					else
| 712| 712| 						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
| 707| 707| 							placementSupport.Reset();
| 708| 708| 							inputState = INPUT_NORMAL;
| 709| 709| 						}
| 710|    |-					}
|    | 710|+				}
| 711| 711| 					else
| 712| 712| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
|    | [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| 							inputState = INPUT_NORMAL;
| 709| 709| 						}
| 710| 710| 					}
| 711|    |-					else
|    | 711|+				else
| 712| 712| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
| 714| 714| 					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
| 709| 709| 						}
| 710| 710| 					}
| 711| 711| 					else
| 712|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 712|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 					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
| 711| 711| 					else
| 712| 712| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 					return true;
| 716| 716| 				}
| 717| 717| 				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
| 712| 712| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 713| 713| 
| 714| 714| 					updateBuildingPlacementPreview();
| 715|    |-					return true;
|    | 715|+				return true;
| 716| 716| 				}
| 717| 717| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
|    | [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
| 713| 713| 
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 					return true;
| 716|    |-				}
|    | 716|+			}
| 717| 717| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
| 719| 719| 					// 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
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 					return true;
| 716| 716| 				}
| 717|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 717|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
| 719| 719| 					// reset to normal input mode
| 720| 720| 					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
| 715| 715| 					return true;
| 716| 716| 				}
| 717| 717| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718|    |-				{
|    | 718|+			{
| 719| 719| 					// reset to normal input mode
| 720| 720| 					placementSupport.Reset();
| 721| 721| 					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
| 716| 716| 				}
| 717| 717| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
| 719|    |-					// reset to normal input mode
|    | 719|+				// reset to normal input mode
| 720| 720| 					placementSupport.Reset();
| 721| 721| 					updateBuildingPlacementPreview();
| 722| 722| 
|    | [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| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 718| 718| 				{
| 719| 719| 					// reset to normal input mode
| 720|    |-					placementSupport.Reset();
|    | 720|+				placementSupport.Reset();
| 721| 721| 					updateBuildingPlacementPreview();
| 722| 722| 
| 723| 723| 					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
| 718| 718| 				{
| 719| 719| 					// reset to normal input mode
| 720| 720| 					placementSupport.Reset();
| 721|    |-					updateBuildingPlacementPreview();
|    | 721|+				updateBuildingPlacementPreview();
| 722| 722| 
| 723| 723| 					inputState = INPUT_NORMAL;
| 724| 724| 					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
| 720| 720| 					placementSupport.Reset();
| 721| 721| 					updateBuildingPlacementPreview();
| 722| 722| 
| 723|    |-					inputState = INPUT_NORMAL;
|    | 723|+				inputState = INPUT_NORMAL;
| 724| 724| 					return true;
| 725| 725| 				}
| 726| 726| 				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
| 721| 721| 					updateBuildingPlacementPreview();
| 722| 722| 
| 723| 723| 					inputState = INPUT_NORMAL;
| 724|    |-					return true;
|    | 724|+				return true;
| 725| 725| 				}
| 726| 726| 				break;
| 727| 727| 		}
|    | [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
| 722| 722| 
| 723| 723| 					inputState = INPUT_NORMAL;
| 724| 724| 					return true;
| 725|    |-				}
|    | 725|+			}
| 726| 726| 				break;
| 727| 727| 		}
| 728| 728| 		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
| 723| 723| 					inputState = INPUT_NORMAL;
| 724| 724| 					return true;
| 725| 725| 				}
| 726|    |-				break;
|    | 726|+			break;
| 727| 727| 		}
| 728| 728| 		break;
| 729| 729| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 			break;
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 868|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869|    |-				{
|    | 869|+			{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870|    |-					let now = Date.now();
|    | 870|+				let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 871|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872|    |-					{
|    | 872|+				{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 873|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874|    |-						{
|    | 874|+					{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875|    |-							var sptr = ev.hotkey.split(".");
|    | 875|+						var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876|    |-							performGroup("snap", sptr[3]);
|    | 876|+						performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877|    |-						}
|    | 877|+					}
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878|    |-					}
|    | 878|+				}
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879|    |-					else
|    | 879|+				else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
| 880|    |-					{
|    | 880|+				{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
| 881|    |-						var sptr = ev.hotkey.split(".");
|    | 881|+					var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882|    |-						performGroup(sptr[2], sptr[3]);
|    | 882|+					performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884|    |-						doublePressTimer = now;
|    | 884|+					doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885|    |-						prevHotkey = ev.hotkey;
|    | 885|+					prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888| 888| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886|    |-					}
|    | 886|+				}
| 887| 887| 				}
| 888| 888| 				break;
| 889| 889| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887|    |-				}
|    | 887|+			}
| 888| 888| 				break;
| 889| 889| 		}
| 890| 890| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888|    |-				break;
|    | 888|+			break;
| 889| 889| 		}
| 890| 890| 		break;
| 891| 891| 
|    | [NORMAL] ESLintBear (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
|1632|1632| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1633|1633| 
|1634|1634| 	// Reset the last idle unit, etc., if the selection type has changed.
|1635|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1635|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1636|1636| 		resetIdleUnit();
|1637|1637| 	lastIdleClasses = classes;
|1638|1638| 

binaries/data/mods/public/gui/session/input.js
| 273| »   »   »   let·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'r' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
| 281| »   »   »   let·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'r' is already declared in the upper scope.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/gui/session/input.js
| 947| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'execute'.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
| 547| 547| 
| 548| 548| 	"cancel-setup-trade-route":
| 549| 549| 	{
| 550|    |-		"execute":function(target, action, selection, queued)
|    | 550|+		"execute": function(target, action, selection, queued)
| 551| 551| 		{
| 552| 552| 			Engine.PostNetworkCommand({
| 553| 553| 				"type": "cancel-setup-trade-route",
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
| 592| 592| 				"cursor": "action-cancel-setup-trade-route",
| 593| 593| 				"tooltip": actionInfo.tooltip,
| 594| 594| 				"target": target
| 595|    |-			}
|    | 595|+			};
| 596| 596| 		},
| 597| 597| 		"specificness": 2,
| 598| 598| 	},
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/unit_actions.js
|1594|1594| 		"x": target.x,
|1595|1595| 		"z": target.z
|1596|1596| 	});
|1597|    |-	g_MiniMapPanel.flare(target, playerID)
|    |1597|+	g_MiniMapPanel.flare(target, playerID);
|1598|1598| }
|1599|1599| 
|1600|1600| function findGatherType(gatherer, supply)

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

binaries/data/mods/public/gui/session/unit_actions.js
| 595| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/gui/session/unit_actions.js
|1597| »   g_MiniMapPanel.flare(target,·playerID)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1152|1152| 
|1153|1153| 	// send Metadata info if any
|1154|1154| 	if (cmd.metadata)
|1155|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1155|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1156|1156| 
|1157|1157| 	// Tell the units to start building this new entity
|1158|1158| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1152|1152| 
|1153|1153| 	// send Metadata info if any
|1154|1154| 	if (cmd.metadata)
|1155|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1155|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1156|1156| 
|1157|1157| 	// Tell the units to start building this new entity
|1158|1158| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1152|1152| 
|1153|1153| 	// send Metadata info if any
|1154|1154| 	if (cmd.metadata)
|1155|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1155|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1156|1156| 
|1157|1157| 	// Tell the units to start building this new entity
|1158|1158| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (spaced-comment):
|    | Expected space or tab after '//' in comment.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1260|1260| 		}
|1261|1261| 
|1262|1262| 		lastTowerControlGroup = cmpSnappedStartObstruction.GetControlGroup();
|1263|    |-		//warn("setting lastTowerControlGroup to control group of start snapped entity " + cmd.startSnappedEntity + ": " + lastTowerControlGroup);
|    |1263|+		// warn("setting lastTowerControlGroup to control group of start snapped entity " + cmd.startSnappedEntity + ": " + lastTowerControlGroup);
|1264|1264| 	}
|1265|1265| 
|1266|1266| 	var i = 0;
|    | [NORMAL] ESLintBear (spaced-comment):
|    | Expected space or tab after '//' in comment.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1324|1324| 
|1325|1325| 				if (i > 0)
|1326|1326| 				{
|1327|    |-					//warn("   updating previous wall piece's secondary control group to " + newTowerControlGroup);
|    |1327|+					// warn("   updating previous wall piece's secondary control group to " + newTowerControlGroup);
|1328|1328| 					var cmpPreviousObstruction = Engine.QueryInterface(pieces[i-1].ent, IID_Obstruction);
|1329|1329| 					// TODO: ensure that cmpPreviousObstruction exists
|1330|1330| 					// TODO: ensure that the previous obstruction does not yet have a secondary control group set
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1487|1487| 		// Check that all its members are selected
|1488|1488| 		var fid = formationIds[0];
|1489|1489| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1490|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1491|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1490|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1491|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1492|1492| 		{
|1493|1493| 			cmpFormation.DeleteTwinFormations();
|1494|1494| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1590|1590| 	while (clusters.length > 1)
|1591|1591| 	{
|1592|1592| 		// search two clusters that are closer than the required distance
|1593|    |-		let closeClusters = undefined;
|    |1593|+		let closeClusters;
|1594|1594| 
|1595|1595| 		for (let i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1596|1596| 			for (let j = i - 1; j >= 0 && !closeClusters; --j)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1595|1595| 		for (let i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1596|1596| 			for (let j = i - 1; j >= 0 && !closeClusters; --j)
|1597|1597| 				if (matrix[i][j] < distSq)
|1598|    |-					closeClusters = [i,j];
|    |1598|+					closeClusters = [i, j];
|1599|1599| 
|1600|1600| 		// if no more close clusters found, just return all found clusters so far
|1601|1601| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1619|1619| 		}
|1620|1620| 		// remove the rows and columns in the matrix for the merged clusters,
|1621|1621| 		// and the clusters themselves from the cluster list
|1622|    |-		clusters.splice(closeClusters[0],1);
|    |1622|+		clusters.splice(closeClusters[0], 1);
|1623|1623| 		clusters.splice(closeClusters[1],1);
|1624|1624| 		matrix.splice(closeClusters[0],1);
|1625|1625| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1620|1620| 		// remove the rows and columns in the matrix for the merged clusters,
|1621|1621| 		// and the clusters themselves from the cluster list
|1622|1622| 		clusters.splice(closeClusters[0],1);
|1623|    |-		clusters.splice(closeClusters[1],1);
|    |1623|+		clusters.splice(closeClusters[1], 1);
|1624|1624| 		matrix.splice(closeClusters[0],1);
|1625|1625| 		matrix.splice(closeClusters[1],1);
|1626|1626| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1621|1621| 		// and the clusters themselves from the cluster list
|1622|1622| 		clusters.splice(closeClusters[0],1);
|1623|1623| 		clusters.splice(closeClusters[1],1);
|1624|    |-		matrix.splice(closeClusters[0],1);
|    |1624|+		matrix.splice(closeClusters[0], 1);
|1625|1625| 		matrix.splice(closeClusters[1],1);
|1626|1626| 		for (let i = 0; i < matrix.length; ++i)
|1627|1627| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1622|1622| 		clusters.splice(closeClusters[0],1);
|1623|1623| 		clusters.splice(closeClusters[1],1);
|1624|1624| 		matrix.splice(closeClusters[0],1);
|1625|    |-		matrix.splice(closeClusters[1],1);
|    |1625|+		matrix.splice(closeClusters[1], 1);
|1626|1626| 		for (let i = 0; i < matrix.length; ++i)
|1627|1627| 		{
|1628|1628| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1626|1626| 		for (let i = 0; i < matrix.length; ++i)
|1627|1627| 		{
|1628|1628| 			if (matrix[i].length > closeClusters[0])
|1629|    |-				matrix[i].splice(closeClusters[0],1);
|    |1629|+				matrix[i].splice(closeClusters[0], 1);
|1630|1630| 			if (matrix[i].length > closeClusters[1])
|1631|1631| 				matrix[i].splice(closeClusters[1],1);
|1632|1632| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1628|1628| 			if (matrix[i].length > closeClusters[0])
|1629|1629| 				matrix[i].splice(closeClusters[0],1);
|1630|1630| 			if (matrix[i].length > closeClusters[1])
|1631|    |-				matrix[i].splice(closeClusters[1],1);
|    |1631|+				matrix[i].splice(closeClusters[1], 1);
|1632|1632| 		}
|1633|1633| 		// add a new row of distances to the matrix and the new cluster
|1634|1634| 		clusters.push(newCluster);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1550| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1593| »   »   let·closeClusters·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'closeClusters' to 'undefined'.
Executing section cli...

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

Code looks good, I failed to test this because patch doesn't include images (and arc-patch doesn't work on my git here apparently).

Would you happen to have a git branch for this?

Code looks good, I failed to test this because patch doesn't include images (and arc-patch doesn't work on my git here apparently).

That's no specific issue of git. It's an issue of arc-patch in general. For me it also fails to download any image when using svn.

Would you happen to have a git branch for this?

Sadly no. But seems like I should have done it that way.
(Also never used arc with git, so no idea how that would work…)

(Also never used arc with git, so no idea how that would work…)

Works very similarly to svn I suppose. I then to just download the patches to do my own branches, but you can arc diff head^ --update DXXX or arc diff master --preview all the same.