This commit is contained in:
Glenn Maynard
2007-03-14 04:26:32 +00:00
parent 0198161675
commit d50f66373a
5 changed files with 86 additions and 1 deletions
+23
View File
@@ -405,6 +405,29 @@ public:
};
LUA_REGISTER_CLASS( HighScore )
class LunaHighScoreList: public Luna<HighScoreList>
{
public:
static int GetHighScores( T* p, lua_State *L )
{
lua_newtable(L);
for( int i = 0; i < (int) p->vHighScores.size(); ++i )
{
p->vHighScores[i].PushSelf(L);
lua_rawseti( L, -2, i+1 );
}
return 1;
}
LunaHighScoreList()
{
ADD_METHOD( GetHighScores );
}
};
LUA_REGISTER_CLASS( HighScoreList )
// lua end
/*
+4
View File
@@ -97,6 +97,10 @@ public:
vector<HighScore> vHighScores;
Grade HighGrade;
// Lua
void PushSelf( lua_State *L );
private:
int iNumTimesPlayed;
DateTime dtLastPlayed; // meaningless if iNumTimesPlayed == 0
+24
View File
@@ -1952,6 +1952,29 @@ class LunaProfile: public Luna<Profile>
{
public:
static int GetDisplayName( T* p, lua_State *L ) { lua_pushstring(L, p->m_sDisplayName ); return 1; }
static int GetHighScoreList( T* p, lua_State *L )
{
if( LuaBinding::CheckLuaObjectType(L, 1, "Song") )
{
const Song *pSong = Luna<Song>::check(L,1);
const Steps *pSteps = Luna<Steps>::check(L,2);
HighScoreList &hsl = p->GetStepsHighScoreList( pSong, pSteps );
hsl.PushSelf( L );
return 1;
}
else if( LuaBinding::CheckLuaObjectType(L, 1, "Course") )
{
const Course *pCourse = Luna<Course>::check(L,1);
const Trail *pTrail = Luna<Trail>::check(L,2);
HighScoreList &hsl = p->GetCourseHighScoreList( pCourse, pTrail );
hsl.PushSelf( L );
return 1;
}
luaL_typerror( L, 1, "Song or Course" );
return 0;
}
static int GetCharacter( T* p, lua_State *L ) { p->GetCharacter()->PushSelf(L); return 1; }
static int GetWeightPounds( T* p, lua_State *L ) { lua_pushnumber(L, p->m_iWeightPounds ); return 1; }
static int SetWeightPounds( T* p, lua_State *L ) { p->m_iWeightPounds = IArg(1); return 0; }
@@ -2013,6 +2036,7 @@ public:
LunaProfile()
{
ADD_METHOD( GetDisplayName );
ADD_METHOD( GetHighScoreList );
ADD_METHOD( GetCharacter );
ADD_METHOD( GetWeightPounds );
ADD_METHOD( SetWeightPounds );
+23
View File
@@ -272,6 +272,27 @@ class LunaStageStats: public Luna<StageStats>
public:
static int GetPlayerStageStats( T* p, lua_State *L ) { p->m_player[Enum::Check<PlayerNumber>(L, 1)].PushSelf(L); return 1; }
static int GetMultiPlayerStageStats( T* p, lua_State *L ) { p->m_multiPlayer[Enum::Check<MultiPlayer>(L, 1)].PushSelf(L); return 1; }
static int GetPlayedSongs( T* p, lua_State *L )
{
lua_newtable(L);
for( int i = 0; i < (int) p->m_vpPlayedSongs.size(); ++i )
{
p->m_vpPlayedSongs[i]->PushSelf(L);
lua_rawseti( L, -2, i+1 );
}
return 1;
}
static int GetPossibleSongs( T* p, lua_State *L )
{
lua_newtable(L);
for( int i = 0; i < (int) p->m_vpPossibleSongs.size(); ++i )
{
p->m_vpPossibleSongs[i]->PushSelf(L);
lua_rawseti( L, -2, i+1 );
}
return 1;
}
static int GetGameplaySeconds( T* p, lua_State *L ) { lua_pushnumber(L, p->m_fGameplaySeconds); return 1; }
static int OnePassed( T* p, lua_State *L ) { lua_pushboolean(L, p->OnePassed()); return 1; }
static int AllFailed( T* p, lua_State *L ) { lua_pushboolean(L, p->AllFailed()); return 1; }
@@ -280,6 +301,8 @@ public:
{
ADD_METHOD( GetPlayerStageStats );
ADD_METHOD( GetMultiPlayerStageStats );
ADD_METHOD( GetPlayedSongs );
ADD_METHOD( GetPossibleSongs );
ADD_METHOD( GetGameplaySeconds );
ADD_METHOD( OnePassed );
ADD_METHOD( AllFailed );
+12 -1
View File
@@ -218,8 +218,18 @@ class LunaStatsManager: public Luna<StatsManager>
{
public:
static int GetCurStageStats( T* p, lua_State *L ) { p->m_CurStageStats.PushSelf(L); return 1; }
static int GetAccumPlayedStageStats( T* p, lua_State *L ) { p->GetAccumPlayedStageStats().PushSelf(L); return 1; }
static int GetPlayedStageStats( T* p, lua_State *L )
{
int iAgo = IArg(1);
int iIndex = p->m_vPlayedStageStats.size() - iAgo;
if( iIndex < 0 || iIndex >= (int) p->m_vPlayedStageStats.size() )
return 0;
p->m_vPlayedStageStats[iIndex].PushSelf(L);
return 1;
}
static int Reset( T* p, lua_State *L ) { p->Reset(); return 0; }
static int GetAccumPlayedStageStats( T* p, lua_State *L ) { p->GetAccumPlayedStageStats().PushSelf(L); return 1; }
static int GetFinalGrade( T* p, lua_State *L )
{
PlayerNumber pn = Enum::Check<PlayerNumber>(L, 1);
@@ -285,6 +295,7 @@ public:
LunaStatsManager()
{
ADD_METHOD( GetCurStageStats );
ADD_METHOD( GetPlayedStageStats );
ADD_METHOD( GetAccumPlayedStageStats );
ADD_METHOD( Reset );
ADD_METHOD( GetFinalGrade );