From df841ec9945525cf6e2aeb5d47bdb8552e30abe5 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 5 Jul 2005 06:31:45 +0000 Subject: [PATCH] LuaXType --- stepmania/src/EnumHelper.h | 22 ++++++++++++++++++++++ stepmania/src/GameConstantsAndTypes.cpp | 19 +------------------ stepmania/src/NoteTypes.cpp | 4 ++++ 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/stepmania/src/EnumHelper.h b/stepmania/src/EnumHelper.h index 8af84a2a8a..4373660c9b 100644 --- a/stepmania/src/EnumHelper.h +++ b/stepmania/src/EnumHelper.h @@ -72,6 +72,28 @@ static const CString EMPTY_STRING; return (X)(i+1); /*invalid*/ \ } +#define LuaXToString(X) \ +LuaFunction( X##ToString, X##ToString( (X) IArg(1) ) ); + +#define LuaStringToX(X) \ +LuaFunction( StringTo##X, (X) StringTo##X( SArg(1) ) ); + +#define LuaXType(X, CNT, Prefix) \ +static void Lua##X(lua_State* L) \ +{ \ + FOREACH_ENUM( X, CNT, i ) \ + { \ + CString s = X##Names[i]; \ + s.MakeUpper(); \ + LUA->SetGlobal( Prefix+s, i ); \ + } \ + CString sType = "NUM" #X "S" ; \ + sType.MakeUpper(); \ + LUA->SetGlobal( sType, CNT ); \ + LUA->SetGlobal( Prefix "INVALID", CNT+1 ); \ +} \ +REGISTER_WITH_LUA_FUNCTION( Lua##X ); + #endif /* diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index 0e241eeae0..52f1897548 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -11,12 +11,6 @@ #include #include "LuaFunctions.h" -#define LuaXToString(X) \ -LuaFunction( X##ToString, X##ToString( (X) IArg(1) ) ); - -#define LuaStringToX(X) \ -LuaFunction( StringTo##X, (X) StringTo##X( SArg(1) ) ); - const CString RANKING_TO_FILL_IN_MARKER[NUM_PLAYERS] = {"#P1#","#P2#"}; @@ -64,18 +58,7 @@ XToString( PlayMode, NUM_PLAY_MODES ); XToThemedString( PlayMode, NUM_PLAY_MODES ); StringToX( PlayMode ); LuaXToString( PlayMode ); -static void LuaPlayMode(lua_State* L) -{ - FOREACH_PlayMode( pm ) - { - CString s = PlayModeNames[pm]; - s.MakeUpper(); - LUA->SetGlobal( "PLAY_MODE_"+s, pm ); - } - LUA->SetGlobal( "NUM_PLAY_MODES", NUM_PLAY_MODES ); -} -REGISTER_WITH_LUA_FUNCTION( LuaPlayMode ); - +LuaXType( PlayMode, NUM_PLAY_MODES, "PLAY_MODE_" ) RankingCategory AverageMeterToRankingCategory( int iAverageMeter ) { diff --git a/stepmania/src/NoteTypes.cpp b/stepmania/src/NoteTypes.cpp index 22aed0a613..65aedc2a95 100644 --- a/stepmania/src/NoteTypes.cpp +++ b/stepmania/src/NoteTypes.cpp @@ -1,6 +1,8 @@ #include "global.h" #include "NoteTypes.h" #include "RageUtil.h" +#include "LuaManager.h" +#include "LuaFunctions.h" TapNote TAP_EMPTY ( TapNote::empty, TapNote::SubType_invalid, TapNote::original, "", 0, false, 0 ); TapNote TAP_ORIGINAL_TAP ( TapNote::tap, TapNote::SubType_invalid, TapNote::original, "", 0, false, 0 ); @@ -24,6 +26,8 @@ static const CString NoteTypeNames[] = { "192nd", }; XToString( NoteType, NUM_NOTE_TYPES ); +LuaXToString( NoteType ) +LuaXType( NoteType, NUM_NOTE_TYPES , "NOTE_TYPE_" ) float NoteTypeToBeat( NoteType nt ) {