From f5021b3ae25075d0332bd16f1ffe1eeb96a9be4c Mon Sep 17 00:00:00 2001 From: MinaciousGrace Date: Sat, 13 May 2017 18:28:02 -0400 Subject: [PATCH] just make charts available to lua rather than only the playlist --- src/SongManager.cpp | 44 +++++++++++++++++++++++++++++++++++++++++++- src/SongManager.h | 3 +++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/SongManager.cpp b/src/SongManager.cpp index 7a7b3ccae5..d919e3764b 100644 --- a/src/SongManager.cpp +++ b/src/SongManager.cpp @@ -156,6 +156,7 @@ void Chart::FromKey(const string& ck) { songptr = song; stepsptr = steps; LOG->Trace(songptr->GetDisplayMainTitle()); + return; } loaded = false; } @@ -1478,7 +1479,6 @@ class LunaSongManager: public Luna LUA_REGISTER_CLASS( SongManager ) -/** @brief Allow Lua to have access to the SongManager. */ class LunaPlaylist : public Luna { public: @@ -1488,6 +1488,17 @@ class LunaPlaylist : public Luna LuaHelpers::CreateTableFromArray(keys, L); return 1; } + + static int GetChartlistActual(T* p, lua_State *L) + { + lua_newtable(L); + for (size_t i = 0; i < p->chartlist.size(); ++i) + { + p->chartlist[i].PushSelf(L); + lua_rawseti(L, -2, i + 1); + } + return 1; + } static int GetRatelist(T* p, lua_State *L) { @@ -1539,6 +1550,7 @@ class LunaPlaylist : public Luna { ADD_METHOD(AddChart); ADD_METHOD(GetChartlist); + ADD_METHOD(GetChartlistActual); ADD_METHOD(GetNumCharts); ADD_METHOD(GetRatelist); ADD_METHOD(GetName); @@ -1549,6 +1561,36 @@ class LunaPlaylist : public Luna }; LUA_REGISTER_CLASS(Playlist) + + +class LunaChart : public Luna +{ +public: + DEFINE_METHOD(GetRate, rate); + DEFINE_METHOD(IsLoaded, IsLoaded()); + DEFINE_METHOD(GetDifficulty, lastdiff); + DEFINE_METHOD(GetSongTitle, lastsong); + DEFINE_METHOD(GetPackName, lastpack); + + static int ChangeRate(T* p, lua_State *L) + { + p->rate += FArg(1); + CLAMP(p->rate, 0.7f, 3.f); + return 1; + } + + LunaChart() + { + ADD_METHOD(GetRate); + ADD_METHOD(ChangeRate); + ADD_METHOD(GetDifficulty); + ADD_METHOD(GetSongTitle); + ADD_METHOD(GetPackName); + ADD_METHOD(IsLoaded); + } +}; + +LUA_REGISTER_CLASS(Chart) // lua end /* diff --git a/src/SongManager.h b/src/SongManager.h index fc648e8da0..10fcfbe119 100644 --- a/src/SongManager.h +++ b/src/SongManager.h @@ -39,10 +39,13 @@ struct Chart { Song* songptr; Steps* stepsptr; + bool IsLoaded() { return loaded; } + bool loaded = false; void FromKey(const string& ck); XNode * CreateNode() const; void LoadFromNode(const XNode * node); + void PushSelf(lua_State *L); }; struct Playlist {