1. Tiger's tar does not support `--strip-components`.
2. Tiger predates `getconf _NPROCESSORS_ONLN` support.
3. Tiger's default `cc` is too old to build smpq,
so we default to `CC=gcc` instead (e.g. from macports).
We also bump stormlib version because the previous one fails
to compile with gcc14 on Tiger.
We set `CMAKE_OSX_DEPLOYMENT_TARGET` to make the package compatible with
older macOS than the one we're building on.
However, we should not do this when building on an even older system,
e.g. macOS 10.4
On CMake v3.28+, `EXCLUDE_FROM_ALL` is supported natively as an argument
to `FetchContent_Declare`.
On CMake v3.30+, `FetchContent_Populate`, which we use to polyfill
`EXCLUDE_FROM_ALL` support for older versions of CMake, is deprecated
and triggers a noisy warning.
Avoids the warning by using the native `EXCLUDE_FROM_ALL` support on
CMake v3.28+.
* Sync pl.po to source code.
* Fix "U.S. Sales" translation.
* Change "żywotność" to "witalność" so it flows better in character stats screen.
* Button combo bindings translation.
* Player inspection translations.
* Debug commands translations.
* Inventory sorting translations.
* Quick spell translations.
* Chat log translations.
* Consistent translations for "armor" and "armor class".
* Update store label translations.
* Different take on resists translation on character screen.
* Shorten Experience translation to avoid overflowing.
* Improve the validate_translations.py script.
1. Do not draw foliage with the pause trn.
2. Display the number of steps.
3. If the tile is not walkable (allowed for destination tile), display
the number of steps in yellow.
1. Updates the Dockerfile to the same image and flags as the CI.
2. Sets `-O2` as the default CMake Release flag rather than passing it
in a custom way.
Our implementation has a more modern interface and only
supports the features that we care about.
It always outputs `\n` as newlines and does not output BOM.
The modern interface eliminates awkward `c_str()/data()` conversions.
This implementation preserves comments and the file order of sections
and keys. New keys are written in insertion order.
We now also support modifying and adding default comments,
which may be a useful thing to do for the especially tricky
ini options (this PR doesn't add any but adds the ability to do so).
Sadly, this increases the RG99 binary size by 24 KiB.
I'm guessing this is because the map implementation generates
quite a bit of code.
Note that while it might seem that using `std::string` for every key and
value would do a lot of allocations, most of these strings are
small and thus benefit from Small String Optimization (= no allocations).