From f771ca9730a1dffedd1c5d269aa05609cf0da9ed Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Thu, 17 Feb 2005 21:35:45 +0000 Subject: [PATCH] add Lua methods --- stepmania/src/PrefsManager.cpp | 36 ++++++++++++++++++++++++++++++++++ stepmania/src/PrefsManager.h | 3 +++ 2 files changed, 39 insertions(+) diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index e625d9ce01..1056963992 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -819,6 +819,42 @@ void PrefsManager::SaveGlobalPrefsToDisk() const ini.WriteFile( STEPMANIA_INI_PATH ); } + +// lua start +#include "LuaBinding.h" + +template +class LunaPrefsManager : public Luna +{ +public: + LunaPrefsManager() { LUA->Register( Register ); } + + static int GetEventMode( T* p, lua_State *L ) { lua_pushboolean(L, p->m_bEventMode ); return 1; } + static int SetEventMode( T* p, lua_State *L ) { p->m_bEventMode = BArg(1); return 0; } + + static void Register(lua_State *L) + { + ADD_METHOD( GetEventMode ) + ADD_METHOD( SetEventMode ) + Luna::Register( L ); + + // Add global singleton if constructed already. If it's not constructed yet, + // then we'll register it later when we reinit Lua just before + // initializing the display. + if( PREFSMAN ) + { + lua_pushstring(L, "PREFSMAN"); + PREFSMAN->PushSelf( LUA->L ); + lua_settable(L, LUA_GLOBALSINDEX); + } + } +}; + +LUA_REGISTER_CLASS( PrefsManager ) +// lua end + + + CoinMode PrefsManager::GetCoinMode() { if( m_bEventMode && m_CoinMode == COIN_PAY ) diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 8f3a416f67..c432e9b9fd 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -304,6 +304,9 @@ public: static void Subscribe( IPreference *p ); static void Unsubscribe( IPreference *p ); + // Lua + void PushSelf( lua_State *L ); + protected: void ReadPrefsFromFile( CString sIni );