1
0
forked from mirrors/0ad

87 Commits

Author SHA1 Message Date
Vantha 8a2a450686 Align text as usual if the scrollbar is invisible
Previously, while `scrollbar` was set to true, the text was always
vertically aligned to the top, no matter what its `text_valign` was, by
the scrolling logic. However, this was done even when the text's caption
was so short that no scrollbar was required in the first place (and not
rendered). Falling back to the specified `text_valign` value in that case
instead seems like the expected behavior.

On a few occasions in the GUI, the text was supposed to be aligned to
the top in either case, but still set `text_valign` to a different value
(for whatever reason), which didn't have any effect previously. But
now since it does, the values have to be corrected to specify what is
actually desired.
2026-04-06 21:39:18 +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
Stan dc04f3f432 Fix autofixable eslint warnings for eqeqeq
Ref: #7812
Pull Request: #8129
2025-06-26 11:03:19 +02:00
trompetin17 b1123ff259 Revert "Fix element positions after new font rendering"
This reverts commit 52ee6ad470.

The original commit addressed incorrect UI alignment caused by improper
handling of font height and linespacing after FreeType integration
(introduced in 734386ce9f).

However, commit c2d529b975 corrected the root issue by standardizing
font metrics:
- Proper use of FreeType's height
- Removal of lineSpace
- Introduction of getCapHeight and Descender for accurate vertical
  alignment

As a result, the UI offset workaround is now obsolete and must be
reverted to reflect the correct baseline behavior.
2025-06-11 08:10:57 -05:00
Ralph Sennhauser f3ac9e9669 Fix eslint rule 'default-case'
Manual fixes needed for:
eslint --no-config-lookup --rule '"default-case": 1'

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-28 19:24:50 +02:00
Dunedan 52ee6ad470 Fix element positions after new font rendering
This fixes the positions of elements which changed as part of
734386ce9f.
2025-05-17 10:02:25 +02:00
Ralph Sennhauser 7684e12717 Fix eslint rule 'prefer-const' in modmod
eslint --no-config-lookup --fix --rule '"prefer-const": 1' \
    binaries/data/mods/mod

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-06 13:49:13 +02:00
phosit df5fee6103 Rename PushGuiPage to OpenChildPage
There is no `PopGuiPage` anymore. For symmetry there should also be no
`PushGuiPage`.
2025-03-09 10:39:20 +01:00
trompetin17 8c250568e7 Add scrollpanel widget
This PR introduces a new ScrollPanel component with the following
capabilities:
- Scroll Orientation Support: Allows scrolling in horizontal, vertical,
  or both directions, providing flexibility for different use cases.
- Partial Object Rendering: Supports partial rendering of objects that
  are only partially visible within the scroll boundaries, improving
  visual accuracy and performance.
- Boundary-Constrained Mouse Interaction: Handles mouse events strictly
  within the panel's visible boundaries, preventing interaction with
  objects outside the scrollable area.
- Minimum Internal Size (min_width, min_height): Introduces support for
  virtual space management, allowing the panel to maintain a minimum
  internal size independent of its actual on-screen dimensions. Even
  when the panel is resized, this ensures that the content respects a
  defined virtual space (with min_width and min_height), effectively
  simulating a larger internal canvas. This is particularly useful for
  large content or scenarios where a more extensive scrollable area is
  required than the current visible panel.
2024-11-12 15:01:42 -05:00
phosit 36b9fd7b42 Return a promise from setButtonCaptionsAndVisibility
Now It's not hardcoded what is done if a button is pressed. The caller
can decide that.
Previously one had to call this function and then overwrite the on Press
attribute of each button.

Rename "Visibitily" to "Visibility" in setButtonCaptionsAndVisibility.
2024-10-17 20:47:54 +02:00
phosit d655455304 Make messageBox return a promise
Ofthen the `messageBox` is only used for confirmation like: "Do you
really want to overwrite the savegame?"
With this patch the code paths of "overwrite savegame" and "make new
savegame" can be combined.

In some cases there is nothing done when one button is pressed. That is
changed to an early return.

Comments by: @Stan
Differential Revision: https://code.wildfiregames.com/D5274
This was SVN commit r28191.
2024-08-11 13:41:32 +00:00
phosit f9114a87f2 Get a promise when starting a GUIpage
When calling `Engine.PushGuiPage` a promise is returned. The promise is
settled when the "child" page is closed. That allows to `await` it
inside `async` functions.
Previously the callback was run right inside the call to
`Engine.PopGuiPage`. Now the continuation of the promise is called at
the end of the "tick".

