Page MenuHomeWildfire Games

Allow to show capture, resource and health bar
ClosedPublic

Authored by Imarok on May 18 2017, 4:36 PM.

Details

Summary

Allows to show all three bars be rearranging them a bit and moving the capture caption into the capture tooltip, when all three bars are shown.
This will be needed for the fields in D450.

Test Plan

Use D450 or add || entState.alertRaiser to L101 in selection_details.js to see all three bars for fields or the CC.

Diff Detail

Repository
rP 0 A.D. Public Repository
Branch
https://svn.wildfiregames.com/public/ps/trunk
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 1988
Build 3186: Vulcan Build (Windows)Jenkins
Build 3185: Vulcan BuildJenkins
Build 3184: arc lint + arc unit

Event Timeline

Imarok created this revision.May 18 2017, 4:36 PM
Vulcan added a subscriber: Vulcan.May 18 2017, 5:23 PM

Build is green

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

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

Imarok updated this revision to Diff 2060.May 20 2017, 9:28 PM

Style change. Ready to review.

Imarok edited the summary of this revision. (Show Details)May 20 2017, 9:30 PM
Imarok added a reviewer: elexis.

Build is green

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

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

elexis edited edge metadata.May 24 2017, 7:35 PM

Tested with D450 and works as advertized. Intuitively one looks for the number of CP, it's only seen in the tooltip currently. But ok for me.

binaries/data/mods/public/gui/session/selection_details.js
100

showCapture unneeded var

102

I'd make that a local, move it tothe place where its used

140

Same order in the two cases of the if

172

-1 tab each

binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
1

Rebase rP19649

Imarok updated this revision to Diff 2180.May 25 2017, 11:43 AM
Imarok marked 5 inline comments as done.

Apply remarks

Build is green

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

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

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

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

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

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

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

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

Imarok updated this revision to Diff 2195.May 25 2017, 11:52 PM

Fix indentation in L12 & L13

Build is green

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

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

Build is green

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

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

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

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

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

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

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

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

elexis added inline comments.May 26 2017, 5:07 AM
binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
8–14

hidden="false" unneeded, isnt it?

57

That sounds like a workaround. Those numbers are duplicates of resourceSection and captureSection, it must be possible to get rid of these mock GUI objects with the duplicate numbers.

Don't you only need to modify the Y coordinates by +12px? i.e. resourceLabel.height or some of the other ones of that height?

Imarok marked an inline comment as done.May 26 2017, 11:18 AM
Imarok added inline comments.
binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
57

Won't work without hardcoding numbers in js

Imarok updated this revision to Diff 2214.May 26 2017, 11:18 AM

remove hidden

Build is green

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

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

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

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

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

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

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

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

elexis added inline comments.May 26 2017, 2:12 PM
binaries/data/mods/public/gui/session/selection_details.js
115

(could use spaces in a different diff)

118

(could remove the !== 0 in a different diff)

120

(meh)

124

(could use an \n in a different diff)

140

The order could be the same as seen in the GUI, i.e. Health, CapturePoints, Resource amounts

binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
57

If we have to do this, then I'd suggest to remove the duplicate numbers from the bars and move those 2 objects to the top and add a short XML comment stating what they do.

sectionPosMiddle and sectionPosBottom?

