weekly-2025-12-26
·
331 commits
to main
since this release
Changelog
- perf(audio): Optimize fail condition order in AudioManager::addAudioEvent (TheSuperHackers#1843)
- fix(logic): Fix unexpected return in GameLogic::logicMessageDispatcher's switch case MSG_CANCEL_UNIT_CREATE (TheSuperHackers#1881)
- refactor: Apply clang-tidy fixes for generals-use-is-empty (TheSuperHackers#2018)
- refactor: Apply clang-tidy fixes for generals-use-this-instead-of-singleton (TheSuperHackers#2017)
- bugfix(aiupdate): Chinooks and Helixes no longer take off after repair if passengers want to board or exit (TheSuperHackers#1787)
- bugfix(aiupdate): Repairing Chinooks and Helixes no longer take off after evacuating all passengers (TheSuperHackers#1762)
- bugfix(input): Replace frame-based timings with real-time timings in input system (TheSuperHackers#1835)
- chore: Implement scripts for custom isEmpty() and singleton refs clang-tidy checks (TheSuperHackers#2010)
- bugfix(network): Assign disconnect frame when quitting the game via the disconnection menu (TheSuperHackers#2020)
- tweak(metaevent): Change COMMANDUSABLE_OBSERVER to no longer apply in Shell Map (TheSuperHackers#2002)
- bugfix(network): Fix data offset for string reads in NetPacket::readFileMessage() and NetPacket::readFileAnnounceMessage() (TheSuperHackers#2005)
- build: Implement docker build (TheSuperHackers#1774)
- refactor: Apply integer value comparisons for strcmp and stricmp with clang-tidy (TheSuperHackers#1956)
- bugfix(experience): Prevent ranking of riders that are not trainable (TheSuperHackers#1970)
- bugfix(object): Fix visibility conditions for client-side effects (TheSuperHackers#1964)
- bugfix(input): Disable mouse waypoint mode after using alt tab (TheSuperHackers#1987)
- unify(heightmap): Move Height Map and Terrain related files to Core (TheSuperHackers#1991)
- unify(heightmap): Merge Height Map related code and move Zero Hour's BaseHeightMap, FlatHeightMap, W3DPropDraw, W3DTreeDraw, W3DPropBuffer, W3DSnow, W3DTerrainBackground files to Core (TheSuperHackers#1991)
- build(heightmap): Fix include paths in Zero Hour Height Map files (TheSuperHackers#1991)
- unify(texture): Move W3DWater, W3DLaserDraw and WW3D2 texture related files to Core (TheSuperHackers#1989)
- unify(texture): Merge W3DWater and WW3D2 texture code (TheSuperHackers#1989)
- refactor: Apply the readability-container-size-empty check with clang-tidy (TheSuperHackers#1957)
- fix(network): Fix missing value initialization of LANGameInfo::m_isDirectConnect (TheSuperHackers#1836)
- bugfix(network): Prevent buffer overflow in NetPacket::readFileMessage() and NetPacket::readFileAnnounceMessage() (TheSuperHackers#1981)
- perf(namekey): Remove all superfluous AsciiString allocations for name key lookups (TheSuperHackers#1959)
- refactor(namekey): Reduce code duplication in NameKeyGenerator functions, misc formatting tweaks (TheSuperHackers#1959)
- unify(matpass): Merge WW3D2 matpass code (TheSuperHackers#1982)
- refactor: Remove superfluous inline and register keywords with clang-tidy (TheSuperHackers#1936)
- bugfix(string): Allow startsWith and endsWith to be called on empty strings (TheSuperHackers#1979)
- build: Add clang-tidy checks and script (TheSuperHackers#1807)
- bugfix(pathfinder): Prevent infinite loop within PathfindCell::putOnSortedOpenList() (TheSuperHackers#1965)
- ci(vcpkg): Include preset in binary cache key to avoid ABI mismatches and slow CI builds (TheSuperHackers#1973)
- feat(crashdump): Add crash dump functionality for fatal errors (TheSuperHackers#1594)
- bugfix(mouse): Prevent cursor capture when mouse is outside of app window (TheSuperHackers#1939)
- refactor(mouse): Apply minor refactoring and whitespace tweaks in WinMain, Mouse, HeaderTemplate (TheSuperHackers#1939)
- fix: Wrong usage of sizeof(this) in BitFlags::xfer(), W3DMPO::glueEnforcer() (TheSuperHackers#1947)
- bugfix(network): Prevent out of bounds memory access in NetCommandWrapperListNode::copyChunkData() (TheSuperHackers#1946)
- build: Use cmake_host_system_information to make registry queries in cmake (TheSuperHackers#1943)
- feat(movie): Implement ESC button mapping to skip Campaign, Challenge and Score videos (TheSuperHackers#1926)
- tweak(keyboard): Apply minor improvements to Keyboard class to query pressed keys (TheSuperHackers#1926)
- bugfix(movie): Fix Campaign, Challenge, Score movie cancellation or decompression artifacts when tabbing out of the game (TheSuperHackers#1927)
- refactor: Remove or replace some superfluous empty C strings (TheSuperHackers#1929)
- refactor(network): Replace implicit conversion from NULL to AsciiString in IPEnumeration::getMachineName (TheSuperHackers#1934)
- build: Add WOW6432Node to registry path lookups for EA App install path detection (TheSuperHackers#1903)
- refactor(string): Fix constness of TheEmptyString (TheSuperHackers#1930)
- refactor: Remove all explicit UnicodeString instantiations from C strings (TheSuperHackers#1928)
- bugfix(filesystem): Prevent loading wrong INIZH.big from Data/INI directory to prevent INI CRC mismatch (TheSuperHackers#1879)
- refactor: Remove superfluous variable init comments (TheSuperHackers#1876)
- refactor: Remove all explicit AsciiString instantiations from C strings (TheSuperHackers#1916)
- unify(view): Move View, W3DView to Core (TheSuperHackers#1904)
- unify(view): Merge View and closely related code (TheSuperHackers#1904)
- unify(client): Move ParabolicEase, CameraShakeSystem to Core (TheSuperHackers#1904)
- refactor: Replace preprocessor condition _WINDOWS with _WIN32 (TheSuperHackers#1911)
- unify(shader): Move W3DShaderManager to Core (TheSuperHackers#1920)
- unify(shader): Merge W3DShaderManager code, move Smudge, W3DSmudge to Core (TheSuperHackers#1920)
- bugfix(energy): Destruction of disabled Power Plant no longer lowers energy production twice (TheSuperHackers#1857)
- bugfix(radar): Add hero radar objects into its own list to get rid of hero cache updates and its related issues (TheSuperHackers#1893)
- refactor(radar): Simplify function Radar::deleteListResources (TheSuperHackers#1893)
- refactor(radar): Simplify function W3DRadar::renderObjectList (TheSuperHackers#1893)
- refactor(radar): Simplify function Radar::addObject (TheSuperHackers#1893)
- bugfix(weapon): Weapon effects now show again for hidden objects that are not explicitly stealthed (TheSuperHackers#1918)
- tweak(gui): Add configuration to GameData.ini to allow Money Per Minute for players (TheSuperHackers#1914)
- refactor(string): Implement generic startsWith, endsWith functions for C strings (TheSuperHackers#1898)
- refactor: Use new utility logic for handling observed player behaviour (TheSuperHackers#1861)
- bugfix(module): A projectile can no longer be jammed multiple times (TheSuperHackers#1907)
- unify(radar): Move ObjectStatusTypes, Radar, W3DRadar files to Core (TheSuperHackers#1894)
- unify(radar): Merge Radar code (TheSuperHackers#1894)
- unify(common): Merge ObjectStatusTypes code (TheSuperHackers#1894)
- refactor: Convert strlcpy to strcpy with static_assert (TheSuperHackers#1887)
- refactor(network): Convert some if-else chains to switch statements (TheSuperHackers#1682)
- bugfix: Fix effect visibility of contained objects (TheSuperHackers#1878)
- tweak(eva): Enable more EVA events for observed players (TheSuperHackers#1866)
- refactor: Remove duplicate include directives (TheSuperHackers#1873)
- refactor: Rename RETAIL_COMPATIBLE_BUG macro to PRESERVE_RETAIL_BEHAVIOR (TheSuperHackers#1877)
- refactor: Remove double semicolons (TheSuperHackers#1810)
- ci: Re-enable win32 vcpkg presets (TheSuperHackers#1863)
- build(vcpkg): Add lockfile and binary cache (TheSuperHackers#1862)
- build(ai): Resolve compile errors when the USE_DOZER preprocessor directive is false (TheSuperHackers#1871)
- fix(debug): Add error handling for rename failures in Debug code (TheSuperHackers#1855)
- bugfix(object): Show veterancy effects of stealthed objects for allies and observers (TheSuperHackers#1867)
- bugfix(weapon): Show weapon effects of stealthed objects for allies and observers (TheSuperHackers#1865)
- bugfix(module): Show cash amounts of stealthed objects for allies and observers (TheSuperHackers#1858)
- tweak(behavior): Add RETAIL_COMPATIBLE_BUG to Black Lotus cash value fix (TheSuperHackers#1864)
- tweak(specialpower): Enable special power EVA events for observed players (TheSuperHackers#1540)
- bugfix(network): Deny players with invalid names from joining a LAN game room (TheSuperHackers#1595)
- feat(view): Add ability to rotate the camera in 45 degree increments using the mouse (TheSuperHackers#1848)
- feat(view): Add ability to rotate the camera in 45 degree increments using the numpad (TheSuperHackers#1846)
- fix(parabolicease): Fix asserting on float inprecision in ParabolicEase::setEaseTimes() (TheSuperHackers#1854)
- fix: Fix incorrect argument used for isInSaveDirectory() (TheSuperHackers#1849)
- tweak(network): Add file extension validation to network map transfer (TheSuperHackers#1818)
- fix(font): Fix font scaling for large resolutions and implement new font scaling methods (TheSuperHackers#1466)
- perf(mapcache): Simplify and improve implementation of MapCache to prevent expensive reoccurring redundant map cache reads (TheSuperHackers#1775)
- unify(network): Move most GameNetwork and GameSpy files to Core (TheSuperHackers#1733)
- build(memory): Add missing REF macros to always.h for null memory manager (TheSuperHackers#1830)
- fix(font): Handle malformed fonts without crashing the game (TheSuperHackers#1826)
- fix: Replace strcpy with strlcpy to prevent potential buffer overflows (TheSuperHackers#1808)
- build(cmake): Add status message for missing game install path (TheSuperHackers#1820)
- refactor: Simplify some if-else condition chains (TheSuperHackers#1683)
- fix(debug): Implement reference counter and thread safety in DbgHelpLoader to allow for independent users (TheSuperHackers#1804)
- refactor: Remove wrong WWDefines.h file (TheSuperHackers#1814)
- tweak(scrolling): Prevent far camera jumps when scrolling while the game stalls (TheSuperHackers#1661)
- bugfix(module): Fix missing horde condition of Nationalism and Fanaticism weapon bonuses (TheSuperHackers#1582)
- refactor(module): Improve and simplify the implementation of HordeUpdate and related code (TheSuperHackers#1582)
- unify(module): Merge HordeUpdate and related code (TheSuperHackers#1813)