·
56 commits
to main
since this release
Changelog
- bugfix(filesystem): Preserve write paths with missing directories (TheSuperHackers#3104)
- fix(milesaudiomanager): Prevent heap-buffer-overflow read in MilesAudioManager::selectProvider() (TheSuperHackers#3281)
- chore(pathfinder): Remove superfluous CPOP_STARTS_FROM_PREV_SEG macro (TheSuperHackers#3295)
- fix(hash): Fix initialization of HashTableIteratorClass and make it work with an empty HashTableClass (TheSuperHackers#3284)
- fix(audio): Copy SoundSceneObjClass state safely (TheSuperHackers#3247)
- feat(recorder): Play a replay file from the command line (TheSuperHackers#3227)
- bugfix(pathfinder): Restore Generals retail compatibility after crash fix changes to Pathfinder::findAttackPath (TheSuperHackers#3289)
- chore(license): Add SPDX-License-Identifier to LICENSE.md (TheSuperHackers#3290)
- chore: Remove trailing commas in braced initializers that break clang-format's compact layout (TheSuperHackers#3274)
- ci: Restore CI workflow permission compatibility (TheSuperHackers#3286)
- bugfix(meshmatdesc): Fix mesh material color processing (TheSuperHackers#3246)
- build(cmake): Add retail compatibility option in CMake config (TheSuperHackers#2379)
- refactor(basetype): Add utility functions to Region and Coord types (TheSuperHackers#3271)
- ci(release): Stop requesting permissions from the reusable workflow (TheSuperHackers#3276)
- refactor(particlesys): Parse IsGroundAligned as an enum instead of a boolean (TheSuperHackers#3265)
- fix(gamefont): Ceil font glyph buffer size to the actual glyph size to prevent a buffer write overflow (TheSuperHackers#3268)
- perf(gamememory): Remove unnecessary calls to preMainInitMemoryManager from delete and free functions and make freeBytes noexcept to get rid of EH frame (TheSuperHackers#3266)
- chore(gamememory): Remove superfluous extern keywords from operator overloads (TheSuperHackers#3266)
- perf(gamememory): Add overloads for the deletes with size_t argument (TheSuperHackers#3266)
- perf(gamememory): Inline preMainInitMemoryManager (TheSuperHackers#3266)
- perf(gamememory): Early exit delete and free functions on null pointer (TheSuperHackers#3266)
- chore(gamememory): Compile out the memory link tester in Release (TheSuperHackers#3266)
- perf(productionupdate): Simplify and correct implementations of cancel functions in ProductionUpdate (TheSuperHackers#3270)
- refactor(miles): Fix the written primitive types in mss.h and all its call sites; no ABI changes (TheSuperHackers#3272)
- refactor(miles): Replace the Miles SDK stub with a Miles runtime loader (TheSuperHackers#3272)
- refactor(bink): Replace the Bink SDK stub with a Bink runtime loader (TheSuperHackers#3272)
- bugfix(milesaudiomanager): No longer use stopped audio in queries and updates (TheSuperHackers#3254)
- bugfix(milesaudiomanager): Fix premature 2d and 3d sound cancellations from MilesAudioManager::stopAudioEvent() (TheSuperHackers#3254)
- refactor(milesaudiomanager): Simplify MilesAudioManager::findLowestPrioritySound() (TheSuperHackers#3254)
- refactor(milesaudiomanager): Simplify MilesAudioManager::notifyOfAudioCompletion() (TheSuperHackers#3254)
- refactor(milesaudiomanager): Use consistent variable names for PlayingAudio in MilesAudioManager (TheSuperHackers#3254)
- bugfix(dozeraiupdate): Fix issue where builders could resume completed tasks after being disabled (TheSuperHackers#2793)
- bugfix(neutronmissile): Fix and improve Nuke Missile damage for large objects inside the outer blast radius (TheSuperHackers#3161)
- feat(commandline): Add working directory command line options (TheSuperHackers#3149)
- bugfix(gamewindow): Remove destroyed windows from the modal stack and prevent duplicate modals for the same window (TheSuperHackers#3224)
- bugfix(productionupdate): Prevent cancelling and refunding a single production entry when a number of its units already finished production (TheSuperHackers#2399)
- ci(release): Protect weekly-release against commit-subject injection (TheSuperHackers#3267)
- bugfix(aiupdate): Contact weapons are no longer blocked by obstacles (TheSuperHackers#3194)
- perf(particlesys): Batch same type particles to reduce cost of particle rendering by 15 to 30% (TheSuperHackers#3155)
- docs: Update the AI code guidelines (TheSuperHackers#3249)
- ci(release): Fix weekly release workflow permissions (TheSuperHackers#3256)
- chore(lib): Implement Usp10Loader class (TheSuperHackers#3241)
- tweak(gameaudio): Only update sound volumes if the volume has really changed (TheSuperHackers#3252)
- fix(gameaudio): Remove the has3DSensitiveStreamsPlaying volume hack (TheSuperHackers#3252)
- bugfix(tunnel): Restore retail compatibility after changes to TunnelTracker::onTunnelDestroyed() and TunnelContain::onCapture() (TheSuperHackers#3242)
- tweak(gamestate): Support loading save files from absolute paths (TheSuperHackers#3226)
- bugfix(audio): Apply configured volume to Bink movie audio (TheSuperHackers#3083)
- build(vcpkg): Define FFmpeg as VCPKG feature, disabled by default (TheSuperHackers#3184)
- fix(htree): Reject invalid W3D hierarchy pivot counts (TheSuperHackers#3195)
- unify(gui): Move game window files to Core (TheSuperHackers#3197)
- unify(gui): Merge game window files (TheSuperHackers#3197)
- ci(vcpkg): Disable vcpkg metrics to stop random link failures (TheSuperHackers#3244)
- bugfix(particlesys): Delay particle system destruction to prevent orphaning slaved finite-lifetime particle systems (TheSuperHackers#3238)
- chore: Accept both path slashes for clang tidy (TheSuperHackers#3225)
- refactor: Fix unnecessary copy initializations (TheSuperHackers#3202)
- tweak(scorch): Increase scorch buffer limits to 16-bit maximum (TheSuperHackers#3186)
- fix(scorch): Early return if scorch does not fit in buffer (TheSuperHackers#3186)
- chore: Add override keywords to virtual function overrides (TheSuperHackers#3221)
- bugfix(update): Resolve mismatch in Generals caused by updating AssistedTargetingUpdate for the initial frame (TheSuperHackers#3212)
- fix(heightmapedit): Fix undefined behaviors in WorldHeightMapEdit::remapTextures, WorldHeightMapEdit::findBoundaryNear (TheSuperHackers#3201)
- bugfix(object): Avoid potential crash when Troop Crawler is destroyed before reaching Reinforcement Pad (TheSuperHackers#3165)
- Revert previous crash fixes when Troop Crawler is destroyed before reaching Reinforcement Pad (TheSuperHackers#3165)
- refactor(ww3d2): Implement first bits for IRenderBackend interface (TheSuperHackers#2613)
- ci(vcpkg): Repair the vcpkg CI path and move the binary cache to GitHub Packages (TheSuperHackers#2542)
- tweak(particlesys): Cleanup volume particle depth handling and add INI field to control it (TheSuperHackers#3188)
- fix(filesystem): Delay StdBIGFile allocation until after archive validation (TheSuperHackers#3196)
- feat(saveload): Implement -loadsave command line option (TheSuperHackers#3001)
- refactor(network): Clarify command list ordering (TheSuperHackers#3052)
- bugfix(network): Sort fast path in NetCommandList by sort number (TheSuperHackers#3052)