Commit graph

224 commits

Author SHA1 Message Date
Vantha
f39e71cca0 Move calls in playersFinished to handlers
This patch fixes the TODO comment in playersFinished and moves
all of the calls to handlers. The only reason for adding back the
function `handlePlayersFinished` is to prevent duplication in the "won"
and "defeated" message handlers. In the future, code to execute when
players finish in the future should exclusively be added by registering
new handlers, not by adding it to that function.
2026-07-22 23:51:49 +02:00
Vantha
e02a2e0b31 Add support for different types of tutorial steps
This patch doesn't add any new functionality and keeps the introductory
tutorial and economy walkthrough as they are. Instead, it rearranges some
code to enable easily adding different types of tutorial steps in the
future. The idea is for each type to be displayed on a different panel
and for the TutorialManager to switch back and forth between them, and
to handle and translate the received messages from the simulation and
pass them along to the active panel. Currently, there are only
"instruction"-type steps, which are handled by the InstructionPanel in
the GUI. But new ones can be added in the future, like information boxes
or bigger objectives.
2026-07-22 23:51:49 +02:00
Vantha
dd396f19b6 Separate handling of tutorial goals and warnings
This is more explicit and makes the code cleaner.
2026-07-22 23:51:49 +02:00
Vantha
663f5c5ff6 Create designated tutorial class in the GUI
This keeps messags.js shorter, prevents unnecessary GetGUIObjectByName
calls and, most importantly, makes it a lot more extensible for the
future.
2026-07-22 23:51:49 +02:00
phosit
a95579a046
Fix UI when connecting to a server fails
When the connection fails, it wasn't possible to close the progress
window.
Now `PollNetworkClient` also resolves the previous promise.
2026-05-17 17:20:37 +02:00
phosit
2415b41438
Remove Engine.SwitchGuiPage from session 2026-04-26 12:44:41 +02:00
Atrik
68d8604c51 Do not follow rally point commands for observers
Some checks failed
checkrefs / lfscheck (push) Has been cancelled
checkrefs / checkrefs (push) Has been cancelled
lint / cppcheck (push) Has been cancelled
lint / copyright (push) Has been cancelled
lint / jenkinsfiles (push) Has been cancelled
pre-commit / build (push) Has been cancelled
When observing a player with camera follow enabled, the camera would
jump to newly trained units as they executed their
rally point commands, which were just rendering the "Follow Player"
feature frustrating.
2026-04-22 10:19:44 +02:00
phosit
262c5c037e
Use promises to fetch net messages
Refs: #5585
2026-03-13 18:07:56 +01:00
Vantha
64de934dd3 Revamp the cinema GUI code
This patch introduces a new class for managing the cinema overlay (two
black bars) and cutscene mode. This makes it more extensible for the
future, e.g. allowing to display text on the bars.
Since <include> elements can only be placed inside an <object>, this
patch needs to restructure session.xml a bit and also adds some
explanation comments while at it.
2026-03-03 11:25:52 +01: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
Stan
dc04f3f432
Fix autofixable eslint warnings for eqeqeq
Ref: #7812
Pull Request: #8129
2025-06-26 11:03:19 +02:00
Ralph Sennhauser
9f489b748f
Fix eslint rule 'prefer-const' in gui/session/[m-t]*
eslint --no-config-lookup --fix --rule '"prefer-const": 1' \
    binaries/data/mods/public/gui/session/message_box \
    binaries/data/mods/public/gui/session/messages.js \
    binaries/data/mods/public/gui/session/minimap/MiniMap.js \
    binaries/data/mods/public/gui/session/objectives \
    binaries/data/mods/public/gui/session/top_panel \
    binaries/data/mods/public/gui/session/trade

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-10 17:38:23 +02:00
Ralph Sennhauser
b6df170303
Fix eslint indent rule
eslint --no-config-lookup --fix --rule 'indent:  ["warn", "tab", { "outerIIFEBody": 0, }]'

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-03 09:39:58 +02:00
Dunedan
8482f25800
Fix a bunch of spelling mistakes
This fixes a bunch of spelling mistakes found in user facing strings.

Fixes #7716
2025-04-11 06:24:32 +02:00
elexis
88df5ec95f Don't focus on spies for non-following observers
Missing since introduction in e14ad3c771.
2025-01-04 18:01:29 +01:00
Vantha
960bd5eace Unique network transmission handling of flares
This patch addresses issues concerning a1796ed71f:

