From c62e0cbf26a65b0f71099a61ea51377a4f8bf881 Mon Sep 17 00:00:00 2001 From: MinaciousGrace Date: Fri, 28 Apr 2017 14:36:33 -0400 Subject: [PATCH] give lua the ability to grab a table of all goals and put the stupid spaces back because they actually make things easier to read --- src/Profile.cpp | 48 +++++++++++++++++++++++++++++++++--------------- src/Profile.h | 1 + 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/Profile.cpp b/src/Profile.cpp index 5017dfa831..29a1f50f72 100644 --- a/src/Profile.cpp +++ b/src/Profile.cpp @@ -2354,7 +2354,7 @@ void Profile::LoadEttScoresFromNode(const XNode* pSongScores) { void Profile::CreateGoal(RString ck) { ScoreGoal goal; goal.timeassigned = DateTime::GetNowDateTime(); - //goal.rate = GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate; + goal.rate = GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate; goalmap[ck].emplace_back(goal); LOG->Trace("New goal created %i goals", goalmap[ck].size()); } @@ -3710,6 +3710,23 @@ class LunaProfile : public Luna return 1; } + static int GetAllGoals(T* p, lua_State *L) { + lua_newtable(L); + int idx = 0; + FOREACHM(RString, vector, p->goalmap, i) { + const RString &ck = i->first; + auto sgv = i->second; + FOREACH(ScoreGoal, sgv, sg) { + sg->PushSelf(L); + lua_rawseti(L, -2, idx + 1); + idx++; + } + + } + + return 1; + } + LunaProfile() { ADD_METHOD( AddScreenshot ); @@ -3791,7 +3808,8 @@ class LunaProfile : public Luna ADD_METHOD( RecalcTopSSR ); ADD_METHOD( GetPBHighScoreByKey ); ADD_METHOD( ValidateAllScores ); - ADD_METHOD( GetGoalByKey); + ADD_METHOD( GetGoalByKey ); + ADD_METHOD( GetAllGoals ); } }; @@ -3799,12 +3817,12 @@ LUA_REGISTER_CLASS( Profile ) class LunaScoreGoal : public Luna { public: - DEFINE_METHOD(GetRate, rate); - DEFINE_METHOD(GetPercent, percent); - DEFINE_METHOD(GetPriority, priority); - DEFINE_METHOD(IsAchieved, achieved); - DEFINE_METHOD(GetComment, comment); - DEFINE_METHOD(WhenAssigned, timeassigned.GetString()); + DEFINE_METHOD( GetRate, rate ); + DEFINE_METHOD( GetPercent, percent ); + DEFINE_METHOD( GetPriority, priority ); + DEFINE_METHOD( IsAchieved, achieved ); + DEFINE_METHOD( GetComment, comment ); + DEFINE_METHOD( WhenAssigned, timeassigned.GetString() ); static int WhenAchieved(T* p, lua_State *L) { if (p->achieved) @@ -3822,13 +3840,13 @@ class LunaScoreGoal : public Luna LunaScoreGoal() { - ADD_METHOD(GetRate); - ADD_METHOD(GetPercent); - ADD_METHOD(GetPriority); - ADD_METHOD(IsAchieved); - ADD_METHOD(GetComment); - ADD_METHOD(WhenAssigned); - ADD_METHOD(WhenAchieved); + ADD_METHOD( GetRate ); + ADD_METHOD( GetPercent ); + ADD_METHOD( GetPriority ); + ADD_METHOD( IsAchieved ); + ADD_METHOD( GetComment ); + ADD_METHOD( WhenAssigned ); + ADD_METHOD( WhenAchieved ); } }; LUA_REGISTER_CLASS(ScoreGoal) diff --git a/src/Profile.h b/src/Profile.h index 97969497a1..b28ed76b72 100644 --- a/src/Profile.h +++ b/src/Profile.h @@ -84,6 +84,7 @@ class ScoreGoal DateTime timeassigned; DateTime timeachieved; RString comment = ""; + RString chartkey = ""; XNode* CreateNode() const; void LoadFromNode(const XNode *pNode);