have ActorCommands push themself

This commit is contained in:
Glenn Maynard
2005-01-28 20:08:29 +00:00
parent c108dce357
commit b547efa5e7
3 changed files with 10 additions and 7 deletions
+1 -2
View File
@@ -677,8 +677,7 @@ void Actor::AddRotationR( float rot )
void Actor::RunCommands( const ActorCommands& cmds ) void Actor::RunCommands( const ActorCommands& cmds )
{ {
lua_pushstring(LUA->L, cmds.GetFunctionName()); // function name cmds.PushSelf( LUA->L );
lua_gettable(LUA->L, LUA_GLOBALSINDEX); // function to be called
this->PushSelf( LUA->L ); // 1st parameter this->PushSelf( LUA->L ); // 1st parameter
lua_call(LUA->L, 1, 0); // call function with 1 argument and 0 results lua_call(LUA->L, 1, 0); // call function with 1 argument and 0 results
} }
+6 -3
View File
@@ -35,7 +35,7 @@ ActorCommands::ActorCommands( const ActorCommands& cpy )
* the function by reference, so we don't make a new function unless we're actually * the function by reference, so we don't make a new function unless we're actually
* changed. */ * changed. */
ostringstream s; ostringstream s;
s << m_sLuaFunctionName << " = " << cpy.GetFunctionName(); s << m_sLuaFunctionName << " = " << cpy.m_sLuaFunctionName;
CString s2 = s.str(); CString s2 = s.str();
LUA->RunScript( s2 ); LUA->RunScript( s2 );
@@ -50,9 +50,12 @@ ActorCommands &ActorCommands::operator=( const ActorCommands& cpy )
return *this; return *this;
} }
CString ActorCommands::GetFunctionName() const void ActorCommands::PushSelf( lua_State *L ) const
{ {
return m_sLuaFunctionName; lua_pushstring( L, m_sLuaFunctionName ); // function name
lua_gettable( L, LUA_GLOBALSINDEX ); // function to be called
ASSERT_M( !lua_isnil(L, -1), m_sLuaFunctionName.c_str() )
} }
void ActorCommands::Register( const Commands& cmds ) void ActorCommands::Register( const Commands& cmds )
+3 -2
View File
@@ -6,6 +6,8 @@
#include "RageUtil_AutoPtr.h" #include "RageUtil_AutoPtr.h"
class Commands; class Commands;
struct lua_State;
class ActorCommands class ActorCommands
{ {
public: public:
@@ -14,8 +16,7 @@ public:
ActorCommands( const ActorCommands& cpy ); ActorCommands( const ActorCommands& cpy );
ActorCommands &operator=( const ActorCommands& cpy ); ActorCommands &operator=( const ActorCommands& cpy );
void PushSelf( lua_State *L ) const;
CString GetFunctionName() const;
private: private:
void Register( const Commands& cmds ); void Register( const Commands& cmds );