Check MakeActor rvs for NULL

This commit is contained in:
Devin J. Pohly
2013-11-02 04:11:30 -04:00
parent 5d9c3aaa59
commit 4298f2542d
8 changed files with 42 additions and 15 deletions
+2
View File
@@ -201,6 +201,8 @@ bool ActorUtil::LoadTableFromStackShowErrors( Lua *L )
return true; return true;
} }
// NOTE: This function can return NULL if the actor should not be displayed.
// Callers should be aware of this and handle it appropriately.
Actor* ActorUtil::MakeActor( const RString &sPath_, Actor *pParentActor ) Actor* ActorUtil::MakeActor( const RString &sPath_, Actor *pParentActor )
{ {
RString sPath( sPath_ ); RString sPath( sPath_ );
+2
View File
@@ -520,6 +520,8 @@ void BGAnimationLayer::LoadFromNode( const XNode* pNode )
for( unsigned i=0; i<NumSprites; i++ ) for( unsigned i=0; i<NumSprites; i++ )
{ {
Actor* pSprite = ActorUtil::MakeActor( sFile, this ); Actor* pSprite = ActorUtil::MakeActor( sFile, this );
if( pSprite == NULL )
continue;
this->AddChild( pSprite ); this->AddChild( pSprite );
pSprite->SetTextureWrapping( true ); // gets rid of some "cracks" pSprite->SetTextureWrapping( true ); // gets rid of some "cracks"
pSprite->SetZoom( randomf(fZoomMin,fZoomMax) ); pSprite->SetZoom( randomf(fZoomMin,fZoomMax) );
+2 -1
View File
@@ -373,7 +373,8 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
Actor *pActor = ActorUtil::MakeActor( sEffectFile ); Actor *pActor = ActorUtil::MakeActor( sEffectFile );
ASSERT( pActor != NULL ); if( pActor == NULL )
pActor = new Actor;
m_BGAnimations[bd] = pActor; m_BGAnimations[bd] = pActor;
for( unsigned i=0; i<vsResolvedRef.size(); i++ ) for( unsigned i=0; i<vsResolvedRef.size(); i++ )
+23 -10
View File
@@ -26,22 +26,35 @@ void ComboGraph::Load( RString sMetricsGroup )
Actor *pActor = NULL; Actor *pActor = NULL;
m_pBacking = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"Backing") ); m_pBacking = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"Backing") );
m_pBacking->ZoomToWidth( BODY_WIDTH ); if( m_pBacking != NULL )
this->AddChild( m_pBacking ); {
m_pBacking->ZoomToWidth( BODY_WIDTH );
this->AddChild( m_pBacking );
}
m_pNormalCombo = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"NormalCombo") ); m_pNormalCombo = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"NormalCombo") );
m_pNormalCombo->ZoomToWidth( BODY_WIDTH ); if( m_pNormalCombo != NULL )
this->AddChild( m_pNormalCombo ); {
m_pNormalCombo->ZoomToWidth( BODY_WIDTH );
this->AddChild( m_pNormalCombo );
}
m_pMaxCombo = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"MaxCombo") ); m_pMaxCombo = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"MaxCombo") );
m_pMaxCombo->ZoomToWidth( BODY_WIDTH ); if( m_pMaxCombo != NULL )
this->AddChild( m_pMaxCombo ); {
m_pMaxCombo->ZoomToWidth( BODY_WIDTH );
this->AddChild( m_pMaxCombo );
}
pActor = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"ComboNumber") ); pActor = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"ComboNumber") );
m_pComboNumber = dynamic_cast<BitmapText *>( pActor ); if( pActor != NULL )
if( m_pComboNumber == NULL ) {
RageException::Throw( "ComboGraph: \"sMetricsGroup\" \"ComboNumber\" must be a BitmapText" ); m_pComboNumber = dynamic_cast<BitmapText *>( pActor );
this->AddChild( m_pComboNumber ); if( m_pComboNumber != NULL )
this->AddChild( m_pComboNumber );
else
LOG->Warn( "ComboGraph: \"sMetricsGroup\" \"ComboNumber\" must be a BitmapText" );
}
} }
void ComboGraph::Set( const StageStats &s, const PlayerStageStats &pss ) void ComboGraph::Set( const StageStats &s, const PlayerStageStats &pss )
+2
View File
@@ -45,6 +45,8 @@ void Foreground::LoadFromSong( const Song *pSong )
{ {
bga.m_bga = ActorUtil::MakeActor( pSong->GetSongDir() + sBGName, this ); bga.m_bga = ActorUtil::MakeActor( pSong->GetSongDir() + sBGName, this );
} }
if( bga.m_bga == NULL )
continue;
bga.m_bga->SetName( sBGName ); bga.m_bga->SetName( sBGName );
bga.m_bga->PlayCommand( "Init" ); bga.m_bga->PlayCommand( "Init" );
bga.m_fStartBeat = change.m_fStartBeat; bga.m_fStartBeat = change.m_fStartBeat;
+4 -1
View File
@@ -107,7 +107,10 @@ void OptionRowType::Load( const RString &sMetricsGroup, Actor *pParent )
m_textTitle.SetName( "Title" ); m_textTitle.SetName( "Title" );
ActorUtil::LoadAllCommandsAndSetXY( m_textTitle, sMetricsGroup ); ActorUtil::LoadAllCommandsAndSetXY( m_textTitle, sMetricsGroup );
m_sprFrame.Load( ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"Frame"), pParent ) ); Actor *pActor = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"Frame"), pParent );
if( pActor == NULL )
pActor = new Actor;
m_sprFrame.Load( pActor );
m_sprFrame->SetName( "Frame" ); m_sprFrame->SetName( "Frame" );
ActorUtil::LoadAllCommandsAndSetXY( m_sprFrame, sMetricsGroup ); ActorUtil::LoadAllCommandsAndSetXY( m_sprFrame, sMetricsGroup );
+2 -1
View File
@@ -187,7 +187,8 @@ void ScoreScroller::Load( RString sMetricsGroup )
for( int i=0; i<iNumCopies; ++i ) for( int i=0; i<iNumCopies; ++i )
{ {
Actor *pActor = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"ScrollerItem") ); Actor *pActor = ActorUtil::MakeActor( THEME->GetPathG(sMetricsGroup,"ScrollerItem") );
this->AddChild( pActor ); if( pActor != NULL )
this->AddChild( pActor );
} }
DynamicActorScroller::SetTransformFromReference( THEME->GetMetricR(sMetricsGroup,"ScrollerItemTransformFunction") ); DynamicActorScroller::SetTransformFromReference( THEME->GetMetricR(sMetricsGroup,"ScrollerItemTransformFunction") );
+5 -2
View File
@@ -584,8 +584,11 @@ void ScreenManager::PrepareScreen( const RString &sScreenName )
{ {
LOG->Trace( "Loading screen background \"%s\"", sNewBGA.c_str() ); LOG->Trace( "Loading screen background \"%s\"", sNewBGA.c_str() );
Actor *pActor = ActorUtil::MakeActor( sNewBGA ); Actor *pActor = ActorUtil::MakeActor( sNewBGA );
pActor->SetName( sNewBGA ); if( pActor != NULL )
g_vPreparedBackgrounds.push_back( pActor ); {
pActor->SetName( sNewBGA );
g_vPreparedBackgrounds.push_back( pActor );
}
} }
} }