From f9983486a988529a28177fa914517e0747424880 Mon Sep 17 00:00:00 2001 From: Okladnoj Date: Mon, 9 Nov 2026 18:58:03 +0200 Subject: [PATCH] bugfix(contain): Let passengers exit a China Overlord with a Battle Bunker --- .../Include/GameLogic/Module/OverlordContain.h | 1 + .../Source/GameLogic/Object/Contain/OverlordContain.cpp | 9 +++++++++ .../Include/GameLogic/Module/OverlordContain.h | 1 + .../Source/GameLogic/Object/Contain/OverlordContain.cpp | 9 +++++++++ 4 files changed, 20 insertions(+) diff --git a/Generals/Code/GameEngine/Include/GameLogic/Module/OverlordContain.h b/Generals/Code/GameEngine/Include/GameLogic/Module/OverlordContain.h index 20381adf891..06505ce758c 100644 --- a/Generals/Code/GameEngine/Include/GameLogic/Module/OverlordContain.h +++ b/Generals/Code/GameEngine/Include/GameLogic/Module/OverlordContain.h @@ -84,6 +84,7 @@ class OverlordContain : public TransportContain virtual UnsignedInt getContainCount() const override; virtual Int getContainMax() const override; virtual const ContainedItemsList* getContainedItemsList() const override; + virtual Bool isContained( const Object *obj ) const override; // Friend for our Draw module only. virtual const Object *friend_getRider() const override; ///< Damn. The draw order dependency bug for riders means that our draw module needs to cheat to get around it. diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Contain/OverlordContain.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Contain/OverlordContain.cpp index b92983e40f9..44ede07ad52 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Contain/OverlordContain.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Contain/OverlordContain.cpp @@ -373,6 +373,15 @@ const ContainedItemsList* OverlordContain::getContainedItemsList() const return getRedirectedContain()->getContainedItemsList(); } +//------------------------------------------------------------------------------------------------- +Bool OverlordContain::isContained( const Object *obj ) const +{ + if( getRedirectedContain() == nullptr ) + return TransportContain::isContained( obj ); + + return getRedirectedContain()->isContained( obj ); +} + //------------------------------------------------------------------------------------------------- Bool OverlordContain::isEnclosingContainerFor( const Object *obj ) const { diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/OverlordContain.h b/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/OverlordContain.h index e603bca71ce..82d1b96ec91 100644 --- a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/OverlordContain.h +++ b/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/OverlordContain.h @@ -101,6 +101,7 @@ class OverlordContain : public TransportContain virtual UnsignedInt getContainCount() const override; virtual Int getContainMax() const override; virtual const ContainedItemsList* getContainedItemsList() const override; + virtual Bool isContained( const Object *obj ) const override; // Friend for our Draw module only. virtual const Object *friend_getRider() const override; ///< Damn. The draw order dependency bug for riders means that our draw module needs to cheat to get around it. diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/OverlordContain.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/OverlordContain.cpp index 1f1a6d94488..78b4b8efb83 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/OverlordContain.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/OverlordContain.cpp @@ -485,6 +485,15 @@ const ContainedItemsList* OverlordContain::getContainedItemsList() const return getRedirectedContain()->getContainedItemsList(); } +//------------------------------------------------------------------------------------------------- +Bool OverlordContain::isContained( const Object *obj ) const +{ + if( getRedirectedContain() == nullptr ) + return TransportContain::isContained( obj ); + + return getRedirectedContain()->isContained( obj ); +} + //------------------------------------------------------------------------------------------------- Bool OverlordContain::isEnclosingContainerFor( const Object *obj ) const {