From 982228b7e6039e06932d7c1084bb6494eff22b2e Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Wed, 27 Sep 2006 06:09:52 +0000 Subject: [PATCH] bind StepsType --- stepmania/src/Course.cpp | 2 +- stepmania/src/EnumHelper.h | 4 ++-- stepmania/src/GameConstantsAndTypes.cpp | 19 +++++++++++-------- stepmania/src/GameConstantsAndTypes.h | 1 + stepmania/src/GameManager.cpp | 2 +- stepmania/src/Profile.cpp | 18 +++++++++--------- stepmania/src/Song.cpp | 4 ++-- 7 files changed, 27 insertions(+), 23 deletions(-) diff --git a/stepmania/src/Course.cpp b/stepmania/src/Course.cpp index abc82d8660..0edb91d991 100644 --- a/stepmania/src/Course.cpp +++ b/stepmania/src/Course.cpp @@ -926,7 +926,7 @@ public: static int GetEstimatedNumStages( T* p, lua_State *L ) { lua_pushnumber(L, p->GetEstimatedNumStages() ); return 1; } static int GetTotalSeconds( T* p, lua_State *L ) { - StepsType st = (StepsType) IArg(1); + StepsType st = Enum::Check(L, 1); float fTotalSeconds; if( !p->GetTotalSeconds(st, fTotalSeconds) ) lua_pushnil( L ); diff --git a/stepmania/src/EnumHelper.h b/stepmania/src/EnumHelper.h index a9595cdef0..801b07e99e 100644 --- a/stepmania/src/EnumHelper.h +++ b/stepmania/src/EnumHelper.h @@ -130,7 +130,7 @@ static void Lua##X(lua_State* L) \ lua_newtable( L ); \ FOREACH_ENUM2( X, i ) \ { \ - RString s = X##Names[i]; \ + RString s = X##ToString( i ); \ lua_pushstring( L, (#X "_")+s ); \ lua_rawseti( L, -2, i+1 ); /* 1-based */ \ } \ @@ -141,7 +141,7 @@ static void Lua##X(lua_State* L) \ lua_newtable( L ); \ FOREACH_ENUM2( X, i ) \ { \ - RString s = X##Names[i]; \ + RString s = X##ToString( i ); \ lua_pushstring( L, (#X "_")+s ); \ lua_pushnumber( L, i ); /* 0-based */ \ lua_rawset( L, -3 ); \ diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index 6ef88047c3..08cebb6ccd 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -34,18 +34,21 @@ XToLocalizedString( RadarCategory ); LuaFunction( RadarCategoryToLocalizedString, RadarCategoryToLocalizedString(Enum::Check(L, 1)) ); LuaXType( RadarCategory ); -static void LuaStepsType(lua_State* L) +RString StepsTypeToString( Stage s ); +RString StepsTypeToString( StepsType st ) { - FOREACH_StepsType( st ) + RString s = GAMEMAN->StepsTypeToString( st ); + /* steps-type -> StepsType */ + s.Replace('-','_'); + for( size_t i = 0; i < s.size(); ++i ) { - RString s = GAMEMAN->StepsTypeToString( st ); - s.MakeUpper(); - s.Replace('-','_'); - LUA->SetGlobal( "STEPS_TYPE_"+s, st ); + if( i == 0 || (i > 0 && s[i-1] == '_') ) + s[i-1] = toupper( s[i-1] ); } - LUA->SetGlobal( "STEPS_TYPE_INVALID", StepsType_Invalid ); + return "StepsType_"+s; } -REGISTER_WITH_LUA_FUNCTION( LuaStepsType ); + +LuaXType( StepsType ); static const char *PlayModeNames[] = { diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 3732f552d3..4bd14bf662 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -73,6 +73,7 @@ enum StepsType StepsType_Invalid, }; #define FOREACH_StepsType( st ) FOREACH_ENUM2( StepsType, st ) +LuaDeclareType( StepsType ); // // Play mode stuff diff --git a/stepmania/src/GameManager.cpp b/stepmania/src/GameManager.cpp index 92a3854cb2..65d9a03c4f 100644 --- a/stepmania/src/GameManager.cpp +++ b/stepmania/src/GameManager.cpp @@ -2908,7 +2908,7 @@ class LunaGameManager: public Luna public: LunaGameManager() { LUA->Register( Register ); } - static int StepsTypeToLocalizedString( T* p, lua_State *L ) { lua_pushstring(L, p->StepsTypeToLocalizedString((StepsType)IArg(1)) ); return 1; } + static int StepsTypeToLocalizedString( T* p, lua_State *L ) { lua_pushstring(L, p->StepsTypeToLocalizedString(Enum::Check(L, 1)) ); return 1; } static int GetFirstStepsTypeForGame( T* p, lua_State *L ) { Game *pGame = Luna::check( L, 1 ); diff --git a/stepmania/src/Profile.cpp b/stepmania/src/Profile.cpp index 755b3c8d6b..476786eee2 100644 --- a/stepmania/src/Profile.cpp +++ b/stepmania/src/Profile.cpp @@ -1923,17 +1923,17 @@ public: static int GetCaloriesBurnedToday( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCaloriesBurnedToday() ); return 1; } static int GetTotalNumSongsPlayed( T* p, lua_State *L ) { lua_pushnumber(L, p->m_iNumTotalSongsPlayed ); return 1; } static int IsCodeUnlocked( T* p, lua_State *L ) { lua_pushboolean(L, p->IsCodeUnlocked(SArg(1)) ); return 1; } - static int GetSongsActual( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSongsActual((StepsType)IArg(1),Enum::Check(L, 2)) ); return 1; } - static int GetCoursesActual( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCoursesActual((StepsType)IArg(1),Enum::Check(L, 2)) ); return 1; } - static int GetSongsPossible( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSongsPossible((StepsType)IArg(1),Enum::Check(L, 2)) ); return 1; } - static int GetCoursesPossible( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCoursesPossible((StepsType)IArg(1),Enum::Check(L, 2)) ); return 1; } - static int GetSongsPercentComplete( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSongsPercentComplete((StepsType)IArg(1),Enum::Check(L, 2)) ); return 1; } - static int GetCoursesPercentComplete( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCoursesPercentComplete((StepsType)IArg(1),Enum::Check(L, 2)) ); return 1; } - static int GetTotalStepsWithTopGrade( T* p, lua_State *L ) { lua_pushnumber(L, p->GetTotalStepsWithTopGrade((StepsType)IArg(1),Enum::Check(L, 2),Enum::Check(L, 3)) ); return 1; } - static int GetTotalTrailsWithTopGrade( T* p, lua_State *L ) { lua_pushnumber(L, p->GetTotalTrailsWithTopGrade((StepsType)IArg(1),Enum::Check(L, 2),Enum::Check(L, 3)) ); return 1; } + static int GetSongsActual( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSongsActual(Enum::Check(L, 1),Enum::Check(L, 2)) ); return 1; } + static int GetCoursesActual( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCoursesActual(Enum::Check(L, 1),Enum::Check(L, 2)) ); return 1; } + static int GetSongsPossible( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSongsPossible(Enum::Check(L, 1),Enum::Check(L, 2)) ); return 1; } + static int GetCoursesPossible( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCoursesPossible(Enum::Check(L, 1),Enum::Check(L, 2)) ); return 1; } + static int GetSongsPercentComplete( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSongsPercentComplete(Enum::Check(L, 1),Enum::Check(L, 2)) ); return 1; } + static int GetCoursesPercentComplete( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCoursesPercentComplete(Enum::Check(L, 1),Enum::Check(L, 2)) ); return 1; } + static int GetTotalStepsWithTopGrade( T* p, lua_State *L ) { lua_pushnumber(L, p->GetTotalStepsWithTopGrade(Enum::Check(L, 1),Enum::Check(L, 2),Enum::Check(L, 3)) ); return 1; } + static int GetTotalTrailsWithTopGrade( T* p, lua_State *L ) { lua_pushnumber(L, p->GetTotalTrailsWithTopGrade(Enum::Check(L, 1),Enum::Check(L, 2),Enum::Check(L, 3)) ); return 1; } static int GetNumTotalSongsPlayed( T* p, lua_State *L ) { lua_pushnumber(L, p->m_iNumTotalSongsPlayed ); return 1; } static int GetLastPlayedStepsType( T* p, lua_State *L ) { lua_pushnumber(L, p->GetLastPlayedStepsType() ); return 1; } - static int GetSongsAndCoursesPercentCompleteAllDifficulties( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSongsAndCoursesPercentCompleteAllDifficulties((StepsType)IArg(1)) ); return 1; } + static int GetSongsAndCoursesPercentCompleteAllDifficulties( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSongsAndCoursesPercentCompleteAllDifficulties(Enum::Check(L, 1)) ); return 1; } static int GetTotalCaloriesBurned( T* p, lua_State *L ) { lua_pushnumber(L, p->m_fTotalCaloriesBurned ); return 1; } static int GetDisplayTotalCaloriesBurned( T* p, lua_State *L ) { lua_pushstring(L, p->GetDisplayTotalCaloriesBurned() ); return 1; } static int GetMostPopularSong( T* p, lua_State *L ) diff --git a/stepmania/src/Song.cpp b/stepmania/src/Song.cpp index d5fc72d459..4809621af8 100644 --- a/stepmania/src/Song.cpp +++ b/stepmania/src/Song.cpp @@ -1249,7 +1249,7 @@ public: } static int GetStepsByStepsType( T* p, lua_State *L ) { - StepsType st = (StepsType)IArg(1); + StepsType st = Enum::Check(L, 1); const vector &v = p->GetStepsByStepsType( st ); LuaHelpers::CreateTableFromArray( v, L ); return 1; @@ -1264,7 +1264,7 @@ public: static int IsMarathon( T* p, lua_State *L ) { lua_pushboolean(L, p->IsMarathon()); return 1; } static int HasStepsTypeAndDifficulty( T* p, lua_State *L ) { - StepsType st = (StepsType)IArg(1); + StepsType st = Enum::Check(L, 1); Difficulty dc = Enum::Check( L, 2 );