Commit graph

155 commits

Author SHA1 Message Date
Vantha
8c36cc4879
Simplify GetTemplateData calls
Previously it was made so that "template data" was a sort of super type
of "entity state" and that the former could always be replaced by the
latter. Using this we can simplify some code passages by removing
GetTemplateData calls and using the entity's state directly instead.
2026-08-14 12:47:18 +02:00
Vantha
0a3bd16cb5
Optimise GetEntityState
GetEntityState is a performance-critical function in the GUI when a
large number of units are selected. The goal of this patch is to
increase the efficiency of it without modifying the returned states
visible to rest of the GUI in any way (it renames a few properties of
entities states or moves them around, but the information they contain
and the way to access it remain the complete same)

As explained the comments, certain parts (the template data) of an
entity state are "predictable" and can be reused between entities with
the same template.
What one has to account for, however, is that values of the template
data can be modified. This happens on two different levels:
Firstly, player-wide modifications, which apply to all entities owned
by that player. This includes stuff like bonuses from researched techs,
civs bonuses, team bonuses. And secondly, entity-local modifications,
which apply to individual entities. This includes buffs or debuffs from
status effects or auras (of other entities).

So we can construct a whole entity state by first just computing the
dynamic state (stuff like current hitpoints, which differs from entity
to entity) and then adding the (potentially already cached) template
data to it, which can be reused between entities with the same template
and owning player. And then overwrite the values affected by
entity-local modifications, which are usually just a few and even they
can be cached and reused for entities with the same owning player,
template, and entity-local modifications (identified by the
"modifications ID").

This saves the effort of retrieving/computing a ton of data each turn
and also saves the time it takes the engine to clone the data from the
simulation to the GUI (as the return value of the GUI interface call),
which previously took just as long as retrieving the entity states
themselves.

Since only the dynamic state is read from the components, a number of
small getter methods have become unused; they are kept (for now at
least) since they might be useful again in the future or for mods.
2026-08-14 12:47:04 +02:00
Dunedan
93ce94655d
Use @stylistic/brace-style for eslint
Up to now `eslint-plugin-brace-rules` was used to enforce a common brace
style for JavaScript code. This plugin was however updated the last time
over 9 years ago and will be incompatible with ESLint v10, as that
[removes `context.getSourceCode()`][1], the plugin relies on.

To keep the eslint config working with ESLint v10, this replaces
`eslint-plugin-brace-rules` with the [`@stylistic/brace-style`][2] rule
from `@stylistic/eslint-plugin`, a package we already use.

While `@stylistic/brace-style` doesn't offer an option to format braces
in exactly the same way as before, the "allman" style seems to be the
one closest to the existing code.

[1]: https://eslint.org/blog/2025/11/eslint-v10.0.0-alpha.0-released/#removed-deprecated-rule-context-members
[2]: https://eslint.style/rules/brace-style
2026-01-12 21:33:52 +01:00
Vantha
fd847c2a23
Refactor GUI object resizing JS code passages
It is possible to modify sizes by setting the properties directly.
(Without having to create a copy of it)
This allows to shorten those passages quite a bit without any functional change.
2025-06-17 12:57:37 -05:00
Ralph Sennhauser
b5227e03f7
Fix eslint rule 'prefer-const' in gui/session/selection
eslint --no-config-lookup --fix --rule '"prefer-const": 1' \
    binaries/data/mods/public/gui/session/selection*

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-10 16:22:11 +02:00
Ralph Sennhauser
81c119bf39
Fix eslint rule 'semi'
eslint --no-config-lookup --fix --rule '"semi": 1'

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-03 14:13:14 +02:00
abian
42052b69d9 Display phase emblems in the middle panel
This patch introduces phase emblems on both sides of the player's name
band in the middle panel. The emblems represent the current phase of
the selected player's civilization: I (Village), II (Town), III (City).
This information is also added to the associated tooltip and is
displayed only to mutual allies and observers.

Fixes #6849
See also: https://wildfiregames.com/forum/topic/107851-introduce-badge-to-indicate-the-phase-6849/
2024-10-24 11:32:28 +02:00
abian
b15eb6909e Remove unnecessary comments in selection_details.js
Related: #7012
2024-09-18 06:46:51 +02:00
abian
798cff1f6f Left-click the portrait to follow the entity
- Left-clicking the portrait of a unit will make the camera follow that
   unit (before: no action). A tooltip informs the player of this
   possibility.

 - Left-clicking the portrait of a structure will make the camera focus on
   that structure (before: no action). A tooltip informs the player of
   this possibility.

 - Double-clicking a hero/treasure icon will make the camera follow that
   hero/treasure (before: just focus on that hero/treasure).

 - Some minor related changes.