This won't help performance. It will more likely make things worse.
Since gui pages aren't opened or closed that frequently, it doesn't
matter that much.

Refs: 86c151ebaa

For the engine side:
The promise is stored in the `CGUIManager::SGUIPage` (like previously
the callback). When the promise is fulfilled it enqueues a callback in
the `JobQueue` of the `JSContext`.

Original patch by: @wraitii
Comments by: @wraitii, @Stan, @Polakrity, @lyv, @elexis, @vladislavbelov
Differential Revision: https://code.wildfiregames.com/D3807
This was SVN commit r28145.
2024-07-08 19:07:04 +00:00
Stan c3d61fecf2 Fix missing texture/duplicate sprite reported by checkrefs.py
This was SVN commit r27618.
2023-04-26 15:15:51 +00:00
Angen cde8b7fae8 Missed file
This was SVN commit r27195.
2022-11-03 17:29:46 +00:00
Angen f1874ec196 Add color mixer
Add option to pick colour with sliders

Differential revision: D4597
Comments by: @Stan, @vladislavbelov, @Langbart, @elexis
This was SVN commit r27188.
2022-11-01 11:46:14 +00:00
Stan b141204875 Allow to have more than 8 colors in the drop down.
Actual colors will be another commit.
Discussed with: @wowgetoffyourcellphone.

Differential Revision: https://code.wildfiregames.com/D4811
This was SVN commit r27172.
2022-10-24 12:43:30 +00:00
Stan f62e1457de Remove redundant references to deleted .dtd files
We only use relaxng and that confuses other linters like xmllint.

Patch by: @Langbart
Differential Revision: https://code.wildfiregames.com/D4748
This was SVN commit r27170.
2022-10-23 17:06:51 +00:00
marder a6c1d5bbb9 revert last commit / 39dd5329cc
Misscommunication if this was the right move or not.

Leave the size as it was until someone has time to fix all buttons at
once.

This was SVN commit r26987.
2022-06-24 16:41:53 +00:00
marder 39dd5329cc [GUI] increase msgbox button size to fix text overlap
Report:
https://wildfiregames.com/forum/topic/82754-alpha-26-pre-releaserelease-candidate-build-testing/page/6/#comment-504135

3ab25cbd95 added a new button which has more text and can span have
multiple lines in some languages.
Fix: increase the size.
possible todo for the future: unify button sizes or make them adaptive
depending on the text size.

comments by @Langbart @Stan

accepted by @wraitii

Differential revision: https://code.wildfiregames.com/D4707
This was SVN commit r26986.
2022-06-24 11:19:17 +00:00
marder 3294f0ea48 [GUI] Correction of the deco size at the bottom right of the ModernDialog sprite
The bottom deco on the right is 2 pixels wider than the one on the left.

Patch by @Langbart

Differential revision: https://code.wildfiregames.com/D4717
This was SVN commit r26968.
2022-06-20 06:33:27 +00:00
Stan fa5671438a Fix invalid translations in the game options.
Comments and fixes by: @bb
Fixes: #6197
Differential Revision: https://code.wildfiregames.com/D4083
This was SVN commit r26531.
2022-03-03 13:34:15 +00:00
Angen 7e5e06bae8 Fix timeout confirmation box depending on fps
Introduced in b4fbbed379
Use Date.now() to calculate passed time.
Rewrite to class.
Also actually pass timeout from json.

Differential revision: D4318
Comments by: @vladislavbelov, @Stan
This was SVN commit r26306.
2022-02-06 11:04:42 +00:00
vladislavbelov 4c26a2d11f Adds disabled sprites to slider.
Tested By: Langbart
Differential Revision: https://code.wildfiregames.com/D4355
This was SVN commit r26019.
2021-11-27 13:37:05 +00:00
Freagarach 083ab0f4b0 Some layout changes to the replay menu.
Cursor should not blink in read-only.
The path was too similar to the list and thus easy to miss, it has been
changed to a 'golden' colour.
A tooltip was added to the path.
The border colour of input fields was changed from white to gold.
The buttons at the bottom of the page are spread evenly.

Patch by: @Langbart
Differential revision: https://code.wildfiregames.com/D4296
Refs: #6350