Allow for a more elegant implementation of observer flares.
And still display flares even if the sender is lagging behind:
Split off flares from simulation commands.
Remove the new, problematic 'observer commands' entirely.
Provide an engine function 'SendNetworkFlare' to the JS interface.
-> which sets off the (pretty ordinary) transmission process.
Add a new type of net messages exclusively for flares
-> contains the flare's position and its sender's GUID.
2024-12-16 18:03:25 +01:00
Vantha
a1796ed71f Enable observers to see and send flares
This patch gives observers the possibility to see and send flares.
Players keep their color after resigning and "true" observers flare in white.
Observers render all flares; the ones sent by any player or observer.
Player continue to only see their allies' flares.
The flare notification option is converted into a dropdown.
-> adding the possibility to only receive them as observer.
2024-11-14 11:58:15 +01:00
Vantha
64b1efddf4 Add chat notifications for flares
- Players now receive flare chat notifications mentioning the sender's name.
- Clicking the notification moves the camera to the flare's location.
- The feature can be toggled in the game options and is enabled by default.

Fixes #6212
2024-10-19 10:07:30 +02:00
Freagarach
fc04e849ca Use position for positions in unit_commands.js.
Replacing `target` by `position` where applicable.
It gave errors when following a player who flared.

Reported by: @Langbart
Differential revision: https://code.wildfiregames.com/D4824
Comment by: @Silier
Fixes #6303

This was SVN commit r27315.
2022-12-29 11:55:13 +00:00
Freagarach
3ab25cbd95 Add an extra button to skip the summary page when quitting.
Allows devs (and players) to skip the summary page when they don't need
them.

Patch by: @Schweini
Differential revision: https://code.wildfiregames.com/D3958
Reviewed by: @Langbart
Fixes: #4300
Comments by: @nwtour, @Stan
This was SVN commit r25978.
2021-10-28 06:31:16 +00:00
Imarok
dd779872c4 Small tweak of map flare characteristics
Refs #3491

Differential Revision: https://code.wildfiregames.com/D4099
This was SVN commit r25783.
2021-06-12 22:35:30 +00:00
Imarok
eb2e489898 Add a hotkey to focus on the last attack alarm
Fix #5608

Differential Revision: https://code.wildfiregames.com/D4101
This was SVN commit r25715.
2021-06-06 18:29:48 +00:00
Imarok
8e63a0322c Map flares
Add flaring on the map and resize the minimap buttons.
Target marker and button by Stan.
Reviewed/Commented by wraitii, elexis, vladislavbelov
Refs: #3491
Refs: #57

Differential Revision: https://code.wildfiregames.com/D1751
This was SVN commit r25691.
2021-06-05 17:37:18 +00:00
Imarok
7376e43e06 Fix typos in log and warn messages
Patch by: LudovicRousseau
Refs: #6098

Differential Revision: https://code.wildfiregames.com/D3659
Differential Revision: https://code.wildfiregames.com/D3660
This was SVN commit r25033.
2021-03-10 16:50:15 +00:00
Imarok
2daec55dcd Fix attack notification (a3eccc043d)
Reviewed by: Freagarach
Differential Revision: https://code.wildfiregames.com/D3387
This was SVN commit r24736.
2021-01-20 21:00:40 +00:00
vladislavbelov
aede7473f2 Makes the color of tutorial new messages softer.
This was SVN commit r24633.
2021-01-15 17:25:12 +00:00
Imarok
a3eccc043d Hint the location for "You have been attacked" notifications
Icon edited by Stan.
Fixes: #5132
Differential Revision: https://code.wildfiregames.com/D1461
This was SVN commit r24565.
2021-01-12 19:13:16 +00:00
Freagarach
3b668e0a71 Fix the barter string which were in reversed order.
Also rename variables to reduce ambiguity.

Patch By: @Nescio
Differential Revision: https://code.wildfiregames.com/D2893
This was SVN commit r23944.
2020-08-07 07:34:02 +00:00
wraitii
70c71bff0f Allow Modifiers to affect tokens.
This adds a new mode to modifications called "tokens" which allows
clever token parsing.
Technologies, auras and modifiers in general can use this to switch out,
add or delete tokens dynamically.

Currently implemented are production and builder queue tokens.

