26003 Commits

Author SHA1 Message Date
stevenlau 06f3ea58bf Fix engine obstruction cluster position typo
Obstruction cluster are found in walls. Since position of walls would never change, that erroneous code path was probably never executed, hence it never caused any observable problems. Fixing this anyway in case it would be relevant in future.
2026-09-21 14:08:46 +02:00
Vladislav Belov 9dec9c1d53 Removes SMBIOS
It was implemented on Windows only. It doesn't really contain a useful
for us information which can not be obtained by diagnostic tools like
dxdiag when needed.
2026-09-21 01:10:35 +02:00
Vladislav Belov 63016196ce Removes unused code from lib/bits.h 2026-09-21 00:47:17 +02:00
Vladislav Belov 2c68f7e426 Replaces ceil_log2 by std::bit_width
Also removes unused floor_log2.
2026-09-21 00:47:15 +02:00
Vladislav Belov 0650721b19 Replaces round to closest power of two by std ones 2026-09-21 00:47:13 +02:00
Vladislav Belov 0b90eea56b Replaces is_pow2 by std::has_single_bit 2026-09-21 00:47:11 +02:00
Vladislav Belov 93eb35a618 Replaces PopulationCount by std::popcount 2026-09-21 00:47:09 +02:00
Linkid ddbdee53be Use homogeneous name for maps
To follow other maps name syntax (`<name> (<number of players>)`), "players" is
removed from the name on the following maps to keep only the number:
- Cycladic Archipelago (2p, 3p)
- Libyan Oasis
- North African Savanna.
2026-09-20 11:22:16 +02:00
phosit a56456495c Remove debug_printf filtering
The filter was rarely used. The implementation was overly complex and
might have filtered out strings that should have been printed.

