experimental: load 'decorations' BGAnimation and make decorations children of the Screen so that their draworder relative to other children of the Screen can be controlled

This commit is contained in:
Chris Danford
2008-03-28 16:28:27 +00:00
parent 08a2f6f6c2
commit a62145d3d3
3 changed files with 21 additions and 4 deletions
+9 -2
View File
@@ -121,7 +121,7 @@ void ActorFrame::LoadChildrenFromNode( const XNode* pNode )
SortByDrawOrder();
}
void ActorFrame::AddChild( Actor* pActor )
void ActorFrame::AddChild( Actor *pActor )
{
#if _DEBUG
// check that this Actor isn't already added.
@@ -137,13 +137,20 @@ void ActorFrame::AddChild( Actor* pActor )
pActor->SetParent( this );
}
void ActorFrame::RemoveChild( Actor* pActor )
void ActorFrame::RemoveChild( Actor *pActor )
{
vector<Actor*>::iterator iter = find( m_SubActors.begin(), m_SubActors.end(), pActor );
if( iter != m_SubActors.end() )
m_SubActors.erase( iter );
}
void ActorFrame::TransferChildren( ActorFrame *pTo )
{
FOREACH( Actor*, m_SubActors, i )
pTo->AddChild( *i );
RemoveAllChildren();
}
Actor* ActorFrame::GetChild( const RString &sName )
{
FOREACH( Actor*, m_SubActors, a )
+3 -2
View File
@@ -16,8 +16,9 @@ public:
void LoadFromNode( const XNode* pNode );
virtual ActorFrame *Copy() const;
virtual void AddChild( Actor* pActor );
virtual void RemoveChild( Actor* pActor );
virtual void AddChild( Actor *pActor );
virtual void RemoveChild( Actor *pActor );
void TransferChildren( ActorFrame *pTo );
Actor* GetChild( const RString &sName );
int GetNumChildren() const { return m_SubActors.size(); }
+9
View File
@@ -92,6 +92,15 @@ void ScreenWithMenuElements::Init()
m_sprOverlay->SetDrawOrder( DRAW_ORDER_OVERLAY );
this->AddChild( m_sprOverlay );
LOAD_ALL_COMMANDS( m_sprOverlay );
/* Experimental: Load "decorations" and make them children of the screen. */
{
AutoActor decorations;
decorations.Load( THEME->GetPathB(m_sName,"decorations") );
ActorFrame *pFrame = dynamic_cast<ActorFrame*>((Actor*)decorations);
if( pFrame )
pFrame->TransferChildren( this );
}
m_In.SetName( "In" );
m_In.Load( THEME->GetPathB(m_sName,"in") );