Commit Graph

24653 Commits

Author SHA1 Message Date
phosit d3bc5bc802 Enable page-inits to return a Promise
Allows to return the page-completion-value instead of passing it to an
`Engine` function.

Closes: #7000
2025-03-09 10:39:20 +01:00
Vantha 5741f77c6e Add a 'team population' gamesetting
Remove the world population setting from the game setup.
Add a dropdown for choosing the "Population Cap Type".
(-> containing Player Population, World Population, Team Population)

Use a single "Population Cap" dropdown adapting to the pop cap types.
Move all population data into a single .json file.

New system component "PopulationCapManager" for distributing pop caps.

Resolves: #6918
2025-03-06 13:25:43 +01:00
Dunedan c448973398 Remove a bunch of unused scripts
Some of them were simply unused, while others got replaced by Python
scripts.
2025-03-03 20:57:49 +01:00
Dunedan 03cb24d400 Move xmlvalidator code to entity directory
The xmlvalidator logic is only used by the checkrefs.py script, so this
moves it to the same directory to have it co-located and avoid having to
modify sys.path to import it.
2025-03-03 17:45:08 +01:00
Dunedan 118ea18a58 Enable a few more ruff rules 2025-03-03 14:18:40 +01:00
Dunedan 3c57fdb4a9 Fix ruff linting for scripts in source/tools/dist/
By default ruff excludes all files in directories named "dist" from
linting (https://docs.astral.sh/ruff/settings/#exclude). This caused the
Python scripts in `source/tools/dist/` to not get linted. This commit
fixes that and adjusts their style to fit our ruff rules.
2025-03-03 12:45:33 +01:00
Itms b831b1f559 Fix Jenkins pipelines on Linux agent
The Linux agent now runs Docker in rootless mode for additional
security. Operations inside containers must be run as root to match the
underprivileged user running Docker.
2025-03-01 22:08:50 +01:00
Ralph Sennhauser 6738fdbab7 Remove root check in update-workspace.sh
If you run as root then created files will be owned by root, this is
expected behaviour and not messing with permissions as stated in the
error message.

Running in a container the root user may map to the user starting the
container while all other users would need mapping to be able to work
with a bind mounted a checkout.

Further Debian patches out the root check to be able to build on their
builder.

Given the above remove the check.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-03-01 18:36:44 +01:00
Vantha 13dd7c0bb7 Remove empty and invalid sprite assignments
(They were overwritten by the code anyway)
2025-02-26 16:20:27 +01:00
Vantha 0177b97c69 Complete the GUI XML checks in checkrefs.py
Add checks for sprites, styles, scrollbars, tooltips, and colors.
And too for entire objects referenced by the "use_object" attribute.
(even though that is currently unused)
2025-02-26 16:20:27 +01:00
Vantha 734f8e1192 Add an "OnAttackDetected" trigger 2025-02-26 11:56:52 +01:00
Stan 288f125178 Add three options to the autostart CLI.
- a speed option
- a placement option
- a map visibility option
2025-02-24 22:45:23 +01:00
phosit 40fe7df654 Silence dangling pointer warning for JS::Rooted
With much help by @sera.
2025-02-24 21:30:56 +01:00
Dunedan 18d7746c84 Fix adding port forwardings using UPnP
The UPnP implementation included a combination of two subtle bugs, which
resulted in failure to create port forwardings every time after the
first one.

When using UPnP, the internet gateway to create the port forwardings at
needs to discovered. As that takes a while, the its root descriptor URL
was supposed to be cached after successful discovery in the user config
in "network.upnprootdescurl". However, instead of caching the root
descriptor URL, the control URL got cached. That caused following
requests to the root descriptor URL to fail, as they ended up at the
control URL instead. As such requests might also fail when the network
topology changed, the code was supposed to fall back to discovering the
internet gateway again when the cached one didn't work. However, due to
the inner workings of miniupnpc the request using the cached root
descriptor URL didn't result in an error, so the new discovery was never
triggered. As the wrong value was persisted in the user config there was
also no way to get out of this situation again.

This commit fixes both of these bugs.

As far as I can tell these bugs existed since the introduction of the
caching of the root descriptor URL in 0ba25e9968, which means creating
port forwardings using UPnP has been broken since Alpha 15.
2025-02-24 08:23:07 +01:00
Dunedan 5696f063f5 Reduce time to discover the internet gateway
When adding a port forwarding via UPnP, pyrogenesis first needs to
discover the internet gateway to create the forwarding at. To do so, it
utilizes miniupnpc to send an SSDP request and waits 10 seconds until it
processes the responses and continues to add the port forwarding.
As that happens asynchronously it means if players hosting games rely on
UPnP for port forwarding and if their pyrogenesis instance doesn't have
the address of their internet gateway cached, it takes more than 10
seconds after starting to host a game, before players can join. However,
waiting for 10 seconds is completely unnecessary, because the internet
gateway responds immediately to the SSDP request. Therefore, this commit
reduces the time to wait for responses from 10 seconds to 2 seconds,
which is the timeout miniupnpc uses internally as well, when discovering
internet gateways.
2025-02-23 04:41:43 +01:00
Dunedan fcd3fc2aa3 Create port forwarding for correct port with UPnP
Up to know the UPnP logic ignored the port a user was hosting a game on
and always added a port forwarding for the default port UDP 20595. This
commit fixes that, so a port forwarding is added for the actual port a
game is hosted on.
2025-02-22 20:26:30 +01:00
Dunedan 75d343293f Remove "useLongStrings" logic
As it turns out we don't need that special logic for handling the "long"
locale properly and everything continues to work as before without it.

The only difference is that the number format not being the one from
en_us anymore when using the "long" locale, but the one of the
system-wide configured language, which should be an even better user
experience than before.
2025-02-22 18:18:42 +01:00
Lancelot de Ferrière c475cc2265 Cleaner debug serializer output
The debug serializer currently outputs data even for components where `Serialize = null`.
This leads to useless data being output, especially in OOS debug states which makes diffing more annoying.

Noted in #7634
2025-02-21 18:20:56 +01:00
Vantha aec5bf42da Layout and code improvements on the welcome screen
Move the lines from the .txt to the .xml .
Add separate objects for each paragraph and icon.
Position the icons depending on the paragraph length in the current
language.

This eliminates potential for breakage during translation.

Fixes #7484
2025-02-20 11:15:57 +01:00
Ralph Sennhauser 9a43c43a33 Avoid gcc warning in json_spirit
Gcc-14 triggers a warning for substitute_esc_chars in
json_spirit_reader_template.h if optimizations are enabled.

../../../source/third_party/jsonspirit/json_spirit_reader_template.h:138:62:
/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/char_traits.h:427:56: warning: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775808 or more bytes at offsets 0 and 0 may overlap up to 9223372036854775809 bytes at offset -1 [-Wrestrict]
  427 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));