How about adding `sectionPosTop too and removing the Health one too, so as to unify them?
Would make the code swapping those areas also more readable

Imarok updated this revision to Diff 2233.May 27 2017, 11:16 AM
Imarok marked 2 inline comments as done.

Fix the order and use placeholders for every bar

Better.

binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
10

"Placeholders storing the"...?

13

Should those be hidden? It's not required as they aren't ghostbusters, but might still be cleaner (expresses intent and might save some microseconds)

16

As yelled at above, remove the duplicate size

30

and here

45

and here

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

binaries/data/mods/public/gui/session/selection_details.js
|   3| »   Engine.GetGUIObjectByName("detailsAreaSingle").hidden·=·false;
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|   4| »   Engine.GetGUIObjectByName("detailsAreaMultiple").hidden·=·true;
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|   9| »   Engine.GetGUIObjectByName("detailsAreaMultiple").hidden·=·false;
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  10| »   Engine.GetGUIObjectByName("detailsAreaSingle").hidden·=·true;
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  16| »   »   g_ResourceData.GetNames()[
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  35| »   »   let·selEntState·=·GetEntityState(selEnt);
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  39| »   »   »   »   let·state·=·GetEntityState(ent);
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  46| »   let·healthGarrison·=·Engine.GetGUIObjectByName("healthGarrison");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  50| »   »   let·healthBarGarrison·=·Engine.GetGUIObjectByName("healthBarGarrison");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  66| »   let·template·=·GetTemplateData(entState.template);
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  87| »   »   Engine.GetGUIObjectByName("rankIcon").tooltip·=·sprintf(translate("%(rank)s·Rank"),·{
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  90| »   »   Engine.GetGUIObjectByName("rankIcon").sprite·=·getRankIconSprite(entState);
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  91| »   »   Engine.GetGUIObjectByName("rankIcon").hidden·=·false;
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  95| »   »   Engine.GetGUIObjectByName("rankIcon").hidden·=·true;
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
|  96| »   »   Engine.GetGUIObjectByName("rankIcon").tooltip·=·"";
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 102| »   let·healthSection·=·Engine.GetGUIObjectByName("healthSection");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 103| »   let·captureSection·=·Engine.GetGUIObjectByName("captureSection");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 104| »   let·resourceSection·=·Engine.GetGUIObjectByName("resourceSection");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 105| »   let·sectionPosTop·=·Engine.GetGUIObjectByName("sectionPosTop");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 106| »   let·sectionPosMiddle·=·Engine.GetGUIObjectByName("sectionPosMiddle");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 107| »   let·sectionPosBottom·=·Engine.GetGUIObjectByName("sectionPosBottom");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 113| »   »   let·unitHealthBar·=·Engine.GetGUIObjectByName("healthBar");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 124| »   »   »   Engine.GetGUIObjectByName("health").tooltip·=·sprintf(translatePlural("This·foundation·will·be·completed·in·%(seconds)s·second.",·"This·foundation·will·be·completed·in·%(seconds)s·seconds.",·timeToCompletion),·{·"seconds":·timeToCompletion·});
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 127| »   »   »   Engine.GetGUIObjectByName("health").tooltip·=·"";
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 129| »   »   Engine.GetGUIObjectByName("healthStats").caption·=·sprintf(translate("%(hitpoints)s·/·%(maxHitpoints)s"),·{
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 149| »   »   »   let·unitCaptureBar·=·Engine.GetGUIObjectByName("captureBar["+playerID+"]");
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 174| »   »   Engine.GetGUIObjectByName("captureStats").caption·=·showSmallCapture·?·"":·captureText;
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constructor.

binaries/data/mods/public/gui/session/selection_details.js
| 175| »   »   Engine.GetGUIObjectByName("capture").tooltip·=·showSmallCapture·?·captureText·:·"";
|    | [NORMAL] ESLintBear (new-cap):
|    | A function with a name starting with an uppercase letter should only be used as a constr

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

Build is green

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

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

Imarok marked 5 inline comments as done.May 27 2017, 10:28 PM
Imarok added inline comments.
binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
16

Wow, I didn't knew, you can totally remove the size tag :D
(But now thinking about it its really clear, such thing is needed >_<)

Imarok updated this revision to Diff 2258.May 27 2017, 10:28 PM
Imarok marked an inline comment as done.

Remove size form bars, hide placeholders and change comment

elexis accepted this revision.May 27 2017, 10:35 PM
elexis added inline comments.
binaries/data/mods/public/gui/session/selection_details.js
136

If that isn't straight forward, what is

This revision is now accepted and ready to land.May 27 2017, 10:35 PM
This revision was automatically updated to reflect the committed changes.
Executing section Default...
Executing section Source...
Executing section JS...
Executing section XML GUI...
|    | [INFO] XMLBear:
|    | XML can be formatted better.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|   1|   1| <?xml version="1.0" encoding="utf-8"?>
|   2|    |-
|   3|   2| <sprites>
|   4|   3| 
|   5|   4| 	<sprite name="groupsIcon">
|    | [INFO] XMLBear:
|    | XML can be formatted better.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|   3|   3| <sprites>
|   4|   4| 
|   5|   5| 	<sprite name="groupsIcon">
|   6|    |-		<image
|   7|    |-			texture="session/icons/groups.png"
|   8|    |-			size="0 0 100% 100%"
|   9|    |-		/>
|    |   6|+		<image texture="session/icons/groups.png" size="0 0 100% 100%"/>
|  10|   7| 	</sprite>
|  11|   8| 
|  12|   9| 	<!-- ================================  ================================ -->
|    | [INFO] XMLBear:
|    | XML can be formatted better.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|  14|  14| 	<!-- ================================  ================================ -->
|  15|  15| 
|  16|  16| 	<sprite name="horizontalThinBorder">
|  17|    |-		<image
|  18|    |-			texture="global/border/line_horiz.png"
|  19|    |-			texture_size="0 0 64 4"
|  20|    |-		/>
|    |  17|+		<image texture="global/border/line_horiz.png" texture_size="0 0 64 4"/>
|  21|  18| 	</sprite>
|  22|  19| 
|  23|  20| 	<!-- ================================  ================================ -->
|    | [INFO] XMLBear:
|    | XML can be formatted better.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|  26|  26| 
|  27|  27| 	<!-- Generic Panel -->
|  28|  28| 	<sprite name="genericPanel">
|  29|    |-		<image
|  30|    |-			texture="global/modern/background.png"
|  31|    |-			texture_size="0 0 100% 100%"
|  32|    |-			size="0 0 100% 100%"
|  33|    |-		/>
|  34|    |-
|  35|    |-		<!-- sides -->
|  36|    |-		<image
|  37|    |-			texture="global/border/line_horiz.png"
|  38|    |-			texture_size="0 0 64 4"
|  39|    |-			size="4 0 100%-4 4"
|  40|    |-		/>
|  41|    |-		<image
|  42|    |-			texture="global/border/line_vert.png"
|  43|    |-			texture_size="0 0 4 64"
|  44|    |-			size="100%-4 4 100% 100%-4"
|  45|    |-		/>
|  46|    |-		<image
|  47|    |-			texture="global/border/line_horiz.png"
|  48|    |-			texture_size="0 0 64 4"
|  49|    |-			size="4 100%-4 100%-4 100%"
|  50|    |-		/>
|  51|    |-		<image
|  52|    |-			texture="global/border/line_vert.png"
|  53|    |-			texture_size="0 0 4 64"
|  54|    |-			size="0 4 4 100%-4"
|  55|    |-		/>
|    |  29|+		<image texture="global/modern/background.png" texture_size="0 0 100% 100%" size="0 0 100% 100%"/>
|    |  30|+
|    |  31|+		<!-- sides -->
|    |  32|+		<image texture="global/border/line_horiz.png" texture_size="0 0 64 4" size="4 0 100%-4 4"/>
|    |  33|+		<image texture="global/border/line_vert.png" texture_size="0 0 4 64" size="100%-4 4 100% 100%-4"/>
|    |  34|+		<image texture="global/border/line_horiz.png" texture_size="0 0 64 4" size="4 100%-4 100%-4 100%"/>
|    |  35|+		<image texture="global/border/line_vert.png" texture_size="0 0 4 64" size="0 4 4 100%-4"/>
|  56|  36| 
|  57|  37| 		<!-- corners -->
|  58|    |-		<image
|  59|    |-			texture="global/border/line_corner_top_right.png"
|  60|    |-			texture_size="0 0 4 4"
|  61|    |-			size="100%-4 0 100% 4"
|  62|    |-		/>
|  63|    |-		<image
|  64|    |-			texture="global/border/line_corner_bottom_right.png"
|  65|    |-			texture_size="0 0 4 4"
|  66|    |-			size="100%-4 100%-4 100% 100%"
|  67|    |-		/>
|  68|    |-		<image
|  69|    |-			texture="global/border/line_corner_bottom_left.png"
|  70|    |-			texture_size="0 0 4 4"
|  71|    |-			size="0 100%-4 4 100%"
|  72|    |-		/>
|  73|    |-		<image
|  74|    |-			texture="global/border/line_corner_top_left.png"
|  75|    |-			texture_size="0 0 4 4"
|  76|    |-			size="0 0 4 4"
|  77|    |-		/>
|    |  38|+		<image texture="global/border/line_corner_top_right.png" texture_size="0 0 4 4" size="100%-4 0 100% 4"/>
|    |  39|+		<image texture="global/border/line_corner_bottom_right.png" texture_size="0 0 4 4" size="100%-4 100%-4 100% 100%"/>
|    |  40|+		<image texture="global/border/line_corner_bottom_left.png" texture_size="0 0 4 4" size="0 100%-4 4 100%"/>
|    |  41|+		<image texture="global/border/line_corner_top_left.png" texture_size="0 0 4 4" size="0 0 4 4"/>
|  78|  42| 	</sprite>
|  79|  43| 
|  80|  44| 	<!-- Top Panel -->
|    | [INFO] XMLBear:
|    | XML can be formatted better.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|  79|  79| 
|  80|  80| 	<!-- Top Panel -->
|  81|  81| 	<sprite name="topPanel">
|  82|    |-		<image
|  83|    |-			texture="session/ribbon_bg.png"
|  84|    |-			real_texture_placement="0 0 2048 32"
|  85|    |-			size="0 0 100% 100%"
|  86|    |-		/>
|  87|    |-		<!-- sides -->
|  88|    |-		<image
|  89|    |-			texture="global/border/line_horiz.png"
|  90|    |-			texture_size="0 0 64 4"
|  91|    |-			size="4 0 100%-4 4"
|  92|    |-		/>
|  93|    |-		<image
|  94|    |-			texture="global/border/line_horiz.png"
|  95|    |-			texture_size="0 0 64 4"
|  96|    |-			size="4 100%-4 100%-4 100%"
|  97|    |-		/>
|    |  82|+		<image texture="session/ribbon_bg.png" real_texture_placement="0 0 2048 32" size="0 0 100% 100%"/>
|    |  83|+		<!-- sides -->
|    |  84|+		<image texture="global/border/line_horiz.png" texture_size="0 0 64 4" size="4 0 100%-4 4"/>
|    |  85|+		<image texture="global/border/line_horiz.png" texture_size="0 0 64 4" size="4 100%-4 100%-4 100%"/>
|  98|  86| 	</sprite>
|  99|  87| 
| 100|  88| 	<sprite name="CivIconOver">
|    | [INFO] XMLBear:
|    | XML can be formatted better.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|  98|  98| 	</sprite>
|  99|  99| 
| 100| 100| 	<sprite name="CivIconOver">
| 101|    |-		<image
| 102|    |-			texture="session/portraits/emblems/states/hover.png"
| 103|    |-			size="0 0 100% 100%"
| 104|    |-		/>
|    | 101|+		<image texture="session/portraits/emblems/states/hover.png" size="0 0 100% 100%"/>
| 105| 102| 	</sprite>
| 106| 103| 
| 107| 104| 	<!-- Map Panel -->
|    | [INFO] XMLBear:
|    | XML can be formatted better.
|----|    | /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
|    |++++| /mnt/data/jenkins-phabricator/workspace/phabricator_lint/binaries/data/mods/public/gui/session/sprites.xml
| 106| 106| 
| 107| 107| 	<!-- Map Panel -->
| 108| 108| 	<sprite name="mapPanel">
| 109|    |-		<image backcolor="0 0 0"
| 110|    |-			size="0 0 100% 100%"
| 111|    |-		/>
| 112|    |-		<!-- sides -->
| 113|    |-		<image
| 114|    |-			texture="global/border/line_horiz.png"
| 115|    |-			texture_size="0 0 64 4"
| 116|    |-			size="4 0 100%-4 4"
| 117|    |-		/>
| 118|    |-		<image
| 119|    |-			texture="global/border/line_vert.png"
| 120|    |-			texture_size="0 0 4 64"
| 121|    |-			size="100%-4 4 100% 100%-4"
| 122|    |-		/>
| 123|    |-		<image
| 124|    |-			texture="global/border/line_horiz.png"
| 125|    |-

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

Build has FAILED

Link to build: http://jw:8080/job/phabricator/1387/
See console output for more information: http://jw:8080/job/phabricator/1387/console