void CComStation::PossibleCollision(CInterval*& aInterval) { //go through all objects and check if care to collide with them if(iAlive) { CPointerArray<CGameObject>* lGameObjects = aInterval->GetGameObjectsByType(EObjectTypesPlane); for(TInt lCurrentObjectIndex = 0; lCurrentObjectIndex < lGameObjects->GetCount(); lCurrentObjectIndex++) { CGameObject* lCurrentGameObject = lGameObjects->Get(lCurrentObjectIndex); //only collide with alive objects if(lCurrentGameObject->IsAlive())//don't compare to anything if already dead { //collide if(iHitBox->IntersectionL(lCurrentGameObject->GetHitBox())) { //make sure plane is dead SDamage lDamage; lDamage.Damage = KILL_ANY_AIRPLANE_DAMAGE; lDamage.ArmorPenetration = KILL_ANY_AIRPLANE_ARMOR_PENETRATION;//should kill any object lCurrentGameObject->TakeDamage(lDamage, EDamageTypeTankPlaneCollision); } } } //clean up delete lGameObjects; } //check if this object got captured CGameObject* lCaptureObject = CheckIfObjectGotCaptured(aInterval); if(lCaptureObject) { iFlagPole->ChangeFlagConflictSide(lCaptureObject->GetConflictSide()); iConflictSide = lCaptureObject->GetConflictSide(); } }
TBool CWeaponsTutorialLoseIfAllAmericanSoldiersDied::TutorialEventLogic() //checks if the Event Condition has been met { CGameObjectManager* lObjectManager = CFighterPilotThePacificWar::FighterGame->iGameData->GetMap()->GetObjectManager(); CPointerArray<CGameObject>*& lObjects = lObjectManager->GetAllGameObjects(); for(TInt lIndex = 0; lIndex < lObjects->GetCount(); lIndex++) { CGameObject* lCurrentGameObject = lObjects->Get(lIndex); if(lCurrentGameObject->GetConflictSide() == EConflictSideAmerican && lCurrentGameObject->GetGameObjectType() == EObjectTypesGroundUnit) { if(lCurrentGameObject->IsAlive()) return false; } } return true; //all American soldiers on the map died }