for with lto enabled

/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/char_traits.h:427:56: warning: ‘__builtin_memcpy’ specified bound between 9223372036854775808 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=]
  427 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));

This looks like another incarnation of bugs like:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105329
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100366

Add quirk to avoid the warning

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-02-19 21:52:50 +01:00
Ralph Sennhauser 8baff65e95 Bump Windows libs for premake5 beta4
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-02-18 17:42:42 +01:00
Ralph Sennhauser df38d4e899 Use new premake lto api if available
Premake v5.0.0-beta4 replaces the LinkTimeOptimization flag with a
function linktimeoptimization, use it if available to avoid deprecation
warning.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-02-18 17:42:42 +01:00
Ralph Sennhauser 84b407aa35 Update premake to v5.0.0-beta4
https://github.com/premake/premake-core/releases/tag/v5.0.0-beta4

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-02-18 17:42:42 +01:00
Ralph Sennhauser 77256c8d32 Fix profiler2 webui html
Cleanup some bogus tags and outdated css attribute.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-02-17 21:22:30 +01:00
Ralph Sennhauser 4b59d6b739 Update jquery used by profiler2 webui
jquery 1 is for support of old version of browsers not even maintained
this days.

Updating prevents occasional hangs for me.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-02-17 21:22:30 +01:00
AFCMS 51bbdc6537 Improve the software center display of the application
- OARS content rating have been updated to version 1.1
- Touch Screens, Keyboard, Mouse have been marked as supported
- Laptop screens and bigger are marked as required to the minimum width of 1024 required by the game
- Fixes the device compatibility page on GNOME Software.
- added a "0AD" keyword to  fix an issue with Flathub search feature where searching for "0AD" instead of "0 A.D." returns no results.
2025-02-17 21:07:17 +01:00
Stan cf0c285d8e Patch metainfo file to to match the new requirements 2025-02-17 21:07:12 +01:00
Sanctorum Thomas 37065ebc71 Harmonized design between civinfo and structree 2025-02-16 09:10:16 +01:00
Vincent Cheng 026a668a0f Make sure mozjs patch FixFpNormIssue.diff applies cleanly on i386 2025-02-15 12:46:08 +01:00
Ralph Sennhauser 82ff0ea90b Remove CONFIG_ENABLE_BOOST
Code within CONFIG_ENABLE_BOOST is required to compile pyrogenesis.