Reviewed By: Freagarach
Differential Revision: https://code.wildfiregames.com/D270
This was SVN commit r23843.
2020-07-17 08:23:45 +00:00
Gallaecio
9b9410c923 [gui] building → structure
This patch corrects occurrences of “building” into “structure”.
Whilst “constructing a building” is proper English, it is important to
refer to one and the same thing with a single term, to avoid potential
misunderstandings (see
https://trac.wildfiregames.com/wiki/EnglishStyleGuide ), thence
“building a structure”, because the unit action is “build” and the
entity is a “structure” (see `simulation/templates/`).

Patch By: Nescio
Reviewed By: Gallaecio
Differential Revision: https://code.wildfiregames.com/D2429
This was SVN commit r23366.
2020-01-11 10:58:43 +00:00
elexis
992d740a58 Delete dead "chat" simulation command, "chat" GUIInterface notification type, "aichat" NetClient message and useless "debug-print" simulation command.
The "chat" simulation command and according GUIInterface notification
became unused which translated simulation chat messages ("aichat") in
7afe0afbca.
That commit also introduced the "aichat" network message parsing code
that is never triggered since the NetClient never creates messages of
that type.
The "debug-print" command introduced by 1c0536bf08 sends a GUI value to
the simulation and prints it to the log, which is already covered by the
JS console since e4fe4ed602.

Differential Revision: https://code.wildfiregames.com/D2407
This was SVN commit r23137.
2019-11-05 22:35:37 +00:00
elexis
7e081b555f TimeNotificationOverlay and Ambient class, refs #5387.
Notice TimeNotificationOverlay.xml must be included after
PauseOverlay.xml, otherwise there will be a Z/transparency bug, see
D148.

This was SVN commit r23117.
2019-10-30 14:39:44 +00:00
elexis
205dba32c7 Cheats GUI container class, refs #5387.
This was SVN commit r23116.
2019-10-30 14:06:27 +00:00
elexis
6b573d9249 Move session network status overlay to a separate class, refs #5387 and fix pause hotkey disabling for non-hosting observers following e3f43f6352/D2378.
This was SVN commit r23115.
2019-10-30 13:48:27 +00:00
elexis
bc6da5e3f2 SessionMessageBox class, refs #5387.
Decouples events from event handling, removes implicit-pause duplication
per messagebox and allows mods to modify message box values.

Differential Revision: https://code.wildfiregames.com/D2398
Comments By: Stan, Freagarach
This was SVN commit r23114.
2019-10-30 11:14:55 +00:00
elexis
38e06fce7e Rewrite FPS/Realtime/Gametime/Ceasefire counters to use object semantics using class notation, refs #5387.
Rebuild the counters every 250ms instead of every frame and minimize
object creation.

Differential Revision: https://code.wildfiregames.com/D2391
Comments By: Stan
This was SVN commit r23096.
2019-10-27 12:39:28 +00:00
elexis
ba993d4610 Refactor session lobby bot client code to use object orientation, refs #5387.
Adapt rating score for exploration score and add comment to keep
calculateExplorationScore and calculateScoreTotal in sync following
be881dc420 (following the formula in a4f27dc3e0 and bffe917914 being
otherwise in sync with the summary screen measures), refs #686.
Adapt rating score for captured entities and add comment to keep
calculateMilitaryScore in sync following f60befe098, refs #3216,
ad27deeb9d.
Adapt rating score for trade and vegetarian food and add comment to keep
calculateEconomyScore in sync following 202e567492/D494 and
215a102c27/D1052, refs #3948.
Remove ceasefire sending from the client from d21c0026ec since the bot
doesn't record it and since ceasefire time is expected to be 0 after a
1v1 was decided, refs #2749.
Resolve column value computation fragmentation and remove unneeded
intermediary object encoding following 1d3ac14d35, refs #686.
Remove hardcoding/duplication of unit and structure classes and send
domesticUnitsTrained too, refs c7a04e219b/D2384.
Move session code including the two globals to a separate folder so as
to maximize separation of and ease distribution without lobby code.
Migrate useless ugly trailing commas from bffe917914, to be removed in a
patch modifying the bot code.

Differential Revision: https://code.wildfiregames.com/D2385
This was SVN commit r23087.
2019-10-21 15:00:59 +00:00
elexis
6ec5855136 Rewrite session menu code to use object orientation, finish off menu.js, refs #5387, adf448db4d / D2240.
Add tooltips for buttons that can be triggered with hotkeys.
Unassign menu animation onTick function after the animation finished,
refs 9a00398e24.
Cleans unused openMenu following 5aae5ee55a.

Differential Revision: https://code.wildfiregames.com/D2380
This was SVN commit r23080.
2019-10-18 14:11:43 +00:00
elexis
e3f43f6352 Implement session event subscription system and rewrite TopPanel, PlayerViewControl, GameSpeed, Pausing, ObjectivesDialog to use object orientation, refs #5387.
New controller classes: PlayerViewControl, PauseControl,
GameSpeedControl
New viewer classes: ObjectivesDialog, PauseOverlay, FollowPlayer,
TopPanel (BuildLabel, CivIcon, CounterManager, CounterPopulation,
CounterResource refs 7e14a33411/D1113, GameSpeedButton,
ObjectivesDialogButton)

New events: SimulationUpdate, EntitySelectionChange, ViewedPlayerChange,
PreViewedPlayerChangeHandler, PlayerIDChange, PlayersInit,
PlayersFinished, Pause, DiplomacyColorsChange, HotkeyChange, refs #2604
Improves GUI onSimuationUpdate performance without selected entities by
allegedly 30%.

Delete misleading dead code resign command from leaveGame and rename to
endGame. The command is not sent via network (see fa85527baf) nor
processed in simulation, because the Game instance is deleted
immediately thereafter, introduced in fcedcae052, refs a3e1c68b9a,
39ffb0a6bd, 9f796068f8.
Remove explicitResume 0 value from e57c99c6f6 and 8ae67ed15f which
should have been a false if defined, and is equivalent to the default.
Restore fast forwarding option from cd571035bb/D595 for developers
changing the perspective to observer or player following 56308ec1ad.
Add pausing for the delete dialog missing following 7a7ebaa983.

Differential Revision: https://code.wildfiregames.com/D2378
This was SVN commit r23076.
2019-10-17 15:08:56 +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
elexis
47f5c27eec Rewrite session chat to use hierarchical object oriented design using class syntax, refs #5387.
Set global hotkeys in JS instead of empty XML objects from
f192d4a2fa/D2260.

Differential Revision: https://code.wildfiregames.com/D2355
This was SVN commit r23062.
2019-10-06 14:42:12 +00:00
elexis
b247e8b830 Chat filter to allow players to only read network or game notifications during the match.
Differential Revision: https://code.wildfiregames.com/D1605
This was SVN commit r22999.
2019-09-26 13:03:40 +00:00
elexis
057d033541 Duplicate clearChatMessages since that ends up being cleaner
than having a stray function in gui/common/ that refers to page specific
names and logic with a try-catch block to shield against reference
errors, refs #3396, 6e80288d30, 25e6136786.

Incidentally fixes ESLint no-empty hint triggered for empty catch
blocks, refs #5524, D2146.

This was SVN commit r22654.
2019-08-12 14:13:04 +00:00
elexis
feb88a337a Pass arbitrary arguments to GUI events / SendEventToAll and remove loading screen progess workaround, refs D1716, 6d792365aa, bd3bd084c0, 4b1297b328, db5d4bb5f1.
Differential Revision: https://code.wildfiregames.com/D1754
Reviewed By: Itms
Comments By: leper
This was SVN commit r22515.
2019-07-19 21:15:04 +00:00
Imarok
839f281c98 Don't add the period outside a translated string
Previoues version reviewed by: bb
Comments by: elexis
Differential Revision: https://code.wildfiregames.com/D1366
This was SVN commit r22234.
2019-04-28 15:26:41 +00:00
elexis
147ef2b892 Allow observers to follow gaia commands on triggerscript maps.
This was SVN commit r21464.
2018-03-08 14:10:45 +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
Gallaecio
11bcc7c0e7 Solve some issues reported on Transifex, and update translation files
This was SVN commit r20781.
2018-01-07 00:10:14 +00:00
elexis
0350bee2e6 Remove workaround from 4055c564e9 / D1184 and display hotkey strings too if the hotkey is unassigned.
Differential Revision: https://code.wildfiregames.com/D1200
Reviewed By: mimo
This was SVN commit r20777.
2018-01-06 16:20:59 +00:00
elexis
a62690c65a Add cheat code to play arbitrary music playlists, by default the 8-bit retro easteregg track from [[SVN:19890]] (yet to be committed to the public mod).
Fixes #4677.
Differential Revision: https://code.wildfiregames.com/D1097
Patch By: PingvinBetyar
This was SVN commit r20734.
2017-12-30 17:42:43 +00:00