experiment: expose global singletons and their methods in Lua so we don't end up with tons of Lua function polluting the global namespace

This commit is contained in:
Chris Danford
2005-02-12 21:07:13 +00:00
parent 40c9e8fbe7
commit e31d0ce615
2 changed files with 42 additions and 0 deletions
+38
View File
@@ -1867,6 +1867,44 @@ bool PlayerIsUsingModifier( PlayerNumber pn, const CString sModifier )
return po == GAMESTATE->m_pPlayerState[pn]->m_PlayerOptions && so == GAMESTATE->m_SongOptions;
}
// lua start
#include "LuaBinding.h"
template<class T>
class LunaGameState : public Luna<T>
{
public:
LunaGameState() { LUA->Register( Register ); }
static int IsPlayerEnabled( T* p, lua_State *L ) { lua_pushboolean(L, p->IsPlayerEnabled((PlayerNumber)(IArg(1)-1)) ); return 1; }
static int IsHumanPlayer( T* p, lua_State *L ) { lua_pushboolean(L, p->IsHumanPlayer((PlayerNumber)(IArg(1)-1)) ); return 1; }
static int GetPlayerDisplayName( T* p, lua_State *L ) { lua_pushstring(L, p->GetPlayerDisplayName((PlayerNumber)(IArg(1)-1)) ); return 1; }
static void Register(lua_State *L)
{
ADD_METHOD( IsPlayerEnabled )
ADD_METHOD( IsHumanPlayer )
ADD_METHOD( GetPlayerDisplayName )
Luna<T>::Register( L );
// add global singleton
ASSERT( GAMESTATE );
lua_pushstring(L, "GAMESTATE");
GAMESTATE->PushSelf( LUA->L );
lua_settable(L, LUA_GLOBALSINDEX);
}
};
LUA_REGISTER_CLASS( GameState )
// lua end
#include "LuaFunctions.h"
LuaFunction_PlayerNumber( IsPlayerEnabled, GAMESTATE->IsPlayerEnabled(pn) )
LuaFunction_PlayerNumber( IsHumanPlayer, GAMESTATE->IsHumanPlayer(pn) )