From 8f229918ee4c6c410dc500877a3e23535047b35c Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 28 Feb 2005 07:06:29 +0000 Subject: [PATCH] lua --- stepmania/src/ScreenManager.cpp | 31 +++++++++++++++++++++++++++++++ stepmania/src/ScreenManager.h | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 5b40cbe666..a4fbd9bf0f 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -641,6 +641,37 @@ void ScreenManager::PlaySharedBackgroundOffCommand() m_pSharedBGA->PlayCommand("Off"); } +// lua start +#include "LuaBinding.h" + +template +class LunaScreenManager: public Luna +{ +public: + LunaScreenManager() { LUA->Register( Register ); } + + static int SetNewScreen( T* p, lua_State *L ) { p->SetNewScreen( SArg(1) ); return 0; } + + static void Register(lua_State *L) + { + ADD_METHOD( SetNewScreen ) + 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( SCREENMAN ) + { + lua_pushstring(L, "SCREENMAN"); + SCREENMAN->PushSelf( LUA->L ); + lua_settable(L, LUA_GLOBALSINDEX); + } + } +}; + +LUA_REGISTER_CLASS( ScreenManager ) +// lua end + /* * (c) 2001-2003 Chris Danford, Glenn Maynard * All rights reserved. diff --git a/stepmania/src/ScreenManager.h b/stepmania/src/ScreenManager.h index c38427e9d5..eb76e1b96a 100644 --- a/stepmania/src/ScreenManager.h +++ b/stepmania/src/ScreenManager.h @@ -15,6 +15,7 @@ class Screen; struct Menu; class BGAnimation; +struct lua_State; typedef Screen* (*CreateScreenFn)(const CString& sClassName); @@ -62,6 +63,9 @@ public: Screen *GetTopScreen(); + // Lua + void PushSelf( lua_State *L ); + public: // // in draw order first to last