Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
248 commits
Select commit Hold shift + click to select a range
09e6ce7
bugfix(network): Assign disconnect frame when quitting the game via t…
Stubbjax Dec 20, 2025
529675f
chore: Implement scripts for custom isEmpty() and singleton refs clan…
bobtista Dec 20, 2025
1f2c1a3
bugfix(input): Replace frame-based timings with real-time timings in …
bobtista Dec 21, 2025
03b9ae8
bugfix(aiupdate): Repairing Chinooks and Helixes no longer take off a…
Stubbjax Dec 21, 2025
646e3dd
bugfix(aiupdate): Chinooks and Helixes no longer take off after repai…
Stubbjax Dec 21, 2025
b878990
refactor: Apply clang-tidy fixes for generals-use-this-instead-of-sin…
bobtista Dec 21, 2025
abd092c
refactor: Apply clang-tidy fixes for generals-use-is-empty (#2018)
bobtista Dec 22, 2025
e616d82
fix(logic): Fix unexpected return in GameLogic::logicMessageDispatche…
bobtista Dec 22, 2025
5dba2a0
perf(audio): Optimize fail condition order in AudioManager::addAudioE…
bobtista Dec 22, 2025
2b37732
refactor(audio): Simplify volume related code in AudioManager and Mil…
xezon Dec 30, 2025
20927af
ci(vcpkg): Stabilize vcpkg binary caching; add compiler-aware keys an…
bobtista Dec 30, 2025
f5ccc9c
bugfix(aiupdate): Invalidate build task of Dozers and Workers if the …
Stubbjax Dec 31, 2025
a4c76b9
perf(contain): Optimize Object::isHero with cached hero counter (#1841)
bobtista Dec 31, 2025
5e8f1b8
refactor(network): Simplify error prone net packet size calculations …
bobtista Dec 31, 2025
ae22809
refactor(logic): Simplify code in GameLogic's init, reset, startNewGa…
stephanmeesters Jan 2, 2026
224017e
bugfix(heightmap): Disable old uv adjument for cliffs (#2038)
xezon Jan 2, 2026
5deddce
bugfix(heightmap): Fix dynamic lights on terrain (#2039)
xezon Jan 2, 2026
13de427
perf(weaponstore): Optimize WeaponStore::findWeaponTemplatePrivate wi…
IamInnocent3X Jan 2, 2026
409fed2
bugfix(thingfactory): Reset next ThingTemplate ID after clearing cust…
Caball009 Jan 3, 2026
f2da2b6
tweak(drawable): Set correct model tint color after loading a save ga…
Caball009 Jan 3, 2026
ae05f11
bugfix(aiupdate): Prevent manually ejecting rappelling Rangers during…
Stubbjax Jan 3, 2026
afa8aa3
bugfix(ai): Undetected mines can now be approached when using a disar…
Stubbjax Jan 3, 2026
0d6c776
bugfix(lobby): Properly sort CRC mismatched game rooms to the bottom …
bobtista Jan 4, 2026
925ecf1
perf(ai): Avoid a few std::vector copies when passing ai paths to fun…
bobtista Jan 4, 2026
8cbcd78
tweak(drawable): Decouple stealth detected opacity fade time step fro…
xezon Jan 4, 2026
20adf33
bugfix(audio): UI audio no longer plays at maximum volume for a singl…
Stubbjax Jan 4, 2026
3eea715
bugfix(object): Do not apply veterancy bonuses and animations for dea…
Stubbjax Jan 4, 2026
f6d7d19
fix(xfer): Fix xfer retail compatibility code (#2024)
xezon Jan 6, 2026
0b4fd85
refactor(audio): Use MilesAudioManager::getEffectiveVolume consistent…
xezon Jan 6, 2026
b981e31
bugfix(worldbuilder): Initialize boolean in ScriptConditionsDlg::OnEd…
Caball009 Jan 6, 2026
dd50dba
bugfix(worldbuilder): Avoid taking action on cancel button for script…
Caball009 Jan 6, 2026
3e8c472
bugfix(network): Fix packet size setup mistakes (#2040)
bobtista Jan 7, 2026
8112ded
refactor(heightmap): Remove HALF_RES_MESH because it was never used a…
xezon Jan 7, 2026
67b4e6a
bugfix(actionmanager): Do not show false resume construction cursor f…
Stubbjax Jan 8, 2026
67f97c5
bugfix(render2d): Fix possible greyscale image rendering issues on ha…
Stubbjax Jan 8, 2026
aa07366
perf(heightmap): Reduce cost of min height loop in HeightMapRenderObj…
xezon Jan 8, 2026
9df76f7
fix(heightmap): Fix CENTER_LIMIT condition in HeightMapRenderObjClass…
xezon Jan 8, 2026
8c560e6
refactor(heightmap): Clarify magic numbers related to VERTEX_BUFFER_T…
xezon Jan 8, 2026
25e3602
build(cmake): Move most CppMacros.h includes into precompiled headers…
xezon Jan 11, 2026
f891c5f
refactor: Modernize NULL to nullptr (#1938)
bobtista Jan 14, 2026
373b0df
bugfix(scriptengine): Fix script dialog text spelling mistakes and er…
bobtista Jan 14, 2026
e989576
perf(heightmap): Optimize repeated calls to getXWithOrigin, getYWithO…
xezon Jan 14, 2026
833fb7c
refactor(heightmap): Simplify functions getXWithOrigin(), getYWithOri…
xezon Jan 14, 2026
de0fc8f
perf(heightmap): Optimize data locality for m_vertexBufferTiles and m…
xezon Jan 14, 2026
1a19a5b
refactor(gamelogic): Rearrange local variables in GameLogic::startNew…
stephanmeesters Jan 14, 2026
5c1e01e
refactor(cmake): Move core_config into corei_always for simplificatio…
xezon Jan 15, 2026
5e016fb
build(cmake): Expose source files of interface libraries core_utility…
xezon Jan 15, 2026
3d12b39
refactor(ww3dformat): Merge function PixelSize into Get_Bytes_Per_Pix…
xezon Jan 6, 2026
bd376c4
perf(radar): Reduce cost of radar pixel draw in PartitionManager::ref…
xezon Jan 6, 2026
2ab6604
bugfix(actionmanager): Restore retail compatibility after constructio…
Caball009 Jan 16, 2026
1d9aa3a
bugfix(buildassistant): Restore retail compatibility after build assi…
Stubbjax Jan 16, 2026
d4466df
bugfix(dx8caps): Resolve greyscale texture rendering issues in VMWare…
Stubbjax Jan 16, 2026
394f210
bugfix: Fix spelling errors in debug/diagnostic strings (#2108)
bobtista Jan 17, 2026
6d92cf3
fix: Rename misspelled identifiers (#2109)
bobtista Jan 17, 2026
d731fcd
docs: Fix spelling errors in Core/Libraries comments (#2116)
bobtista Jan 17, 2026
e80bb51
docs: Fix spelling errors in Core/Tools and Core/GameEngine comments …
bobtista Jan 17, 2026
a13b754
docs: Fix spelling errors in Generals Libraries, Tools, GameEngineDev…
bobtista Jan 17, 2026
440c583
docs: Fix spelling errors in GeneralsMD Libraries, Tools, GameEngineD…
bobtista Jan 17, 2026
0c763cc
docs: Fix spelling errors in Generals/Code/GameEngine/Include comment…
bobtista Jan 17, 2026
ca4015e
docs: Fix spelling errors in GeneralsMD/Code/GameEngine/Include comme…
bobtista Jan 17, 2026
a61aa49
docs: Fix spelling errors in Generals/Code/GameEngine/Source comments…
bobtista Jan 17, 2026
68192c0
docs: Fix spelling errors in GeneralsMD/Code/GameEngine/Source/GameLo…
bobtista Jan 17, 2026
d9c3060
docs: Fix spelling errors in GeneralsMD/Code/GameEngine/Source/GameCl…
bobtista Jan 17, 2026
8913a77
ci: Add workflow to trigger build from any commit for replay mismatch…
bobtista Jan 17, 2026
b398d5c
bugfix(audio): Restore retail compatibility after optimization change…
Caball009 Jan 17, 2026
fcc193a
bugfix(script): Restore retail compatibility for sequential scripts i…
xezon Jan 18, 2026
2029386
feat(build): Add new docker build and game install scripts for Linux …
sebyx07 Jan 18, 2026
8d60896
bugfix(logic): Decouple scripted audio events from CRC computation (#…
Caball009 Jan 18, 2026
cd2eef3
bugfix(ghostobject): Readd null check for 3DScene in W3DRenderObjectS…
Skyaero42 Jan 18, 2026
bd4e909
bugfix(heightmap): Revert optimization for m_vertexBufferTiles in Hei…
xezon Jan 18, 2026
6818fae
bugfix(ai): Fix crash when AI player attempts to build a supply cente…
Caball009 Jan 18, 2026
114716a
bugfix(object): Preserve unit behaviour when transferring assets to a…
Stubbjax Jan 19, 2026
4f1bb33
bugfix(wbview3d): Fix crash on window resize in Generals World Builde…
jurassicLizard Jan 19, 2026
5454eaa
fix(debug): Fix spelling errors in DEBUG macro strings (#2148)
bobtista Jan 19, 2026
5265436
fix: Fix spelling errors in code words (#2149)
bobtista Jan 19, 2026
a46a145
refactor(math): Implement Matrix4x4::Inverse, Matrix3D::Get_Inverse a…
xezon Jan 20, 2026
25b1735
perf(radar): Reduce cost of W3DRadar::renderObjectList (by 80%), W3DR…
xezon Jan 20, 2026
a4482e0
fix(tunnel): Fix undefined behavior in TunnelTracker::onTunnelDestroy…
xezon Jan 20, 2026
e16574e
build(cmake): Add MinGW-w64 toolchain and base configuration (#2067)
JohnsterID Jan 5, 2026
dfc395b
build(cmake): Add widl integration for COM interface generation (#2067)
JohnsterID Jan 5, 2026
bc0fcb2
build(cmake): Add ReactOS ATL and PSEH compatibility layer (#2067)
JohnsterID Jan 5, 2026
40310a8
build(cmake): Add ReactOS COM support utilities (comsupp) (#2067)
JohnsterID Jan 5, 2026
c1caa58
build(deps): Update external dependencies for MinGW-w64 support (#2067)
JohnsterID Jan 5, 2026
0fe7e02
build(cmake): Configure MinGW-specific compiler and linker settings (…
JohnsterID Jan 5, 2026
c2d1560
build(cmake): Add MinGW CMake presets for i686 (#2067)
JohnsterID Jan 5, 2026
5aca93a
fix(precompiled): Add ATL compatibility to precompiled headers (#2067)
JohnsterID Jan 5, 2026
b873b9e
fix(cmake): Fix CMake dependencies and library linking for MinGW (#2067)
JohnsterID Jan 5, 2026
e4c78ab
fix(core): Add MinGW-w64 compatibility fixes to Core libraries (#2067)
JohnsterID Jan 5, 2026
efca138
fix(headers): Add missing forward declarations for MinGW (#2067)
JohnsterID Jan 5, 2026
7c6cd35
fix(linkage): Fix static/extern linkage mismatches for MinGW (#2067)
JohnsterID Jan 5, 2026
bb9acc6
fix(calling-convention): Standardize calling conventions and variadic…
JohnsterID Jan 5, 2026
be30428
fix(compatibility): Add compiler guards and GCC inline assembly for S…
JohnsterID Jan 5, 2026
f8fd4a5
fix(casts): Add explicit void* casts for function pointers (#2067)
JohnsterID Jan 5, 2026
29dc6b4
fix(debug): Simplify unconditional DEBUG_ASSERTCRASH to DEBUG_CRASH (…
JohnsterID Jan 16, 2026
f244a23
feat(cmake): Add debug symbol stripping for MinGW Release builds (#2067)
JohnsterID Jan 19, 2026
3de1591
refactor(bitflags): Simplify and improve setup for DAMAGE_TYPE_FLAGS_…
xezon Jan 22, 2026
ccd36fe
build(cmake): Dial back BINK upgrade to get the CMake INSTALL target …
xezon Jan 22, 2026
d38f692
unify(damage): Merge DamageTypeFlags from Zero Hour (#2141)
xezon Jan 22, 2026
ac6dbdc
refactor(pathfinder): Move obstacle handling functions from PathfindC…
Mauller Jan 17, 2026
0f01e27
bugfix(pathfinder): Fix late game unit lockups and erroneous impassab…
Mauller Jan 18, 2026
7879b57
bugfix(aiupdate): Chinooks and Helixes now correctly wait for their p…
Stubbjax Jan 22, 2026
15144de
fix(optionsmenu): Change incorrect OR/AND precedence of an unused con…
Caball009 Jan 22, 2026
3e36552
refactor: Fix confusing use of logical AND and OR expressions (#954)
Caball009 Jan 23, 2026
9be5485
perf(ini): Simplify, optimize and merge INI read line buffer implemen…
xezon Jan 23, 2026
669e36f
fix(thingfactory): Prevent use-after-free from assert in ThingFactory…
Caball009 Jan 24, 2026
56c9600
tweak(upgrade): Increase upgrade limit to 512 (#2162)
Stubbjax Jan 24, 2026
84609c2
bugfix(ai): Units located above the terrain can no longer teleport in…
Stubbjax Jan 24, 2026
ddccc0c
unity(basetype): Merge Lib/BaseType.h code (#2180)
xezon Jan 18, 2026
f7c898f
unify(subsystem): Merge SubsystemInterface code (#2180)
xezon Jan 18, 2026
d5e1088
unify(ini): Merge INI and related code (#2180)
xezon Jan 23, 2026
2fb478a
unify(common): Merge GameCommon and related code (#2180)
xezon Jan 23, 2026
e7af119
unify(userpreferences): Merge UserPreferences and related code (#2182)
xezon Jan 24, 2026
3966fa8
unify(userpreferences): Move UserPreferences files to Core (#2182)
xezon Jan 24, 2026
2c26a90
refactor(audioevent): Remove const casts for calling AudioEventRTS::s…
xezon Jan 25, 2026
fa7b78e
unify(common): Merge TerrainTypes from Zero Hour (#2196)
xezon Jan 27, 2026
a5d9a26
unify(common): Merge PerfTimer, StackDump code from Zero Hour (#2195)
xezon Jan 27, 2026
64786cc
unify(common): Merge CriticalSection, ScopedMutex code from Generals …
xezon Jan 27, 2026
f15abf3
unify(common): Merge Registry code (#2193)
xezon Jan 27, 2026
077b657
unify(lib): Move BaseType.h, trig.h to Core (#2185)
xezon Jan 25, 2026
1174285
unify(common): Move some common system files to Core (#2185)
xezon Jan 25, 2026
d3b62e8
bugfix(network): Revert changes to ConnectionManager::getMaximumLaten…
Mauller Jan 28, 2026
831b810
fix(network): Fix slightly unstable latency calculation in FrameMetri…
Mauller Jan 28, 2026
afe79cb
bugfix(dozeraiupdate): Builders now resume their task after having be…
Stubbjax Jan 28, 2026
58e8a2b
bugfix(actionmanager): Allow immediate resumed construction of buildi…
Stubbjax Jan 28, 2026
07b9d0e
fix(activebody): Subdual damage can no longer go negative (#2184)
Stubbjax Jan 28, 2026
55ee429
fix(basetype): Add min/max template functions to BaseType.h (#2183)
JohnsterID Jan 28, 2026
aa37f91
bugfix(ghostobject): Add Ghost Objects of the local player to the sce…
xezon Jan 28, 2026
64d9b08
bugfix(mouse): Make Cursor Capture opt-in to prevent capture in GUIEd…
xezon Jan 28, 2026
49f0e5f
unity(particlesys): Merge removal of Drawable Particle Attachments fr…
xezon Jan 18, 2026
3cfe550
unify(particlesys): Merge addition of ParticleSystem::setSkipParentXf…
xezon Jan 18, 2026
f832a5d
unify(particlesys): Compile out superfluous X and Y particle angles i…
xezon Jan 18, 2026
69e3d6a
unify(particlesys): Merge addition of SMUDGE particle type from Zero …
xezon Jan 18, 2026
e0befc8
unify(particlesys): Merge optimization of alpha particle update from …
xezon Jan 18, 2026
13cce53
unify(particlesys): Merge fix for erroneous particle visibility thres…
xezon Jan 18, 2026
68e17c0
unify(particlesys): Merge optimization for wind motion particle updat…
xezon Jan 18, 2026
f588071
unify(particlesys): Merge changes to math for aligning particle Z rot…
xezon Jan 18, 2026
5c4df79
unify(particlesys): Merge minor refactors in ParticleSystem (#2153)
xezon Jan 18, 2026
7af8c63
refactor(view): Fix variable names in View::getScreenCornerWorldPoint…
xezon Jan 28, 2026
22d757f
unify(particlesys): Move ParticleSys and ParticleEditor files to Core…
xezon Jan 29, 2026
292c755
fix(radar): Fix Radar pixel color format for non A8R8B8G8 surfaces (#…
xezon Jan 29, 2026
7747434
tweak(jetaiupdate): Defer offensive commands for parked jets without …
Stubbjax Jan 30, 2026
002b8cb
build(debug): Add CMake option RTS_DEBUG_CHEATS to enable debug cheat…
bobtista Jan 30, 2026
b009261
bugfix(pathfinder): Fix some pinched cells being changed to impassabl…
Mauller Jan 30, 2026
15a06f5
unify(w3ddraw): Merge W3DModelDraw, W3DDependencyModelDraw code (#2225)
xezon Jan 30, 2026
aa54b2d
unify(w3ddraw): Move W3D Draw files to Core (#2225)
xezon Jan 30, 2026
ac36b17
fix(camera): Apply misc code type and comment fixes (#2227)
xezon Jan 31, 2026
2a6905c
refactor(basetype): Implement new functions Region3D::setFromPointsNo…
xezon Jan 31, 2026
6c89cee
fix(radar): Always keep Radar View Box in sync with the actual Camera…
xezon Jan 31, 2026
d01ec97
fix(display): Polish the camera debug text in W3DDisplay::gatherDebug…
xezon Jan 31, 2026
55acac4
bugfix(aigroup): GLA Battle Bus can now respond to attack commands wh…
Stubbjax Feb 1, 2026
d0ea038
bugfix(gui): Fix game window animation movements to scale with displa…
tophroxx Feb 1, 2026
41bdc8a
fix(shadow): Fix crash by initializing debris shadow name to an empty…
Stubbjax Feb 1, 2026
fa4aabf
perf(particlesys): Reduce cost of ParticleSystemManager::findParticle…
xezon Feb 1, 2026
02e33d7
perf(particlesys): Optimize angleBetween() in Particle System (#2218)
xezon Feb 1, 2026
0c938e4
docs: Fix spelling errors in Generals/Code/GameEngine comments (2) (#…
bobtista Feb 2, 2026
065baf1
docs: Fix spelling errors in GeneralsMD/Code/GameEngine comments (2) …
bobtista Feb 2, 2026
df31fac
docs: Fix spelling errors in Core, GameEngineDevice, Libraries, Tools…
bobtista Feb 2, 2026
a5908ef
refactor(view): Remove unused functions in View class (#2232)
xezon Jan 31, 2026
79798d2
refactor(view): Improve functions, variables, comments in View, W3DVi…
xezon Jan 31, 2026
0d37118
refactor(view): Split View::setAngleAndPitchToDefault into 2 separate…
xezon Jan 31, 2026
bf2b466
refactor(view): Simplify zoom adjustment code in W3DView::update() (#…
xezon Jan 31, 2026
42e2b77
refactor(view): Consolidate duplicate terrain render update logic int…
xezon Jan 31, 2026
c7392fd
refactor(view): Simplify Real Zoom Cam related code (#2232)
xezon Jan 31, 2026
d5f9c63
refactor(view): Simplify position code in W3DView::buildCameraTransfo…
xezon Jan 31, 2026
20cbbca
refactor(view): Simplify Clip Planes related code in W3DView::setCame…
xezon Jan 31, 2026
f58c2fd
fix(draw): Fix illogical dirt effect update code in W3DTruckDraw::doD…
xezon Feb 2, 2026
794c633
refactor(lanapi): Make LANMessage accessible in LANAPI (#2241)
Caball009 Feb 3, 2026
bd26ac7
feat(version): Add functions to get Git short hash string (#2243)
Caball009 Feb 3, 2026
e5922b4
refactor(draw): Simplify particle effects code in W3DTankDraw, W3DTan…
xezon Feb 1, 2026
026e633
fix(draw): Replace ParticleSystem pointers with ParticleSystemID for …
xezon Feb 1, 2026
4b79ebf
fix(update): Fix value initialization of ProjectileStreamUpdate::m_pr…
Caball009 Feb 3, 2026
b0a6652
refactor(audio): Replace AudioManager's loseFocus/regainFocus with re…
stephanmeesters Feb 3, 2026
32a2789
tweak(pathfinder): Add audio event and message to announce pathfindin…
Mauller Feb 4, 2026
26710b9
fix(update): Extend the height of the USA Particle Cannon laser beam …
githubawn Feb 4, 2026
7ce6eeb
feat(lanapi): Add LANAPI function to find LAN game with host IP addre…
Caball009 Feb 4, 2026
8e6360e
fix(debug): Allocate enough terrain debug icons based on the map dime…
Mauller Feb 7, 2026
c241dbc
tweak(gui): Use default locale of user for listed replays and save ga…
Caball009 Feb 7, 2026
a53adf2
build(cmake): Force include CppMacros.h globally for VC6 (#2252)
abhatem Feb 8, 2026
8727e1e
fix: Replace sprintf with snprintf to prevent potential stack overflo…
stephanmeesters Feb 8, 2026
6248db9
refactor(netpacket): Simplify packet serialization code by using pack…
bobtista Feb 8, 2026
e233be6
feat(gui): Implement Player Info List (#2136)
L3-M Feb 8, 2026
8536a29
fix(netpacket): Fix misplaced null test in NetPacket::addCommand() (#…
xezon Feb 8, 2026
8568244
fix(intro): Fix order of Display Update and Draw in intro loop (#2264)
xezon Feb 8, 2026
5b0b01d
fix(display): Fix VideoBuffer format selection in W3DDisplay::createV…
xezon Feb 8, 2026
fa9345a
feat(gui): Add replay dates to replay list in Replay Menu (#2255)
Caball009 Feb 8, 2026
3e0a5be
refactor(view): Simplify View angle normalization (#2271)
xezon Feb 9, 2026
d0f24b6
fix(view): Prevent float division by zero in W3DView::setupWaypointPa…
xezon Feb 9, 2026
cfbdb3f
bugfix(object): Cancel previous tasks for captured dozers (#2237)
Stubbjax Feb 9, 2026
44083eb
bugfix(cratecollide): Prevent crates from being collected multiple ti…
Stubbjax Feb 9, 2026
dfe447b
feat(gui): Add support for extra column to separate time and date in …
Caball009 Feb 10, 2026
bdb00e9
bugfix(gui): Fix application hang from scrolling a map list with arro…
stephanmeesters Feb 10, 2026
c42b582
perf(view): Optimize and simplify camera transform update logic (#2280)
xezon Feb 10, 2026
77e4510
fix(comments): Use 2026 for this year's code comments (#2285)
Caball009 Feb 10, 2026
1a30bfe
refactor(netpacket): Remove duplicate packed commands and cleanup cod…
xezon Feb 8, 2026
9479df5
refactor(netpacket): Use more consistent names for packed net packet …
xezon Feb 8, 2026
bc17ddf
fix(netcommandmsg): Fix new/delete mismatch in NetWrapperCommandMsg (…
xezon Feb 10, 2026
47b723c
fix(netpacket): Protect text length value from overflowing in NetPack…
xezon Feb 11, 2026
ae663b5
bugfix(pathfinder): Fix uninitialized variable in Pathfinder::classif…
helmutbuhler Feb 12, 2026
0734b80
bugfix(projectile): Fix out-of-bounds access in DumbProjectile which …
Caball009 Feb 12, 2026
e0a7a95
bugfix(ocl): Fix uninitialized variable in ObjectCreationList to avoi…
Caball009 Feb 12, 2026
d5bfa6e
bugfix(contain): Prevent undefined behaviour when a dead unit enters …
Stubbjax Feb 12, 2026
458c214
chore(gui): Implement function GadgetTextEntrySetMaxLen() (#2290)
xezon Feb 12, 2026
5dce9d9
bugfix(view): Recalculate camera area constraints when toggling Contr…
xezon Feb 12, 2026
1af9a23
bugfix(worldbuilder): Fix script condition selection when editing new…
ViTeXFTW Feb 13, 2026
caac64f
refactor(draw): Rename emitters functions in W3DTankDraw, W3DTankTruc…
xezon Feb 3, 2026
b489322
fix(draw): Recover tread debris effects for W3DTankTruckDraw (#2251)
xezon Feb 3, 2026
2c681f9
refactor(netpacket): Streamline order of net packet fields (#2288)
xezon Feb 8, 2026
6105ba9
refactor(netpacket): Simplify initialization of net packet field type…
xezon Feb 8, 2026
182bf28
bugfix: Remove superfluous CD checks and related code (#2261)
githubawn Feb 14, 2026
5d9aa65
bugfix(network): Increase message buffer and max packet sizes to redu…
Mauller Feb 14, 2026
2468a44
fix(netpacket): Fix undefined behavior with NetPacket buffer writes (…
xezon Feb 15, 2026
1d181e7
Merge branch 'main' of https://github.com/TheSuperHackers/GeneralsGam…
Andreas-W Feb 15, 2026
d813f9f
tweak(worldbuilder): Remove EULA code and data (#2307)
Caball009 Feb 15, 2026
f79f6be
build(docker): Add Linux LSP support by fixing compile_commands.json …
abhatem Feb 16, 2026
0ef19ad
feat(cratecollide): Add INI option to allow a crate to be picked up m…
Stubbjax Feb 16, 2026
6cbdd27
bugfix(worldbuilder): Fix uncaught carriage return in CommandButton n…
ViTeXFTW Feb 17, 2026
41841e1
bugfix(worldbuilder): Fix optimized trees not being shown in object p…
ViTeXFTW Feb 17, 2026
84be45f
build: Fix compile error when building without RETAIL_COMPATIBLE_CRC …
xezon Feb 17, 2026
b32f2c9
tweak: Put fixes that do affect gameplay behind PRESERVE_RETAIL_BEHAV…
xezon Feb 17, 2026
3f7f4d0
bugfix(worldbuilder): Fix incorrect access of empty list in ObjectOpt…
Caball009 Feb 18, 2026
e0fec6e
bugfix(particlesys): Restore Particle System IDs on save load before …
stephanmeesters Feb 18, 2026
e51d7ef
fix(connection): Fix unsafe Player ID usage in ConnectionManager, Dis…
xezon Feb 19, 2026
e0691bf
bugfix(radar): Show Hero Radar icons in Containers and Tunnels again …
xezon Feb 19, 2026
75cdd0e
tweak(commandline): Skip intro logo with -quickstart and enable -nolo…
xezon Feb 19, 2026
1dab8de
bugfix(behavior): Only detonate Bunker Busters if the missile reaches…
Stubbjax Feb 19, 2026
d778bf3
bugfix(battleplanupdate): Prevent using the Bombardment Cannon while …
Stubbjax Feb 19, 2026
d305a01
unify(mouse): Merge Mouse, Keyboard code (#2334)
xezon Feb 20, 2026
d873f65
unify(mouse): Move Mouse, Keyboard files to Core (#2334)
xezon Feb 20, 2026
146f7ce
fix(loadscreen): Fix missing pointer initialization in constructors o…
xezon Feb 20, 2026
e5db676
unify(loadscreen): Merge LoadScreen and related code (#2332)
xezon Feb 20, 2026
a76a4c2
unify(gui): Move several GUI related files to Core (#2332)
xezon Feb 20, 2026
014ca81
fix(netpacket): Fix incorrect improbable return value in NetPacket::G…
xezon Feb 21, 2026
312ebd8
bugfix(victory): Save victory status to prevent early exits from resu…
Stubbjax Feb 21, 2026
2aaf313
refactor(pathfinder): Implement PathfindCellList class for the pathfi…
Mauller Feb 16, 2026
a242967
refactor(pathfinder): Implement PathfindCellList class for the pathfi…
Mauller Feb 21, 2026
92fdfb9
refactor(pathfinder): Cleanup retail compatible insertion sort code (…
Mauller Feb 21, 2026
0b8af6d
bugfix(behavior): Prevent fallen Angry Mob members from respawning at…
Stubbjax Feb 21, 2026
09f3a84
bugfix(player): Fix rounding inaccuracies with money awarded by Cash …
Stubbjax Feb 21, 2026
3631d56
unify(client): Merge DisplayString, GameText, GlobalLanguage, Selecti…
xezon Feb 21, 2026
9156dad
unify(client): Move several GameClient files to Core (#2337)
xezon Feb 21, 2026
7b3f70a
refactor(pathfinder): Remove unused function Pathfinder::pathDestinat…
Caball009 Feb 21, 2026
862422d
bugfix(skirmish): Prevent mismatch in Replay playback by restoring co…
Caball009 Feb 21, 2026
3ddec3a
refactor(language): Cleanup GlobalLanguage code and add function Glob…
xezon Feb 22, 2026
8fa92a8
refactor(preferences): Move OptionPreferences class into separate fil…
bobtista Feb 23, 2026
75d5937
refactor: Simplify unconditional asserts from DEBUG_ASSERTCRASH to DE…
Caball009 Feb 23, 2026
b761e8f
Merge updates from main
Andreas-W Feb 24, 2026
34bdf15
Merge branch 'main' of https://github.com/TheSuperHackers/GeneralsGam…
Andreas-W Feb 24, 2026
b1bde99
Merge branch 'main' of https://github.com/Andreas-W/GeneralsGameCode_…
Andreas-W Feb 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
110 changes: 56 additions & 54 deletions Core/GameEngine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ set(GAMEENGINE_SRC
# Include/Common/MultiplayerSettings.h
# Include/Common/NameKeyGenerator.h
Include/Common/ObjectStatusTypes.h
Include/Common/OptionPreferences.h
# Include/Common/OSDisplay.h
# Include/Common/Overridable.h
# Include/Common/Override.h
Expand Down Expand Up @@ -144,28 +145,28 @@ set(GAMEENGINE_SRC
# Include/GameClient/AnimateWindowManager.h
# Include/GameClient/CampaignManager.h
Include/GameClient/ChallengeGenerals.h
# Include/GameClient/ClientInstance.h
Include/GameClient/ClientInstance.h
Include/GameClient/ClientRandomValue.h
# Include/GameClient/Color.h
Include/GameClient/Color.h
# Include/GameClient/CommandXlat.h
# Include/GameClient/ControlBar.h
# Include/GameClient/ControlBarResizer.h
# Include/GameClient/ControlBarScheme.h
# Include/GameClient/Credits.h
Include/GameClient/Credits.h
# Include/GameClient/DebugDisplay.h
# Include/GameClient/Diplomacy.h
# Include/GameClient/DisconnectMenu.h
# Include/GameClient/Display.h
# Include/GameClient/DisplayString.h
# Include/GameClient/DisplayStringManager.h
Include/GameClient/DisplayString.h
Include/GameClient/DisplayStringManager.h
# Include/GameClient/Drawable.h
# Include/GameClient/DrawableInfo.h
# Include/GameClient/DrawGroupInfo.h
Include/GameClient/DrawGroupInfo.h
# Include/GameClient/EstablishConnectionsMenu.h
# Include/GameClient/Eva.h
# Include/GameClient/ExtendedMessageBox.h
# Include/GameClient/FontDesc.h
# Include/GameClient/FXList.h
Include/GameClient/FXList.h
# Include/GameClient/Gadget.h
# Include/GameClient/GadgetCheckBox.h
# Include/GameClient/GadgetComboBox.h
Expand All @@ -178,61 +179,61 @@ set(GAMEENGINE_SRC
# Include/GameClient/GadgetTabControl.h
# Include/GameClient/GadgetTextEntry.h
# Include/GameClient/GameClient.h
# Include/GameClient/GameFont.h
Include/GameClient/GameFont.h
# Include/GameClient/GameInfoWindow.h
# Include/GameClient/GameText.h
# Include/GameClient/GameWindow.h
# Include/GameClient/GameWindowGlobal.h
Include/GameClient/GameText.h
Include/GameClient/GameWindow.h
Include/GameClient/GameWindowGlobal.h
# Include/GameClient/GameWindowID.h
# Include/GameClient/GameWindowManager.h
# Include/GameClient/GameWindowTransitions.h
# Include/GameClient/GlobalLanguage.h
# Include/GameClient/GraphDraw.h
Include/GameClient/GameWindowTransitions.h
Include/GameClient/GlobalLanguage.h
Include/GameClient/GraphDraw.h
# Include/GameClient/GUICallbacks.h
# Include/GameClient/GUICommandTranslator.h
# Include/GameClient/HeaderTemplate.h
Include/GameClient/HeaderTemplate.h
# Include/GameClient/HintSpy.h
# Include/GameClient/HotKey.h
# Include/GameClient/Image.h
# Include/GameClient/IMEManager.h
Include/GameClient/IMEManager.h
# Include/GameClient/InGameUI.h
# Include/GameClient/Keyboard.h
Include/GameClient/Keyboard.h
# Include/GameClient/KeyDefs.h
# Include/GameClient/LanguageFilter.h
# Include/GameClient/Line2D.h
# Include/GameClient/LoadScreen.h
Include/GameClient/LanguageFilter.h
Include/GameClient/Line2D.h
Include/GameClient/LoadScreen.h
# Include/GameClient/LookAtXlat.h
Include/GameClient/MapUtil.h
# Include/GameClient/MessageBox.h
# Include/GameClient/MetaEvent.h
# Include/GameClient/Module/AnimatedParticleSysBoneClientUpdate.h
# Include/GameClient/Module/BeaconClientUpdate.h
# Include/GameClient/Module/SwayClientUpdate.h
# Include/GameClient/Mouse.h
Include/GameClient/Mouse.h
Include/GameClient/ParabolicEase.h
Include/GameClient/ParticleSys.h
# Include/GameClient/PlaceEventTranslator.h
# Include/GameClient/ProcessAnimateWindow.h
# Include/GameClient/RadiusDecal.h
Include/GameClient/ProcessAnimateWindow.h
Include/GameClient/RadiusDecal.h
# Include/GameClient/RayEffect.h
# Include/GameClient/SelectionInfo.h
Include/GameClient/SelectionInfo.h
# Include/GameClient/SelectionXlat.h
# Include/GameClient/Shadow.h
# Include/GameClient/Shell.h
# Include/GameClient/ShellHooks.h
# Include/GameClient/ShellMenuScheme.h
Include/GameClient/Smudge.h
Include/GameClient/Snow.h
# Include/GameClient/Statistics.h
Include/GameClient/Statistics.h
Include/GameClient/TerrainRoads.h
Include/GameClient/TerrainVisual.h
Include/GameClient/VideoPlayer.h
Include/GameClient/View.h
Include/GameClient/Water.h
# Include/GameClient/WindowLayout.h
Include/GameClient/WindowLayout.h
Include/GameClient/WindowVideoManager.h
# Include/GameClient/WindowXlat.h
# Include/GameClient/WinInstanceData.h
Include/GameClient/WinInstanceData.h
# Include/GameLogic/AI.h
# Include/GameLogic/AIDock.h
# Include/GameLogic/AIGuard.h
Expand Down Expand Up @@ -621,6 +622,7 @@ set(GAMEENGINE_SRC
# Source/Common/MiniLog.cpp
# Source/Common/MultiplayerSettings.cpp
# Source/Common/NameKeyGenerator.cpp
Source/Common/OptionPreferences.cpp
# Source/Common/PartitionSolver.cpp
# Source/Common/PerfTimer.cpp
Source/Common/RandomValue.cpp
Expand Down Expand Up @@ -696,24 +698,24 @@ set(GAMEENGINE_SRC
Source/Common/UserPreferences.cpp
# Source/Common/version.cpp
Source/Common/WorkerProcess.cpp
# Source/GameClient/ClientInstance.cpp
# Source/GameClient/Color.cpp
# Source/GameClient/Credits.cpp
Source/GameClient/ClientInstance.cpp
Source/GameClient/Color.cpp
Source/GameClient/Credits.cpp
# Source/GameClient/Display.cpp
# Source/GameClient/DisplayString.cpp
# Source/GameClient/DisplayStringManager.cpp
Source/GameClient/DisplayString.cpp
Source/GameClient/DisplayStringManager.cpp
# Source/GameClient/Drawable.cpp
# Source/GameClient/Drawable/Update/AnimatedParticleSysBoneClientUpdate.cpp
# Source/GameClient/Drawable/Update/BeaconClientUpdate.cpp
# Source/GameClient/Drawable/Update/SwayClientUpdate.cpp
# Source/GameClient/DrawGroupInfo.cpp
Source/GameClient/DrawGroupInfo.cpp
# Source/GameClient/Eva.cpp
# Source/GameClient/FXList.cpp
Source/GameClient/FXList.cpp
# Source/GameClient/GameClient.cpp
# Source/GameClient/GameClientDispatch.cpp
# Source/GameClient/GameText.cpp
# Source/GameClient/GlobalLanguage.cpp
# Source/GameClient/GraphDraw.cpp
Source/GameClient/GameText.cpp
Source/GameClient/GlobalLanguage.cpp
Source/GameClient/GraphDraw.cpp
# Source/GameClient/GUI/AnimateWindowManager.cpp
Source/GameClient/GUI/ChallengeGenerals.cpp
# Source/GameClient/GUI/ControlBar/ControlBar.cpp
Expand Down Expand Up @@ -741,12 +743,12 @@ set(GAMEENGINE_SRC
# Source/GameClient/GUI/Gadget/GadgetTabControl.cpp
# Source/GameClient/GUI/Gadget/GadgetTextEntry.cpp
# Source/GameClient/GUI/Gadget/GadgetVerticalSlider.cpp
# Source/GameClient/GUI/GameFont.cpp
# Source/GameClient/GUI/GameWindow.cpp
# Source/GameClient/GUI/GameWindowGlobal.cpp
Source/GameClient/GUI/GameFont.cpp
Source/GameClient/GUI/GameWindow.cpp
Source/GameClient/GUI/GameWindowGlobal.cpp
# Source/GameClient/GUI/GameWindowManager.cpp
# Source/GameClient/GUI/GameWindowManagerScript.cpp
# Source/GameClient/GUI/GameWindowTransitions.cpp
Source/GameClient/GUI/GameWindowTransitions.cpp
# Source/GameClient/GUI/GameWindowTransitionsStyles.cpp
# Source/GameClient/GUI/GUICallbacks/ControlBarCallback.cpp
# Source/GameClient/GUI/GUICallbacks/ControlBarPopupDescription.cpp
Expand Down Expand Up @@ -799,20 +801,20 @@ set(GAMEENGINE_SRC
# Source/GameClient/GUI/GUICallbacks/Menus/WOLWelcomeMenu.cpp
# Source/GameClient/GUI/GUICallbacks/MessageBox.cpp
# Source/GameClient/GUI/GUICallbacks/ReplayControls.cpp
# Source/GameClient/GUI/HeaderTemplate.cpp
# Source/GameClient/GUI/IMEManager.cpp
# Source/GameClient/GUI/LoadScreen.cpp
# Source/GameClient/GUI/ProcessAnimateWindow.cpp
Source/GameClient/GUI/HeaderTemplate.cpp
Source/GameClient/GUI/IMEManager.cpp
Source/GameClient/GUI/LoadScreen.cpp
Source/GameClient/GUI/ProcessAnimateWindow.cpp
# Source/GameClient/GUI/Shell/Shell.cpp
# Source/GameClient/GUI/Shell/ShellMenuScheme.cpp
# Source/GameClient/GUI/WindowLayout.cpp
Source/GameClient/GUI/WindowLayout.cpp
Source/GameClient/GUI/WindowVideoManager.cpp
# Source/GameClient/GUI/WinInstanceData.cpp
Source/GameClient/GUI/WinInstanceData.cpp
# Source/GameClient/InGameUI.cpp
# Source/GameClient/Input/Keyboard.cpp
# Source/GameClient/Input/Mouse.cpp
# Source/GameClient/LanguageFilter.cpp
# Source/GameClient/Line2D.cpp
Source/GameClient/Input/Keyboard.cpp
Source/GameClient/Input/Mouse.cpp
Source/GameClient/LanguageFilter.cpp
Source/GameClient/Line2D.cpp
Source/GameClient/MapUtil.cpp
# Source/GameClient/MessageStream/CommandXlat.cpp
# Source/GameClient/MessageStream/GUICommandTranslator.cpp
Expand All @@ -824,10 +826,10 @@ set(GAMEENGINE_SRC
# Source/GameClient/MessageStream/SelectionXlat.cpp
# Source/GameClient/MessageStream/WindowXlat.cpp
Source/GameClient/ParabolicEase.cpp
# Source/GameClient/RadiusDecal.cpp
# Source/GameClient/SelectionInfo.cpp
Source/GameClient/RadiusDecal.cpp
Source/GameClient/SelectionInfo.cpp
Source/GameClient/Snow.cpp
# Source/GameClient/Statistics.cpp
Source/GameClient/Statistics.cpp
# Source/GameClient/System/Anim2D.cpp
# Source/GameClient/System/CampaignManager.cpp
Source/GameClient/System/Debug/AudioDebugDisplay.cpp
Expand Down
116 changes: 116 additions & 0 deletions Core/GameEngine/Include/Common/OptionPreferences.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
/*
** Command & Conquer Generals Zero Hour(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

////////////////////////////////////////////////////////////////////////////////
// //
// (c) 2001-2003 Electronic Arts Inc. //
// //
////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
// FILE: OptionPreferences.h
// Author: Matthew D. Campbell, April 2002
// Description: Saving/Loading of option preferences
///////////////////////////////////////////////////////////////////////////////////////

#pragma once

#include "Common/UserPreferences.h"

typedef UnsignedInt CursorCaptureMode;
typedef UnsignedInt ScreenEdgeScrollMode;

//-----------------------------------------------------------------------------
// OptionsPreferences options menu class
//-----------------------------------------------------------------------------
class OptionPreferences : public UserPreferences
{
public:
OptionPreferences();
virtual ~OptionPreferences();

Bool loadFromIniFile();

UnsignedInt getLANIPAddress(void);
UnsignedInt getOnlineIPAddress(void);
void setLANIPAddress(AsciiString IP);
void setOnlineIPAddress(AsciiString IP);
void setLANIPAddress(UnsignedInt IP);
void setOnlineIPAddress(UnsignedInt IP);
Bool getArchiveReplaysEnabled() const;
Bool getAlternateMouseModeEnabled(void);
Bool getRetaliationModeEnabled();
Bool getDoubleClickAttackMoveEnabled(void);
Real getScrollFactor(void);
Bool getDrawScrollAnchor(void);
Bool getMoveScrollAnchor(void);
Bool getCursorCaptureEnabledInWindowedGame() const;
Bool getCursorCaptureEnabledInWindowedMenu() const;
Bool getCursorCaptureEnabledInFullscreenGame() const;
Bool getCursorCaptureEnabledInFullscreenMenu() const;
CursorCaptureMode getCursorCaptureMode() const;
Bool getScreenEdgeScrollEnabledInWindowedApp() const;
Bool getScreenEdgeScrollEnabledInFullscreenApp() const;
ScreenEdgeScrollMode getScreenEdgeScrollMode() const;
Bool getSendDelay(void);
Int getFirewallBehavior(void);
Short getFirewallPortAllocationDelta(void);
UnsignedShort getFirewallPortOverride(void);
Bool getFirewallNeedToRefresh(void);
Bool usesSystemMapDir(void);
AsciiString getPreferred3DProvider(void);
AsciiString getSpeakerType(void);
Real getSoundVolume(void);
Real get3DSoundVolume(void);
Real getSpeechVolume(void);
Real getMusicVolume(void);
Real getMoneyTransactionVolume(void) const;
Bool saveCameraInReplays(void);
Bool useCameraInReplays(void);
Bool getPlayerObserverEnabled() const;
Int getStaticGameDetail(void);
Int getIdealStaticGameDetail(void);
Real getGammaValue(void);
Int getTextureReduction(void);
void getResolution(Int *xres, Int *yres);
Bool get3DShadowsEnabled(void);
Bool get2DShadowsEnabled(void);
Bool getCloudShadowsEnabled(void);
Bool getLightmapEnabled(void);
Bool getSmoothWaterEnabled(void);
Bool getTreesEnabled(void);
Bool getExtraAnimationsDisabled(void);
Bool getUseHeatEffects(void);
Bool getDynamicLODEnabled(void);
Bool getFPSLimitEnabled(void);
Bool getBuildingOcclusionEnabled(void);
Int getParticleCap(void);

Int getCampaignDifficulty(void);
void setCampaignDifficulty(Int diff);

Int getNetworkLatencyFontSize(void);
Int getRenderFpsFontSize(void);
Int getSystemTimeFontSize(void);
Int getGameTimeFontSize(void);
Int getPlayerInfoListFontSize(void);

Real getResolutionFontAdjustment(void);

Bool getShowMoneyPerMinute(void) const;
};
7 changes: 0 additions & 7 deletions Core/GameEngine/Include/Common/Radar.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ class RadarObject : public MemoryPoolObject,
const RadarObject *friend_getNext( void ) const { return m_next; }

Bool isTemporarilyHidden() const;
static Bool isTemporarilyHidden(const Object* obj);

protected:

Expand Down Expand Up @@ -260,12 +259,6 @@ class Radar : public Snapshot,
* in exactly the same priority as the regular
* object list for all other objects */

// TheSuperHackers @bugfix xezon 22/11/2025 Now stores local heroes in a separate list,
// because they are treated with special icons but should otherwise work like all other
// radar objects. In retail version, the cached hero object data was able to dangle
// for a few frames and cause undefined behavior.
RadarObject *m_localHeroObjectList; ///< list of hero objects for the local player

Real m_terrainAverageZ; ///< average Z for terrain samples
Real m_waterAverageZ; ///< average Z for water samples

Expand Down
Loading