Tags like "FILES|" have been removed.
For the loader a macro `LOADER_LOG` has been introduced.
2026-09-19 08:52:27 +02:00
Atrik a8ee3c2b92 Warn only once per missing icon
Mods may dynamically request icons
(e.g., [icon=\"emblem_${civ}\"], [icon=\"icon_${res}\"]) that
don't exist when another mod introduced the new civ or resource
but hasn't added that icon.
This results in excessive error log spam during normal gameplay.
2026-09-17 15:21:59 +02:00
phosit 1fc267080d Deduplicate BuildTextureRGBA functions
All of them contain the same loop.
2026-09-17 09:35:39 +02:00
phosit 926d230c6c Remove classes inheriting TerrainTextureOverlay
Those classes only exposed one function. It's better to use
`std::function` for that, because it's not intrusive.
2026-09-17 09:35:39 +02:00
phosit 7a0aead3cd Remove unused TerrainTextureOverlay parameter 2026-09-17 09:35:38 +02:00
Atrik fa7a75b951 Add a test for auras in preview 2026-09-16 10:39:26 +02:00
Atrik 810d92bf8b Fix auras taking effect in building previews
Auras.CanApply called Visibility's GetPreview(), which doesn't exist,
so auras were applying in preview. Introduced in eb2ff98883.

Add GetPreview() to Visibility.

Fixes #9225
2026-09-16 10:39:26 +02:00
Atrik 0322d039f6 Fix player data not updating on diplomacy change
f39e71cca0 moved the player data refresh after a diplomacy change
into a diplomacy colors change handler, which only runs when
diplomacy colors are enabled. With them disabled, the diplomacy
dialog's stance buttons didn't reflect the new stances.

Refresh the player data directly in the diplomacy notification
handler, before the diplomacy colors are recomputed, and remove
the now redundant diplomacy colors handler registration.
2026-09-14 11:35:19 +02:00
7wells 779021c9dc Fix nondeterministic CinemaManager serialization
Fixes #8867
2026-09-14 11:06:34 +02:00
Linkid fe144f1dc6 Use homogeneous name for Watering Holes
To follow other maps name syntax (`<name> (<number of players>)`), "players" is
removed from the name on the Watering Holes map to keep only the number.
2026-09-13 21:58:34 +02:00
Atrik 950d86336e Fix sortEntitiesAlongLine mutating its lineEnd 2026-09-13 12:15:38 +02:00
Atrik 191549e51c Fix crossed unit-to-target pairing
sortEntitiesForEngagement projects both attackers and targets from
the same origin (avgAttackers) onto the same vector,
so reversing the target array was incorrect.
2026-09-13 12:15:38 +02:00
obelix c3ace13b54 Rename delian_league.json to athen_delian_league.json
Fixes #9217
2026-09-11 23:09:33 +02:00
Lancelot de Ferrière 6a46e74443 Vertex pathfinder: skip vertices with worse g cost
This reduces the number of expensive visibility checks we run,
leading to 5-10% better performance on average.
2026-09-11 15:22:37 +02:00
obelix e407363e13 Fix a reference in the in-game Manual
Reported by forum user Thalatta.

Fixes #9208
2026-09-11 10:23:05 +02:00
Vladislav Belov 58e2c59466 Adds Load with unique_ptr to VFS
Also replaces some usages of Load with shared_ptr by unique_ptr.
2026-09-10 16:39:29 +02:00
Vladislav Belov aecd2b4245 Uses span for vfs instead of passing shared_ptr 2026-09-10 16:39:24 +02:00
Vladislav Belov 1b4397d2ae Adds final to VFS 2026-09-10 16:39:18 +02:00
Vladislav Belov 571047a64a Adds explicit check for VFS create alignment 2026-09-10 16:39:14 +02:00
Vladislav Belov 4ae50fd4a4 Reduces memory peak during window resize 2026-09-10 15:38:55 +02:00
Vladislav Belov 63e05d3c65 Removes unused updateFlags from GPU skinning 2026-09-10 15:27:18 +02:00
Vladislav Belov 100a13343a Uses default group for vertex buffer for skinning 2026-09-10 15:27:14 +02:00
Vladislav Belov e933d18a36 Moves tracking of requiring update models to upper
We need to track models to update in a single place. SceneRenderer in
that case. It allows us to make ModelVertexRenderer implementations more
straightforward.
2026-09-10 15:27:09 +02:00
Vladislav Belov a374411279 Separates preparing for rendering of CPU skinned
Only CPU skinned models require preparing for rendering to mark vertex
buffer chunks as needed.
2026-09-10 15:27:04 +02:00
Vladislav Belov 39c0dc69e4 Uses std::filesystem to get a file_size 2026-09-10 13:58:28 +02:00
Vantha 1cc3020049 Call buildFirstBase correctly
`this.buildFirstBase` doesn't exist so this caused errors since 8b1e78ae1e
2026-09-10 11:27:27 +02:00
phosit 89ea0ee4af Remove COMPILER_FENCE
Replace it by `std::atomic_signal_fence(std::memory_order::seq_cst)`.
2026-09-08 17:12:28 +02:00
phosit 7bcee2ea0e Remove XERO_ITER_EL 2026-09-08 10:32:51 +02:00
phosit f8ea2c0d49 Remove XERO_ITER_ATTR 2026-09-08 10:32:51 +02:00
trompetin17 c69ded6f30 Fix font fallback for regional locale variants
Add short locale (e.g. "zh") as intermediate fallback between the full
locale (e.g. "zh_HK") and the global default fonts.

Previously, regional variants without explicit font config entries would
skip directly to global Latin fonts, causing CJK characters to display
as "xxxxx".

Reported at:
https://wildfiregames.com/forum/topic/141392-0ad-alpah-28-only-show-some-english-words-correctly-most-words-are-xxxxx
2026-09-07 15:24:25 -05:00
phosit 3b967ab40c Fix format-string in ComponentManager
Introduced in 9822a22573 by switching to `fmt::format`.
2026-09-07 20:42:30 +02:00
Vladislav Belov 551071c5a4 Replaces shared_ptr by span for LoadFile and Store 2026-09-05 12:33:46 +02:00
Ralph Sennhauser 2e13192479 Fix deleting last node in spline
The last node needs to have distance "0" to next node. Do the inverse of
when adding nodes.

Also add some basic tests covering this bug.

Fixes: #4659
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2026-09-03 10:49:52 +02:00
eZamus e5e22c1deb Spectate Mode: Display Gaia's emblem
Fixes #7592
2026-09-02 10:41:56 +02:00
Fabio Pedretti 54bbef308a Pathfinder: Remove unused ICmpPosition lookup in DistributeAround()
cmpPosition was declared but never read anywhere in the function,
likely left over from an earlier refactor — each unit's own position
is already fetched correctly inside the loop via unitPos. CmpPtr
construction is a pure lookup with no side effects, so removing the
unused instance doesn't change behaviour.
2026-09-01 10:54:32 +02:00
Fabio Pedretti 4dfdfc12b2 Fix: Prevent out-of-bounds memory access in CheckBuildingPlacement
In `CCmpPathfinder::CheckBuildingPlacement`, the boundary check for the
vertical grid dimension (`j > m_TerrainOnlyGrid->m_H`) allowed `j` to equal
`m_TerrainOnlyGrid->m_H`. Since grid indices are 0-based (valid row indices
range from `0` to `m_H - 1`), this boundary condition allowed the loop to
execute with an out-of-bounds row index, leading to an invalid memory
read (`m_TerrainOnlyGrid->get(i, j)`) and potential segfaults.

This patch changes the comparison operator to `j >= m_TerrainOnlyGrid->m_H`,
ensuring that spans extending to or past the grid height bound are properly
flagged as out-of-bounds.
2026-09-01 10:54:32 +02:00
Fabio Pedretti e4e50d7711 MapReader: Reject maps with out-of-range terrain tile texture index
m_Tex1Index is unvalidated (raw .pmp bytes / RMS script) and was used
to index m_TerrainTextures with no bounds check.
2026-08-29 16:19:08 +02:00
phosit d37db2ba07 Remove CStr::ReverseFind
It was only used once. In this case a normal `std::string::find` can be
used.
2026-08-28 09:50:01 +02:00
phosit 89c7aa47ce Remove CStr functions related to std::u16string
It wasn't used. The conversion to `std::u16string` wasn't even defined.
2026-08-28 09:50:01 +02:00
phosit 73d043fde5 Remove CStr::Pad
It was only used once. It can be replaced by fmt.
2026-08-28 09:50:01 +02:00
ShadowOfHassen aa86258751 Added ruins 2026-08-27 11:07:53 +02:00
ShadowOfHassen 14f9c9aaff Add treasure history entries 2026-08-27 11:07:53 +02:00