add PlayCommandNoRecurse to fix PlayCommand hack
This commit is contained in:
@@ -233,7 +233,9 @@ void Actor::LoadFromNode( const XNode* pNode )
|
|||||||
|
|
||||||
LUA->Release( L );
|
LUA->Release( L );
|
||||||
|
|
||||||
PlayCommand( "Init" );
|
// Don't recurse Init. It gets called once for every Actor when the
|
||||||
|
// Actor is loaded, and we don't want to call it again.
|
||||||
|
PlayCommandNoRecurse( Message("Init") );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Actor::Draw()
|
void Actor::Draw()
|
||||||
@@ -1153,6 +1155,11 @@ const apActorCommands *Actor::GetCommand( const RString &sCommandName ) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Actor::HandleMessage( const Message &msg )
|
void Actor::HandleMessage( const Message &msg )
|
||||||
|
{
|
||||||
|
PlayCommandNoRecurse( msg );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Actor::PlayCommandNoRecurse( const Message &msg )
|
||||||
{
|
{
|
||||||
const apActorCommands *pCmd = GetCommand( msg.GetName() );
|
const apActorCommands *pCmd = GetCommand( msg.GetName() );
|
||||||
if( pCmd != NULL )
|
if( pCmd != NULL )
|
||||||
|
|||||||
@@ -356,7 +356,8 @@ public:
|
|||||||
void AddCommand( const RString &sCmdName, apActorCommands apac );
|
void AddCommand( const RString &sCmdName, apActorCommands apac );
|
||||||
bool HasCommand( const RString &sCmdName );
|
bool HasCommand( const RString &sCmdName );
|
||||||
const apActorCommands *GetCommand( const RString &sCommandName ) const;
|
const apActorCommands *GetCommand( const RString &sCommandName ) const;
|
||||||
void PlayCommand( const RString &sCommandName ) { HandleMessage( Message(sCommandName) ); }
|
void PlayCommand( const RString &sCommandName ) { HandleMessage( Message(sCommandName) ); } // convenience
|
||||||
|
void PlayCommandNoRecurse( const Message &sCommandName );
|
||||||
virtual void RunCommands( const LuaReference& cmds, const LuaReference *pParamTable = NULL );
|
virtual void RunCommands( const LuaReference& cmds, const LuaReference *pParamTable = NULL );
|
||||||
void RunCommands( const apActorCommands& cmds, const LuaReference *pParamTable = NULL ) { this->RunCommands( *cmds, pParamTable ); } // convenience
|
void RunCommands( const apActorCommands& cmds, const LuaReference *pParamTable = NULL ) { this->RunCommands( *cmds, pParamTable ); } // convenience
|
||||||
// If we're a leaf, then execute this command.
|
// If we're a leaf, then execute this command.
|
||||||
|
|||||||
@@ -356,11 +356,6 @@ void ActorFrame::HandleMessage( const Message &msg )
|
|||||||
{
|
{
|
||||||
Actor::HandleMessage( msg );
|
Actor::HandleMessage( msg );
|
||||||
|
|
||||||
// HACK: Don't propogate Init. It gets called once for every Actor when the
|
|
||||||
// Actor is loaded, and we don't want to call it again.
|
|
||||||
if( msg.GetName() == "Init" )
|
|
||||||
return;
|
|
||||||
|
|
||||||
for( unsigned i=0; i<m_SubActors.size(); i++ )
|
for( unsigned i=0; i<m_SubActors.size(); i++ )
|
||||||
{
|
{
|
||||||
Actor* pActor = m_SubActors[i];
|
Actor* pActor = m_SubActors[i];
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ void Screen::Init()
|
|||||||
|
|
||||||
ActorUtil::LoadAllCommandsFromName( *this, m_sName, "Screen" );
|
ActorUtil::LoadAllCommandsFromName( *this, m_sName, "Screen" );
|
||||||
|
|
||||||
this->PlayCommand( "Init" );
|
PlayCommandNoRecurse( Message("Init") );
|
||||||
|
|
||||||
vector<RString> asList;
|
vector<RString> asList;
|
||||||
split( PREPARE_SCREENS, ",", asList );
|
split( PREPARE_SCREENS, ",", asList );
|
||||||
|
|||||||
Reference in New Issue
Block a user