Fixes #6879
2024-09-18 06:46:51 +02:00
trompetin17
12d96b6277 Display a tooltip for the health and capture points and fix the civ tooltip style.
Comments By: asterix, Stan
Fixes #6367
Differential Revision: ​https://code.wildfiregames.com/DD4323
This was SVN commit r27260.
2022-11-28 03:17:37 +00:00
Angen
0a3fab87da Display rank action in tooltip
Patch by: @nwtour
Differential revision: D4340
Reviewed by: @Silier
The patch adds a description from the technology file to tooltip when
hovering over rank icon.

This was SVN commit r26300.
2022-02-05 12:12:58 +00:00
Freagarach
f0c708be41 Ceil the required XP in the GUI.
344d1cc837 introduced a tech that percentually increased the required XP
for archers, showing a decimal value.
This rounds that up, for 150/150 without being promoted looks bad as
well.

Patch by: @Langbart
Differential revision: https://code.wildfiregames.com/D4322
Reviewed by: @Angen
This was SVN commit r25984.
2021-10-31 07:00:39 +00:00
Angen
3adac574b7 Prevent division by 0 for experience bar
Required experience can be set to 0 initially and because entity is
upgrated after simulation starts, there was division by 0 in atlas for
such entities causing experience bar going to infinity.

Differential revision: D4317
Fixes: #6362
Patch by: @Langbart
Reviewed by: @Angen
This was SVN commit r25974.
2021-10-27 19:00:35 +00:00
bb
9c2a09067f Center generic/specific name if just one is given and hide the other
Patch By: LangBart
Comments By: Freagarach
Differential Revision: D4290
fixes #6341

This was SVN commit r25964.
2021-10-12 20:25:09 +00:00
vladislavbelov
8eb4871c9b Draws GUI elements by Z order.
Tested By: wraitii
Differential Revision: https://code.wildfiregames.com/D3780
This was SVN commit r25229.
2021-04-11 11:27:53 +00:00
Freagarach
e2f4ce0649 Add Upkeep component.
Adds a new component effectively handling negative resource trickles.
Prevents resources from going negative and provides an effect for not
being able to pay.
The effect chosen for 0 A.D. is having the entity not being
controllable.

Not used in the public mod itself, but it is in quite some mods.

Based on an idea of @Nescio
Differential revision: D1323
Comments by: @Angen, (@smiley,) @Stan
This was SVN commit r25191.
2021-04-04 06:52:20 +00:00
Freagarach
21e866fcf0 Technically seperate Turrets from GarrisonHolder.
While they often look alike, their behaviour is totally different.
This split has some implications:
- There are now separate auras for garrisoning and turrets.
- Entities can now have both turret points and garrison slots,
independent of eachother.

In general previous behaviour is maintained as much as possible.

