FAForever / fa

Lua code for FAF
221 stars 228 forks source link

Display economy values as decimals in unit viewer #6282

Closed lL1l1 closed 1 week ago

lL1l1 commented 1 week ago

Description of the proposed changes

Displays the mass/energy production of a unit as a decimal value in the unit viewer, with appropriate precision for the number. This makes the effects of adjacency more visible.

Idea first popped up on Discord, but this uses the new engine patch for GetRolloverInfo (https://github.com/FAForever/FA-Binary-Patches/pull/75) instead of the UserUnit:GetEconData that I'm assuming was used in that example.

Testing done on the proposed changes

Before testing, make sure to go to the client and launch a FAF Develop lobby to download the latest exe. Spawned an air grid with fabs/radars/storages and moused over the various buildings and over the factories building different units to make sure that how the numbers are displayed makes sense.

Spawn units command ``` CreateUnitAtMouse('uab1101', 0, -8.56, -19.86, -0.00012) CreateUnitAtMouse('xsb1201', 0, -0.56, 22.14, 0.00000) CreateUnitAtMouse('xsb1105', 0, 1.44, -11.86, 0.00000) CreateUnitAtMouse('xsb1101', 0, -14.56, 4.14, 0.00000) CreateUnitAtMouse('xsb1201', 0, -16.56, 0.14, -0.00003) CreateUnitAtMouse('uab1101', 0, -4.56, -19.86, -0.00014) CreateUnitAtMouse('xsb1105', 0, -2.56, -15.86, -0.00002) CreateUnitAtMouse('ueb1106', 0, -24.56, -11.86, -0.00588) CreateUnitAtMouse('xsb1105', 0, -2.56, -17.86, 0.00000) CreateUnitAtMouse('xsb1105', 0, -2.56, -13.86, 0.00000) CreateUnitAtMouse('ueb1106', 0, 17.44, 28.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, 13.44, 24.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, -12.56, -3.86, -0.00002) CreateUnitAtMouse('xsb1101', 0, -2.56, -11.86, 0.00000) CreateUnitAtMouse('ueb1104', 0, -4.56, 6.14, 0.00000) CreateUnitAtMouse('xsb1301', 0, 0.44, 9.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, -8.56, 12.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, -20.56, -11.86, -0.00388) CreateUnitAtMouse('uab3101', 0, 3.44, 16.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, 19.44, 8.14, 0.00000) CreateUnitAtMouse('xsb1303', 0, -0.56, 16.14, 0.00000) CreateUnitAtMouse('xsb1303', 0, -8.56, 8.14, 0.00000) CreateUnitAtMouse('xsb1301', 0, -7.56, -14.86, -0.00005) CreateUnitAtMouse('xsb1301', 0, 0.44, -6.86, 0.00000) CreateUnitAtMouse('ueb1104', 0, -12.56, 2.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, -10.56, -23.86, -0.00107) CreateUnitAtMouse('xsb1303', 0, -22.56, -15.86, -0.00519) CreateUnitAtMouse('ueb1104', 0, -4.56, 12.14, 0.00000) CreateUnitAtMouse('ueb1104', 0, -4.56, 8.14, 0.00000) CreateUnitAtMouse('ueb1104', 0, -4.56, 10.14, 0.00000) CreateUnitAtMouse('xsb1101', 0, -20.56, -19.86, -0.00388) CreateUnitAtMouse('xsb1303', 0, -14.56, -7.86, -0.00024) CreateUnitAtMouse('xsb1105', 0, 5.44, -3.86, 0.00000) CreateUnitAtMouse('uab3101', 0, 3.44, 21.14, 0.00000) CreateUnitAtMouse('xsb1105', 0, 5.44, -9.86, 0.00000) CreateUnitAtMouse('ueb1106', 0, 19.44, 10.14, 0.00000) CreateUnitAtMouse('xsb1303', 0, 17.44, 24.14, 0.00000) CreateUnitAtMouse('xsb0302', 0, -7.56, -6.86, 0.00000) CreateUnitAtMouse('xsb1303', 0, 23.44, 18.14, 0.00000) CreateUnitAtMouse('uab3101', 0, -6.56, -19.86, 0.00006) CreateUnitAtMouse('ueb1106', 0, -16.56, -25.86, -0.00452) CreateUnitAtMouse('ueb1106', 0, -12.56, -25.86, -0.00218) CreateUnitAtMouse('ueb1106', 0, -14.56, -25.86, -0.00292) CreateUnitAtMouse('ueb1106', 0, -10.56, -21.86, -0.00043) CreateUnitAtMouse('ueb1106', 0, -10.56, -19.86, -0.00016) CreateUnitAtMouse('ueb1106', 0, 25.44, 14.14, 0.00000) CreateUnitAtMouse('xsb1105', 0, 13.44, 2.14, 0.00000) CreateUnitAtMouse('xsb1105', 0, 13.44, 0.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, 27.44, 16.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, 23.44, 14.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, 15.44, 6.14, 0.00000) CreateUnitAtMouse('xsb1303', 0, 9.44, 16.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, 17.44, 6.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, 27.44, 18.14, 0.00000) CreateUnitAtMouse('xsb1105', 0, 13.44, 4.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, 13.44, 6.14, 0.00000) CreateUnitAtMouse('xsb1105', 0, 3.44, 14.14, 0.00000) CreateUnitAtMouse('xsb1301', 0, 8.44, 1.14, 0.00000) CreateUnitAtMouse('xsb1105', 0, 13.44, -1.86, 0.00000) CreateUnitAtMouse('xsb0302', 0, -15.56, -14.86, 0.00000) CreateUnitAtMouse('ueb1104', 0, -12.56, 0.14, 0.00000) CreateUnitAtMouse('xsb1301', 0, -7.56, 1.14, 0.00000) CreateUnitAtMouse('xsb0302', 0, 0.44, 1.14, 0.00000) CreateUnitAtMouse('xsb0302', 0, 24.44, 25.14, 0.00000) CreateUnitAtMouse('ueb1104', 0, -12.56, -1.86, -0.00002) CreateUnitAtMouse('xsb0302', 0, 16.44, 17.14, 0.00000) CreateUnitAtMouse('xsb0302', 0, 8.44, 9.14, 0.00000) CreateUnitAtMouse('xsb1303', 0, -14.56, -21.86, -0.00162) CreateUnitAtMouse('xsb1303', 0, 15.44, 10.14, 0.00000) CreateUnitAtMouse('ueb1104', 0, -12.56, 4.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, -6.56, 12.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, -22.56, -11.86, -0.00524) CreateUnitAtMouse('xsb1301', 0, -5.56, -24.86, -0.00018) CreateUnitAtMouse('xsb1301', 0, -5.56, -24.86, -0.00051) CreateUnitAtMouse('xsb1201', 0, 9.44, -5.86, 0.00000) CreateUnitAtMouse('uab1101', 0, 5.44, 21.14, 0.00000) CreateUnitAtMouse('ueb1106', 0, -4.56, 14.14, 0.00000) ```

Additional context

A further improvement would be adding how much of the production/consumption change comes from the adjacency bonus.

Checklist

MrRowey commented 1 week ago

Will review later on