Skip to content

Commit b4fe77a

Browse files
committed
tweak: More comprehensive solution
1 parent 198e8c8 commit b4fe77a

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

Generals/Code/GameEngine/Source/GameLogic/Object/Behavior/PropagandaTowerBehavior.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include "GameLogic/Object.h"
4141
#include "GameLogic/PartitionManager.h"
4242
#include "GameLogic/Weapon.h"
43+
#include "GameLogic/Module/ContainModule.h"
4344
#include "GameLogic/Module/PropagandaTowerBehavior.h"
4445
#include "GameLogic/Module/BodyModule.h"
4546

@@ -208,9 +209,12 @@ UpdateSleepTime PropagandaTowerBehavior::update( void )
208209
#if RETAIL_COMPATIBLE_CRC
209210
Bool contained = self->getContainedBy() && self->getContainedBy()->getContainedBy();
210211
#else
211-
Bool contained = (self->isKindOf(KINDOF_PORTABLE_STRUCTURE)) ?
212-
self->getContainedBy() && self->getContainedBy()->getContainedBy() :
213-
self->getContainedBy() != NULL;
212+
Object* container = self->getContainedBy();
213+
214+
while (container && container->getContainedBy())
215+
container = container->getContainedBy();
216+
217+
Bool contained = (container && container->getContain()->isEnclosingContainerFor(self));
214218
#endif
215219

216220
if (contained)

GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Behavior/PropagandaTowerBehavior.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include "GameLogic/Object.h"
4141
#include "GameLogic/PartitionManager.h"
4242
#include "GameLogic/Weapon.h"
43+
#include "GameLogic/Module/ContainModule.h"
4344
#include "GameLogic/Module/PropagandaTowerBehavior.h"
4445
#include "GameLogic/Module/BodyModule.h"
4546

@@ -210,9 +211,12 @@ UpdateSleepTime PropagandaTowerBehavior::update( void )
210211
#if RETAIL_COMPATIBLE_CRC
211212
Bool contained = self->getContainedBy() && self->getContainedBy()->getContainedBy();
212213
#else
213-
Bool contained = (self->isKindOf(KINDOF_PORTABLE_STRUCTURE)) ?
214-
self->getContainedBy() && self->getContainedBy()->getContainedBy() :
215-
self->getContainedBy() != NULL;
214+
Object* container = self->getContainedBy();
215+
216+
while (container && container->getContainedBy())
217+
container = container->getContainedBy();
218+
219+
Bool contained = (container && container->getContain()->isEnclosingContainerFor(self));
216220
#endif
217221

218222
if (contained)

0 commit comments

Comments
 (0)