Differential revision: D3150
Comments by: @Nescio, @wraitii
Tested by: @v32itas
This was SVN commit r25123.
2021-03-26 10:18:30 +00:00
Freagarach
ebc2ec5498 Give option to switch between specific and/or generic entity names.
As requested on the forums (e.g.
https://wildfiregames.com/forum/index.php?/topic/25202-transliteration-of-ancient-greek-into-english/&tab=comments#comment-378174).

Differential revision: D2126
Closes: #3397

This was SVN commit r25116.
2021-03-25 06:58:47 +00:00
s0600204
275a5bccde Always pass a civcode to Viewer when instatiated by the session gui
Previously this was only done for technologies.

The Viewer tries to determine an appropriate civcode from a passed
template,
however trainable gaia-animals have a template-assigned civ of `gaia`
(and
technologies don't have one at all).

The behaviour of the Viewer isn't changed by this commit: it will still
prefer
whatever civ is set within a template before falling back to the passed
civcode.

However, trained gaia-animals now have something to fall back to,
permitting the
appropriate build list (the list of buildings that train the animal) to
be
displayed.

This was SVN commit r25110.
2021-03-23 15:44:01 +00:00
Freagarach
ea96e81098 Split treasures from ResourceSupply.
Removes some hardcoding and allows for easier modding of treasures.

Refs.: #5888
Differential revision: D3303
Comments by: @Imarok, @Nescio, @Stan, @wraitii
This was SVN commit r24989.
2021-03-03 07:47:38 +00:00
Freagarach
0e6cf11d86 Resupport more garrisoned slots per entity.
Basically removed in 3521c8f51e, now brought back :) (But split from the
population space.)

Differential revision: D2056
Comments by: @Angen, @Nescio, @Stan, @wraitii
This was SVN commit r24960.
2021-02-28 10:02:03 +00:00
wraitii
eafc2a4ea8 Don't show the sword-shield icon if there is nothing to show.
Reviewed By: Freagarach
Refs #5883

Differential Revision: https://code.wildfiregames.com/D3258
This was SVN commit r24457.
2020-12-27 08:12:44 +00:00
Freagarach
7f6602cffd Show the number of builders together with build time.
Also adds the remaining time to the tooltip.

Differential revision: D2425
Reviewed by: @bb
This was SVN commit r24452.
2020-12-27 06:56:37 +00:00
Freagarach
7f77cf2f3e Move PopulationBonus from cmpCost to new cmpPopulation.
Since PopBonus is not a cost.

Patch by: @lonehawk
Differential Revision: D2948
Comments by: @Angen, @Nescio, @wraitii
Closes #4081

This was SVN commit r24394.
2020-12-14 18:17:59 +00:00
Freagarach
2e79c0a177 Remove health component from relics.
Since relics ought to be undestroyable, a health component makes no
sense. This makes that the Invulnerability-flag can be removed and
relics can be captured again (after 0f91c5ac61#inline-5236).

Differential Revision: D1268
Original patch by: @temple
Reviewed by: @wraitii
Comments by: @bb, @elexis
Fixes #5007, #5847, 0f91c5ac61#inline-5236

This was SVN commit r24327.
2020-12-06 07:22:51 +00:00
Freagarach
876b035336 Allow resistances to StatusEffects.
Differential Revision: D2908
Reviewed by: @wraitii
Comments by: @bb.
This was SVN commit r24162.
2020-11-11 20:07:30 +00:00
bb
b606cad5da Indent attack tooltips
Show splash per attacktype and indent

Patch By: Nescio
Comments By: Freagarach
Differential Revision: D2984
This was SVN commit r24022.
2020-09-04 20:21:59 +00:00
Freagarach
0f91c5ac61 Rename Armour to Resistance and change the way it is processed.
- Renames Armour-node to Resistance.
- Support resistance against Capture.
- Puts resistance against effects in separate nodes.
- Some cleaning.

Differential Revision: D2229
Reviewed by: @bb (accepted), @wraitii.
Comments by: @Stan, @Nescio.
This was SVN commit r24001.
2020-08-27 10:24:59 +00:00
wraitii
ea67b79667 Handle stacking status effects, modifiers, some related fixes.
Continuation of work on status effects, following 82a5ab6d19.

Allow techs to modify properties.
Enable different behaviour when status effects would stack, such as
extending the duration or stacking the effects.
Fix GUI issue with more than 5 status effects.
Improve tooltips.
Let status effects show a different tooltip for the attacker and the
receiver.

Patch by: Freagarach
Reviewed By: wraitii, Angen (on an older differential).
Differential Revision: https://code.wildfiregames.com/D2296
This was SVN commit r23757.
2020-06-09 11:47:16 +00:00
Angen
82a5ab6d19 Allow status effect to apply modifiers and fix 2333b1814e
Status effect can apply modifier to the entity (armour strength, walking
speed, ...)
This is also hiding status effect icons by default in selection detail.
Fixing smaller related bugs.

Differential Revision: https://code.wildfiregames.com/D2281
Patch by: @Freagarach
Comments by: Stan, wraitii
This was SVN commit r23448.
2020-01-27 16:51:25 +00:00
elexis
6814a983e1 Refactor diplomacy dialog to use object orientation paradigm using the class keyword, refs #5387.
Includes dilomacy colors, tribute buttons, spy request buttons, attack
request buttons, minimap panel, idle worker button, ceasefire counter.
Differential Revision: https://code.wildfiregames.com/D2365
Use hotkey release event from 78bc56f33e to remove input.js state and
evil global nested closure hackery from cb890ad876, refs #1839, #3194.
Fixes masstribute selecitonchange issue subject of D1191.

This was SVN commit r23065.
2019-10-11 12:28:12 +00:00
wraitii
2333b1814e GUI support for Status Effects and extend their functionality to all attack effects following 16b452cf91
This fixes status effects following 16b452cf91 where the GiveStatus name
change broke them.

This lets status effects deal all types of damage, capture, or inflict
other status effects, like any attack.
This further adds some basic GUI spport to status effects, by showing up
to 5 icons in the top-right of the portrait, and including status
effects in the tooltips.

Status effects can specify a custom icon.

Differential Revision: https://code.wildfiregames.com/D2218
This was SVN commit r22901.
2019-09-15 09:24:52 +00:00
temple
6c3f93a33d Adjust resourceCarryingText position and small cleanup
Differential Revision: https://code.wildfiregames.com/D1376
This was SVN commit r21505.
2018-03-11 17:27:07 +00:00
temple
dad45b60cd Have gather information take precedence over repair
Differential Revision: https://code.wildfiregames.com/D1374
Reviewed by: mimo
This was SVN commit r21502.
2018-03-11 17:07:12 +00:00
s0600204
c8fda40b02 Implement an in-game Template Details Viewer
Right-click on icons of units, structures, technologies, flora, fauna,
etc. and view additional details.


Reviewed By: elexis
Fixes: #3212
Differential Revision: https://code.wildfiregames.com/D297
This was SVN commit r21310.
2018-02-21 21:39:00 +00:00
temple
e43ed4016c Add a repair time tooltip
Differential Revision: https://code.wildfiregames.com/D573
Reviewed by: bb
This was SVN commit r21121.
2018-02-06 19:31:51 +00:00
temple
7819ea434e Diplomacy Colors
Add a button to toggle between normal and "diplomacy" colors.
Reviewed by: elexis
Comments by: leper, ffffffff, Stan
Fixes: #4747

This was SVN commit r21107.
2018-02-03 14:17:31 +00:00
Imarok
776899c254 Show rank icon above status bars
Reviewed by: bb
Fixes: #5005
Differential Revision: https://code.wildfiregames.com/D717
This was SVN commit r21076.
2018-01-30 15:10:20 +00:00
temple
1ba1e86c5e Use a countdown rather than a tooltip for displaying construction progress
Change the time to completion to a countdown and remove the tooltip on
the health bar.
Move the number of builders to the time speed-up tooltip.
Remove the build rate tooltip.

Differential Revision: https://code.wildfiregames.com/D572
Early review by: wraitii
Comments by: bb
This was SVN commit r21072.
2018-01-30 00:02:10 +00:00
mimo
5025bcb1c5 fix loot warning from d8ed8b1462 reported by temple
This was SVN commit r20982.
2018-01-23 17:53:42 +00:00
mimo
d8ed8b1462 Cleaning of GetEntityState part 2
Reviewed By: elexis
Differential Revision: https://code.wildfiregames.com/D1227
This was SVN commit r20965.
2018-01-22 18:02:38 +00:00
mimo
1bcc70a1cc fix miraged properties in GuiInterface changes from 30f0e80dae
Differential Revision: https://code.wildfiregames.com/D1230
This was SVN commit r20938.
2018-01-20 15:09:42 +00:00
mimo
30f0e80dae Cleanup of GetEntityState
Reviewed By: elexis
Trac Tickets: #4322

Differential Revision: https://code.wildfiregames.com/D1223
This was SVN commit r20875.
2018-01-15 21:27:30 +00:00
Imarok
6c5a8269f3 Fix some style issues noticed by our linter
Reviewed By: bb
Differential Revision: https://code.wildfiregames.com/D585
This was SVN commit r20322.
2017-10-21 17:31:05 +00:00
elexis
661284a403 Fix some string issues and reveal the name of the next release (Ken Wood).
Change the tense of the Capture The Relic message, as proposed by brian
(WhiteTreePaladin).
Consistently use title case for buttons.
Use more descriptive and concise option titles.
Remove two unused strings.

Fixes #4718
Refs
https://wildfiregames.com/forum/index.php?/topic/22745-all-relics-captured-message/
Refs
https://wildfiregames.com/forum/index.php?/topic/22461-alpha-23-name-suggestions/
Reviewed by: brian (WhiteTreePaladin), leper, GunChleoc.
Release name agreed with Itms on 2017-07-29 on irc.

This was SVN commit r20000.
2017-08-19 11:47:24 +00:00
bb
e9a2334298 Make the buildTime tooltip return the correct value when worker with a rate different then 1 work on it.
Differential Revision: https://code.wildfiregames.com/D522
Patch By: temple
This was SVN commit r19966.
2017-08-09 11:19:15 +00:00
elexis
9b041467a2 More comfortable and safe resource name translation without breaking translation freeze.
Throw a reference error instead of silently using an untranslated string
if someone would have passed a non-existing translation context.
Throw a property undefined warning if someone passed a non-existing
resource when trying to translate it.
Both warnings had been introduced in 0f21151c4b, were removed by
52f311da2b but now occur without adding code explicitly.

Differential Revision: https://code.wildfiregames.com/D625
Reviewed By: s0600204
This was SVN commit r19771.
2017-06-13 03:12:51 +00:00
Imarok
ed38491622 Allow to show capture, resource and health bar at the same time. (needed for D450)
Reviewed by: elexis
Differential Revision: https://code.wildfiregames.com/D516
This was SVN commit r19675.
2017-05-27 20:38:05 +00:00
elexis
1b3f92d6e4 Display relics in the hero panel.
Rename the buttonset to panelEntities and unify related health tooltips.

Differential Revision: https://code.wildfiregames.com/D289
Reviewed By: Sandarac
Refs #3000

This was SVN commit r19398.
2017-04-09 23:10:50 +00:00
elexis
2aae9eaaf1 Resource Trickle tooltip.
Add early return to hide loot tooltip if there is no loot (for mods).

Differential Revision: https://code.wildfiregames.com/D292
Reviewed By: fatherbushido
Fixes #4118

This was SVN commit r19387.
2017-04-08 06:45:22 +00:00