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 ); 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 );