This was SVN commit r25976.
2021-10-28 06:14:17 +00:00
Angen b4fbbed379 There have been quite a bit of number of questions how to change scale of the gui, because this option is hidden from the user.
Use dropdown with values. Implement confirmation box with countdown to
revert scale change because buttons can get unable to click.

Differential revision: D3037
Comments by: @vladislavbelov, @Stan, @wraitii, @pieq, @sera
Tested by: @Langbart
This was SVN commit r25966.
2021-10-17 10:58:51 +00:00
Angen 0c2c071aac Fix mod calling function from public
public mod does not have to be activated, moving compatibilityColor to
mod

Differential revision: D4237
Refs: #6294
Comments by: @bb
This was SVN commit r25881.
2021-09-01 16:24:12 +00:00
wraitii 07e44a75a1 Allow mods to say they should be ignored in replay/MP compatibility checks
Since it is very non-trivial to determine which mods change checksums
and which don't, this relies on modder goodwill (and on verification on
our end for signed mods).

The declaration is an optional "ignoreInCompatibilityChecks" boolean in
mod.json

Also rework slightly the MP lobby mod display to always show the host
mods in a clear manner.

Differential Revision: https://code.wildfiregames.com/D3968
This was SVN commit r25634.
2021-06-02 06:50:16 +00:00
Imarok 6f9a162dfa CList, COList, CDropdown, CText, CInput: Draw borders above the rest and improve scrollbar drawing order
Fixes: #6055
Differential Revision: https://code.wildfiregames.com/D4004
This was SVN commit r25587.
2021-05-28 16:32:04 +00:00
vladislavbelov 3e5638e548 Removes hardcoded 1px width borders from GUI sprites.
Tested By: Imarok
Differential Revision: https://code.wildfiregames.com/D4008
This was SVN commit r25541.
2021-05-24 18:42:51 +00:00
wraitii 1c9efa6fb5 Implement Single-Player campaigns - Barebones tutorial campaign included.
This implements necessary tooling to create a simple SP campaign.
The architecture is intended to be easily extensible in the future.

