From 8da09ebd6eb9507376900d552fd9be8b2cc59276 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Thu, 17 Feb 2005 07:32:21 +0000 Subject: [PATCH] let each file register its own constants with Lua --- stepmania/src/LuaManager.h | 5 +++++ stepmania/src/PlayerNumber.cpp | 8 ++++++++ stepmania/src/ThemeManager.cpp | 2 -- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/stepmania/src/LuaManager.h b/stepmania/src/LuaManager.h index fbc7a05e42..131a22250a 100644 --- a/stepmania/src/LuaManager.h +++ b/stepmania/src/LuaManager.h @@ -4,6 +4,7 @@ struct lua_State; typedef void (*RegisterWithLuaFn)(lua_State*); + class LuaManager { public: @@ -69,6 +70,10 @@ public: extern LuaManager *LUA; +#define REGISTER_WITH_LUA_FUNCTION( Fn ) \ + class Register##Fn { public: Register##Fn() { LuaManager::Register( Fn ); } }; \ + static Register##Fn register##Fn; + #endif /* diff --git a/stepmania/src/PlayerNumber.cpp b/stepmania/src/PlayerNumber.cpp index c317c98def..77ae52e391 100644 --- a/stepmania/src/PlayerNumber.cpp +++ b/stepmania/src/PlayerNumber.cpp @@ -3,8 +3,16 @@ #include "ThemeManager.h" #include "GameState.h" #include "CommonMetrics.h" +#include "LuaManager.h" +void LuaPlayerNumber(lua_State* L) +{ + FOREACH_PlayerNumber( pn ) + LUA->SetGlobal( ssprintf("PLAYER_%d",pn+1), pn ); +} +REGISTER_WITH_LUA_FUNCTION( LuaPlayerNumber ); + PlayerNumber GetNextHumanPlayer( PlayerNumber pn ) { for( PlayerNumber p=(PlayerNumber)(pn+1); pSetGlobal( "SCREEN_BOTTOM", (int) SCREEN_BOTTOM ); LUA->SetGlobal( "SCREEN_CENTER_X", (int) SCREEN_CENTER_X ); LUA->SetGlobal( "SCREEN_CENTER_Y", (int) SCREEN_CENTER_Y ); - FOREACH_PlayerNumber( pn ) - LUA->SetGlobal( ssprintf("PLAYER_%d",pn+1), pn ); /* Run all script files in Lua for all themes. Start from the deepest fallback * theme and work outwards. */