diff --git a/src/TimingData.cpp b/src/TimingData.cpp index 2a57ced921..2ddf0f5fef 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -1332,40 +1332,193 @@ void TimingSegmentSetToLuaTable(TimingData* td, TimingSegmentType tst, lua_State class LunaTimingData: public Luna { public: - static int HasStops( T* p, lua_State *L ) { lua_pushboolean(L, p->HasStops()); return 1; } - static int HasDelays( T* p, lua_State *L ) { lua_pushboolean(L, p->HasDelays()); return 1; } - static int HasBPMChanges( T* p, lua_State *L ) { lua_pushboolean(L, p->HasBpmChanges()); return 1; } - static int HasWarps( T* p, lua_State *L ) { lua_pushboolean(L, p->HasWarps()); return 1; } - static int HasFakes( T* p, lua_State *L ) { lua_pushboolean(L, p->HasFakes()); return 1; } - static int HasSpeedChanges( T* p, lua_State *L ) { lua_pushboolean(L, p->HasSpeedChanges()); return 1; } - static int HasScrollChanges( T* p, lua_State *L ) { lua_pushboolean(L, p->HasScrollChanges()); return 1; } -#define GET_FUNCTION(get_name, segment_name) \ - static int get_name(T* p, lua_State* L) \ - { \ - if(lua_toboolean(L, 1)) \ - { \ - TimingSegmentSetToLuaTable(p, segment_name, L); \ - } \ - else \ - { \ - LuaHelpers::CreateTableFromArray(p->ToVectorString(segment_name), L); \ - } \ - return 1; \ + + static int HasStops(T* p, lua_State* L) + { + lua_pushboolean(L, p->HasStops()); + return 1; } - GET_FUNCTION(GetWarps, SEGMENT_WARP); - GET_FUNCTION(GetFakes, SEGMENT_FAKE); - GET_FUNCTION(GetScrolls, SEGMENT_SCROLL); - GET_FUNCTION(GetSpeeds, SEGMENT_SPEED); - GET_FUNCTION(GetTimeSignatures, SEGMENT_TIME_SIG); - GET_FUNCTION(GetCombos, SEGMENT_COMBO); - GET_FUNCTION(GetTickcounts, SEGMENT_TICKCOUNT); - GET_FUNCTION(GetStops, SEGMENT_STOP); - GET_FUNCTION(GetDelays, SEGMENT_DELAY); - GET_FUNCTION(GetLabels, SEGMENT_LABEL); - GET_FUNCTION(GetBPMsAndTimes, SEGMENT_BPM); -#undef GET_FUNCTION - static int GetBPMs( T* p, lua_State *L ) + static int HasDelays(T* p, lua_State* L) + { + lua_pushboolean(L, p->HasDelays()); + return 1; + } + + static int HasBPMChanges(T* p, lua_State* L) + { + lua_pushboolean(L, p->HasBpmChanges()); + return 1; + } + + static int HasWarps(T* p, lua_State* L) + { + lua_pushboolean(L, p->HasWarps()); + return 1; + } + + static int HasFakes(T* p, lua_State* L) + { + lua_pushboolean(L, p->HasFakes()); + return 1; + } + + static int HasSpeedChanges(T* p, lua_State* L) + { + lua_pushboolean(L, p->HasSpeedChanges()); + return 1; + } + + static int HasScrollChanges(T* p, lua_State* L) + { + lua_pushboolean(L, p->HasScrollChanges()); + return 1; + } + + static int GetWarps(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_WARP, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_WARP), L); + } + return 1; + } + + static int GetFakes(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_FAKE, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_FAKE), L); + } + return 1; + } + + static int GetScrolls(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_SCROLL, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_SCROLL), L); + } + return 1; + } + + static int GetSpeeds(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_SPEED, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_SPEED), L); + } + return 1; + } + + static int GetTimeSignatures(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_TIME_SIG, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_TIME_SIG), L); + } + return 1; + } + + static int GetCombos(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_COMBO, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_COMBO), L); + } + return 1; + } + + static int GetTickcounts(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_TICKCOUNT, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_TICKCOUNT), L); + } + return 1; + } + + static int GetStops(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_STOP, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_STOP), L); + } + return 1; + } + + static int GetDelays(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_DELAY, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_DELAY), L); + } + return 1; + } + + static int GetLabels(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_LABEL, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_LABEL), L); + } + return 1; + } + + static int GetBPMsAndTimes(T* p, lua_State* L) + { + if (lua_toboolean(L, 1)) + { + TimingSegmentSetToLuaTable(p, SEGMENT_BPM, L); + } + else + { + LuaHelpers::CreateTableFromArray(p->ToVectorString(SEGMENT_BPM), L); + } + return 1; + } + + static int GetBPMs(T* p, lua_State* L) { std::vector vBPMs; const std::vector &bpms = p->GetTimingSegments(SEGMENT_BPM);