'Campaign Run' contains the metadata of a campaign, e.g. maps
played/won. It's saved in the user folder under
saves/campaigns/*.0adcampaign
Campaign templates are JSON files in campaigns/

Campaigns can specify which Menu interface they will use. This is
intended to allow more complex layouts/presentation.
For now, a simple list interface is provided. This allows making
campaigns without any fancy art required (and effectively mimics AoE1's
campaign interface).

The behaviour on game end is also intended to be extensible, supporting
things such as carrying over units between scenarios - for now, it
simply records won games.

GameSetup is not available for now - scenarios are triggered with the
settings defined in the map/default settings. Improving on this requires
refactoring the gamesetup further.

The load/save game page has been extended slightly to support
showing/hiding campaign games (campaign gamed are saved under saves/
directly, there is no strong motivation to do otherwise at this point)

Closes #4387

Differential Revision: https://code.wildfiregames.com/D11
This was SVN commit r24979.
2021-03-02 15:43:44 +00:00
Angen 75b8d3194e Show a default value in playersFilter input to show user what it is for [v2]
Redo original diff D245 by ffffffff after commit of cpp changes for
input placeholders.

Differential revision: D3245
Reviewed by: bb
Comments by: Stan, wraitii
This was SVN commit r24439.
2020-12-23 15:50:16 +00:00
elexis ccea97670e CSlider inherits IGUIButtonBehavior to gains button sounds, press/release events, duplication removal, continuation of sliding if the object is not hovered while the button is still pressed, refs #2593, c016a74309/D325, 359df88f1a/D1622.
Use the events to fix jittering of the gamesetup slider in
multiplayermode, refs 352d4ea78f/D2571.

Differential Revision: https://code.wildfiregames.com/D2592
Reviewed By: nani
Comments By: Vladislav
This was SVN commit r23435.
2020-01-24 00:56:51 +00:00
elexis 63d8d579d7 Options page dropdown support for per-value hovered tooltips.
Differential Revision: https://code.wildfiregames.com/D2576
Preparation for: D2546
Accepted By: Vladislav
This was SVN commit r23414.
2020-01-18 20:40:33 +00:00
elexis 34138a7764 Gamesetup class rewrite, fixes #5322, refs #5387.
* Decouples settings logically which in turn allows fixing many problems
arising from previous coupling.
* Fixes the persist-match-settings feature, refs #2963, refs #3049.
* Improves performance of the matchsetup by rebuilding GUI objects only
when necessary.

Provides groundwork for:
* UI to control per-player handicap, such as StartingResources,
PopulationCap, StartingTechnologies, DisabledTechnologies,
DisabledTemplates, ..., refs #812.
* Map specific settings (onMapChange event), refs #4838.
* Chat notifications announcing which settings changed, refs D1195,
* Multiple controllers setting up the game (since setting types can
check for permissions in onUpdateGameAttributes without the need for a
new data model or a second gamesetup data network message type), refs
#3806, subsequently dedicated server, refs #3556.
* MapBrowser (MapCache, MapTypes, onUpdateGameAttributes interface),
refs D1703 and D1777,
* Multiplayer saved games (decoupling and setting dependent unique
logic), refs #1088.
Refs
https://wildfiregames.com/forum/index.php?/topic/20787-paid-development-2016/
https://wildfiregames.com/forum/index.php?/topic/20789-paid-development-2016/

Enable maps to restrict setting values:
* If a map specifies an AI or Civs for a playerslot, the controller
can't assign a player/other AI or Civ to that slot, refs #3049, #3013.

Fix per player StartingResources, PopulationCap, StartingTechnologies,
DisabledTechnologies, DisabledTemplates following 9177683653, refs #812,
fixes #4504. Use this for DisabledTechnologies on Polar Sea.

Persist user settings for Skirmish maps:
* All user chosen settings are persisted when changing the selected map
or maptype,
  except where the selected map overwrites the setting value and
  except for Scenario maps which still use the default value where the
map doesn't specify the setting value.

* Tickets relating to that Skirmish mapchange user setting persistance:
 - Selecting a map doesn't change the selected civilizations, fixes
#3120 (together with 7cf83f19fd removing map specified Civs).
 - Selecting a map type doesn't reset the selected settings, fixes
#5372.
 - Selecting a map doesn't change the selected victory conditions,
unless the map specifies those, refs #4661, #3209. (Atlas still writes
VictoryConditions to every map.)
 - Consume the player color palette from Skirmish maps, refs 4996d28110
/ #1580. Preserve the selected playercolors when switching the
Skirmish/Random map by chosing the most similar colors if the map comes
with a different palette.

Rated games:
* Hide and disable Rated game setting unless there are exactly two
players, fixes #3950, supersedes D2117.
* Display conspicuous warning if the game is rated, so players are
perfectly aware.

Autostarted games:
* Allow using the gamesetup page to autostart matches with arbitrary
maps, not only this one tutorial, as reported in D194 and 15e2b42525,
refs D11.

Networking:
* Keep gamesetup page open after disconnect, allowing players to read
chat messages indicating why the host stopped the server, fixes #4114.
* The message subscription system allows new and mod settings to run
custom logic on arbitrary setting changes (most importantly on map
change).
  This removes hardcoded logic restrictions from the gamesetup option
unification rewrite in b4e5858f6d/D322, refs #3994,
  such as the hardcoding of setting references in selectMap to biomes
from f2550705d3/D852 and the difficulty from 9daa7520ef/D1189,
RelicDuration, WonderDuration, LastManStanding, RegicideGarrison,
TriggerScripts, CircularMap, Garrison, DisabledTemplates.

Checkboxes:
* Display values of disabled checkboxes with Yes/No labels, fixes D2349,
reviewed by nani.

Clean g_GameAttributes of invalid values and gamesetup GUI temporaries,
refs #3049, #3883:
* Delete useless values:
 - VictoryScripts, because they are redundant with TriggerScripts,
introduced in 8915037631.
 - mapType which was written twice to g_GameAttributes following
9177683653
 - Description, Keywords, Preview since that doesn't impact simulation
and can be loaded from the MapCache
 - mapFilter, mapPath, SupportedBiomes, SupportedTriggerDifficulties
since they are only used in the gamesetup
* Delete conditional values if the condition is not met:
 - AIDiff, AIBehavior if there is no AI in that slot
 - Nomad and Size if the maptype is not Random
 - Biome, TriggerDifficulty if the map doesn't support that
 - WonderDuration, RegicideGarrison, RelicCount, RelicDuration if the
according VictoryConditions are not enabled
 - LastManStanding if TeamsLocked
 - Rating if there are more than 2 players

MapCache:
* Refactor to MapCache class, store maps of all types and use it in the
replaymenu, lobby and session as well.

SettingTabsPanel:
* Remove hardcodings and coupling of the SettingTabsPanel with
biomes/difficulties/chat UI from D1027/ac7b5ce861.

GamesetupPage.xml:
* Restructure the page to use hierarchical object organization
(topPanel, centerPanel, centerLeftPanel, bottomPanel, centerCenterPanel,
centerRightPanel, bottomLeftPanel, bottomRightPanel), allowing to
deduplicate object position margins and size math and ease navigation.

New defaults:
* Check LockedTeams default in multiplayer (not only rated games).
* Persist the rated game setting instead of defaulting to true when
restarting a match, which often lead to unintentional rated games when
rehosting.
* 60 FPS in menus since they are animated

Autocomplete sorting fixed (playernames should be completed first).
Refactoring encompasses the one proposed in Polakrity and bb D1651.

Differential Revision: https://code.wildfiregames.com/D2483
Tested by: nani
Discussed with:
* nani for blackbox testing, code architecture, performance and
MapBrowser in PMs on 2019-12-19, 2019-12-31, 2020-01-06
* Angen for the simulation diff on
http://irclogs.wildfiregames.com/2020-01/2020-01-03-QuakeNet-%230ad-dev.log
* bb on SettingsTabPanel on
http://irclogs.wildfiregames.com/2020-01/2020-01-05-QuakeNet-%230ad-dev.log
* Imarok on data model and revised multi-controller plans for #3806 on
http://irclogs.wildfiregames.com/2020-01/2020-01-07-QuakeNet-%230ad-dev.log
Emojis by: asterix, Imarok, fpre, nani, Krinkle, Stan, Angen, Freagarach
This was SVN commit r23374.
2020-01-11 20:14:17 +00:00
elexis 31a2dd294e Fix top panel being hidden during pause mode following 702cdbf0c7 / D2292 reported by Freagarach, ValihrAnt, Krinkle et al.
Remove the false misleading default.cfg z value that is always
overwritten by CGUI::Xeromyces_ReadObject, both introduced in
e21ebb37f5.
Remove multiline property since its redundant with the default C++
boolean, making the default style more agnostic of final GUI Object
classes.

Close advanced locale dialog correctly upon cancel following 86c151ebaa
/ D1684.
Don't switch the background image when closing the credits dialog
following bcf2c75513, refs #3744.

This was SVN commit r22966.
2019-09-22 10:51:08 +00:00
elexis d412b2010b Delete unused CCheckbox text setting remains following b1422137e5, refs 0f807c643a.
Differential Revision: https://code.wildfiregames.com/D2314
Tested on: clang 8.0.1., Jenkins

This was SVN commit r22952.
2019-09-21 03:11:18 +00:00
elexis be963ec9b7 Delete 27 invalid style settings and add LOGWARNING to inform future authors.
Unify the two IGUIObject::LoadStyle functions and remove CGUI argument
that is always identical to the member.

Differential Revision: https://code.wildfiregames.com/D2232
Tested on: gcc 9.1.0., clang 8.0.1, Jenkins

This was SVN commit r22792.
2019-08-27 16:03:24 +00:00
elexis 86c151ebaa PushGuiPage support for passing a function instead of a function name.
Allows coding the GUI without global functions which break
prototype-oriented coding, refs #5322, fixing the concern in 4b1297b328.

Supports stacked message boxes and removes the according workaround.
Change structree / civinfo switch-dialog code from 760a47335d to perform
the callback for page that actually registered the callback.
Ensure the parent that the callbackhandler is always called if the page
is closed.
Merge PopGuiPage and PopGuiPageCB following that choice, incidentally
leaving cleaner code.

Differential Revision: https://code.wildfiregames.com/D1684
Comments by: Yves, Vladislav, wraitii, leper
This was SVN commit r22676.
2019-08-16 18:46:04 +00:00
bb 7e1f959db0 redo 2d57478781, Create a ConfigDB_CreateAndWriteValueToFile function to absorb some duplication in the gui
Move two duplicated lines from 7e14a33411 in a function

fixes 2d57478781
Reviewed By: elexis
Comments By: Stan, vladislav
Differential Revision: https://code.wildfiregames.com/D1939
This was SVN commit r22615.
2019-08-05 14:12:55 +00:00
bb 3a77eb25d3 Fix ESLint semicolon-related warnings
Patch By: Krinkle
Differential Revision: https://code.wildfiregames.com/D2004
This was SVN commit r22419.
2019-07-01 11:09:19 +00:00
vladislavbelov ac1a56e0cc Fix cell text wrapping inside COList.
Patch By: gentz
Tested By: vladislavbelov
Commented By: elexis
Differential Revision: https://code.wildfiregames.com/D1717
This was SVN commit r22066.
2019-01-24 20:00:31 +00:00
elexis 237c706dff Allow the user to print and save the text of the terms and conditions before the conclusion of the contract and use the word "Clickwrap agreement".
See EU Court of Justice decision C-322/14, refs #5257.
Adds one string.

Differential Revision: https://code.wildfiregames.com/D1657
This was SVN commit r21919.
2018-10-25 12:32:28 +00:00
elexis 209bab0255 New UserReporter Terms and Conditions, hopefully GDPR compliant, refs #5257.
Require SSL for the UserReporter clientside.

Differential Revision: https://code.wildfiregames.com/D1598
Includes contributions by bb and Itms

This was SVN commit r21898.
2018-10-05 22:19:28 +00:00
elexis 82740d9278 Mod.io Disclaimer.
Have the user accept explicitly that he is subject to the Terms and
Conditions and Privacy Policy by the DBolical Pty Ltd company when using
their service with our client.

Rely on luck that this is sufficient to count as educating the users
about the personal data processed, the purposes and legal grounds of
personal data processing and the GDPR user right to access, rectify,
erase, restrict and complain, refs #5257, GDPR 13.
The Mod.IO DMCA report possibility should be added eventually.
Remove FileExists hack from da49aa1541 / D1602.
Refs D1601, https://github.com/elexis1/0ad/tree/terms

This was SVN commit r21896.
2018-10-02 15:52:48 +00:00
elexis 27c107a448 Inform users that they are subject to the mod.io Terms and Conditions and Privacy Policy and provide links following 833c9f108c / D1029. Refs GDPR #5257.
Add link to feedback.wildfiregames.com, which demonstrates users how
their data is going to be used.

Add link buttons to the Terms dialog (refs #4583), so that users are
informed of the terms prior to becoming subject to them.
Don't link the DMCA / copyright terms of mod.io now since I found no UI
with support for 3 buttons that doesn't appear unsatisfyingly ugly.
Adds 3 button captions and 1 tooltip string.

Differential Revision: https://code.wildfiregames.com/D1627
A Comment and a relatable patch in D1601 by smiley / (-_-).

This was SVN commit r21890.
2018-09-22 16:27:49 +00:00
elexis 82a89c4eb1 Move openURL function and two strings from public/ to mod/.
Use it for the mod author website now.
Use it for the terms links next, refs #5257, D1627.

This was SVN commit r21889.
2018-09-22 16:23:43 +00:00
elexis da49aa1541 Refactor lobby terms and conditions UI from 80dbd1f2a3 / D1568 to a new terms dialog UI and reuse that for mod.io and the UserReporter, refs #5257, #5218.
Reuse all existing strings, use a FileExists hack for mod.io until the
new strings are committed.
Rename prelobby/common/terms/terms.js to termslobby.js for easier
distinction from common/terms.js.

Based on patch by: bb
Differential Revision: https://code.wildfiregames.com/D1602
refs https://code.wildfiregames.com/D1601
refs https://github.com/bb-bb/0ad/tree/terms
refs https://github.com/elexis1/0ad/tree/terms

This was SVN commit r21887.
2018-09-14 15:14:48 +00:00
Itms 833c9f108c mod.io support.
mod.io is a new platform for sharing mods, that 0 A.D. can make use of
in order to download mods and install them.

Based on patch by leper, numerous changes from s0600204, vladislavbelov,
Imarok, elexis, temple and myself.
Differential Revision: https://code.wildfiregames.com/D1029
This was SVN commit r21759.
2018-04-22 18:14:45 +00:00
Itms 364eaa34c6 Move some utility functions from the public mod to the mod mod in preparation for upcoming commit.
Small fixes and improvement while I'm at it, by temple and elexis.

This was SVN commit r21754.
2018-04-22 12:03:51 +00:00
Imarok 724b25bac6 Style adjustments to 936c16050b
This was SVN commit r21738.
2018-04-17 17:31:11 +00:00