From b553cb21fd0088e206112a9797f0182e1b869020 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Fri, 14 Aug 2026 17:01:39 -0400 Subject: [PATCH 1/2] bugfix(saveload): Transfer the dock approach position bone count --- .../Object/Update/DockUpdate/DockUpdate.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp index ec4c2dbd8bb..ec308ad33f0 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp @@ -558,13 +558,21 @@ void DockUpdate::crc( Xfer *xfer ) } // ------------------------------------------------------------------------------------------------ -/** Xfer Method */ +/** Xfer Method + * Version Info: + * 1: Initial version + * 2: TheSuperHackers @bugfix bobtista 14/08/2026 Serialize the approach position bone count, so + * a dock with no waiting bones keeps biasing approach positions toward the caller on load */ // ------------------------------------------------------------------------------------------------ void DockUpdate::xfer( Xfer *xfer ) { // version +#if RETAIL_COMPATIBLE_XFER_SAVE XferVersion currentVersion = 1; +#else + XferVersion currentVersion = 2; +#endif XferVersion version = currentVersion; xfer->xferVersion( &version, currentVersion ); @@ -583,6 +591,12 @@ void DockUpdate::xfer( Xfer *xfer ) // # approach positions xfer->xferInt( &m_numberApproachPositions ); + // # approach position bones + if( version >= 2 ) + { + xfer->xferInt( &m_numberApproachPositionBones ); + } + // positions loaded xfer->xferBool( &m_positionsLoaded ); From c6b3c561e2ba8fdd7a68e72b96305581c069f6ff Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Fri, 14 Aug 2026 17:01:39 -0400 Subject: [PATCH 2/2] bugfix(saveload): Transfer the dock approach position bone count (Generals) --- .../Object/Update/DockUpdate/DockUpdate.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp index 7ca5deccccb..aa59b83485b 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp @@ -543,13 +543,21 @@ void DockUpdate::crc( Xfer *xfer ) } // ------------------------------------------------------------------------------------------------ -/** Xfer Method */ +/** Xfer Method + * Version Info: + * 1: Initial version + * 2: TheSuperHackers @bugfix bobtista 14/08/2026 Serialize the approach position bone count, so + * a dock with no waiting bones keeps biasing approach positions toward the caller on load */ // ------------------------------------------------------------------------------------------------ void DockUpdate::xfer( Xfer *xfer ) { // version +#if RETAIL_COMPATIBLE_XFER_SAVE XferVersion currentVersion = 1; +#else + XferVersion currentVersion = 2; +#endif XferVersion version = currentVersion; xfer->xferVersion( &version, currentVersion ); @@ -568,6 +576,12 @@ void DockUpdate::xfer( Xfer *xfer ) // # approach positions xfer->xferInt( &m_numberApproachPositions ); + // # approach position bones + if( version >= 2 ) + { + xfer->xferInt( &m_numberApproachPositionBones ); + } + // positions loaded xfer->xferBool( &m_positionsLoaded );