As boost is required in many other places, making it truly optional in
the one case where there is currently a guard is meaningless.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-02-14 20:35:04 +01:00
scuti a9819e9865 Created hotkey to grab and release mouse.
Addresses #6790
2025-02-14 20:18:49 +01:00
phosit a786a1f3d8 Use std::variant in Future
Either a return value or an exception has to be stored. With
`std::variant` it's more explicit.
Also the return value is never empty, so there is no need for
`std::optional` anymore.
2025-02-10 18:11:02 +01:00
scuti e87d3e4137 Check if online before calling engine command. 2025-02-09 18:50:15 +01:00
scuti 490c3eb22b Fixed messages of type 'system' not-printing. 2025-02-09 18:50:15 +01:00
scuti 7d616763a4 Fix /kick or /ban segfaulting in singleplayer
Addresses #7467
2025-02-09 18:50:15 +01:00
Andreas Traber 33f332047d Add atraber to list of contributors. 2025-02-09 16:00:22 +01:00
Andreas Traber 05f31300a1 Fix multiple bugs where a wrong variable is used.
Those bugs stood out to me as I was experimenting with migrating petra
to ES6 classes. Since this give the code stronger typing, those kind of
errors stand out immediately.
For example, autoResearch is a function, thus referring to it by name
will always return the same result. In other cases the referenced
variables simply don't exist.
2025-02-09 16:00:22 +01:00
Langbart dffa892c60 fix: rlclient update resource gathering and map name
fix: #7540
2025-02-09 14:38:55 +01:00
Martijn van Duren 064ab14577 OpenBSD supports pkg-config 2025-02-09 14:32:38 +01:00
Martijn van Duren 2338473da1 Make libraries/*/build.sh use "${TAR}" instead of tar directly.
This allows systems using a tar version not supporting all the required
flags to easily switch to gnu tar.
2025-02-09 14:31:10 +01:00
Lancelot de Ferrière 5f117532a4 Map generation: speed up ParseEntities
When marking a tag dirty, the obstruction manager checks it has not already done so. This is un-necessary when the global state is marked dirty, and this check is rather slow since we do it once per entity, effectively leading to an o(n^2) runtime.
2025-02-09 11:30:35 +01:00
Feldfeld 5dcef8c17a Uniformize Han farming technologies
Reported by stevenlau in https://wildfiregames.com/forum/topic/127586-a27-disadvantageous-farming-tech-upgrade-time-cost-for-han/

Missed in b4155900d3 / D4720
2025-02-01 23:23:18 +01:00
Ștefan Talpalaru 3ff3f72890 build-source-libs.sh: fix "--with-system-premake" 2025-01-31 13:01:40 +01:00
Ralph Sennhauser bccd3db231 Add missing header in KeyName
Reported-by: @svenstaro
Ref: #7564
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-01-30 21:15:28 +01:00
drh 03ceb27e90 Add camera pan inversion option
Fixes: #6539
2025-01-30 18:42:59 +01:00
Carl-O 7d4a6c5d07 Capitalization of first letter of word 2025-01-29 22:58:51 +01:00
phosit b41ca5ad78 Replace FALLTHROUGH by the standard attribute 2025-01-29 19:34:12 +01:00
phosit 473f8ca72e Remove FALLTHROUGH on empty cases
`#include "lib/code_annotation.h"` can be removed in some places.
2025-01-29 19:34:12 +01:00
Langbart 2fe7555002 fix: git diff to work on LFS files for map xml files
Users can enable this by setting:
git config diff.lfs-xml.textconv cat

Ref: #7519
PR: https://gitea.wildfiregames.com/0ad/0ad/pulls/7539
2025-01-29 08:37:16 +01:00
Dunedan db35a8494c Update supported languages for the NSI installer
235ea5cfb4 updated the languages supported by 0 A.D., but missed
updating them for the installer. This commit makes up for that and
updates the languages for the installer as well.
2025-01-28 19:14:16 +01:00