From 1a75a8cba53123b645c03d75783eaaafb183c5ad Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 15 Feb 2005 23:13:18 +0000 Subject: [PATCH] add Lua methods --- stepmania/src/Profile.cpp | 34 ++++++++++++++++++++++++++++++-- stepmania/src/Profile.h | 9 +++++++-- stepmania/src/ProfileManager.cpp | 4 +++- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/stepmania/src/Profile.cpp b/stepmania/src/Profile.cpp index ae02507534..6c5416ffaa 100644 --- a/stepmania/src/Profile.cpp +++ b/stepmania/src/Profile.cpp @@ -164,14 +164,19 @@ CString Profile::GetDisplayTotalCaloriesBurned() const CString Profile::GetDisplayTotalCaloriesBurnedToday() const { - DateTime now = DateTime::GetNowDate(); - float fCals = GetCaloriesBurnedForDay(now); + float fCals = GetCaloriesBurnedToday(); if( m_iWeightPounds == 0 ) // weight not entered return "N/A"; else return FormatCalories( fCals ); } +float Profile::GetCaloriesBurnedToday() const +{ + DateTime now = DateTime::GetNowDate(); + return GetCaloriesBurnedForDay(now); +} + int Profile::GetTotalNumSongsPlayed() const { int iTotal = 0; @@ -1641,6 +1646,31 @@ bool Profile::CreateNewProfile( CString sProfileDir, CString sName ) return bResult; } + +// lua start +#include "LuaBinding.h" + +template +class LunaProfile : public Luna +{ +public: + LunaProfile() { LUA->Register( Register ); } + + static int GetGoalCalories( T* p, lua_State *L ) { lua_pushnumber(L, p->m_iGoalCalories ); return 1; } + static int GetCaloriesBurnedToday( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCaloriesBurnedToday() ); return 1; } + + static void Register(lua_State *L) + { + ADD_METHOD( GetGoalCalories ) + ADD_METHOD( GetCaloriesBurnedToday ) + Luna::Register( L ); + } +}; + +LUA_REGISTER_CLASS( Profile ) +// lua end + + /* * (c) 2001-2004 Chris Danford * All rights reserved. diff --git a/stepmania/src/Profile.h b/stepmania/src/Profile.h index c9988d37a6..9b64071368 100644 --- a/stepmania/src/Profile.h +++ b/stepmania/src/Profile.h @@ -16,6 +16,7 @@ #include "StyleUtil.h" // for StyleID struct XNode; +struct lua_State; // // Current file versions @@ -61,8 +62,9 @@ public: // smart accessors // CString GetDisplayName() const; - CString GetDisplayTotalCaloriesBurned() const; - CString GetDisplayTotalCaloriesBurnedToday() const; + CString GetDisplayTotalCaloriesBurned() const; // remove me and use Lua instead + CString GetDisplayTotalCaloriesBurnedToday() const; // remove me and use Lua instead + float GetCaloriesBurnedToday() const; int GetTotalNumSongsPlayed() const; int GetTotalNumSongsPassed() const; float GetSongsPossible( StepsType st, Difficulty dc ) const; @@ -299,6 +301,9 @@ public: static bool CreateNewProfile( CString sProfileDir, CString sName ); static void BackupToDir( CString sFromDir, CString sToDir ); + // Lua + void PushSelf( lua_State *L ); + private: const HighScoresForASong *GetHighScoresForASong( const SongID& songID ) const; const HighScoresForACourse *GetHighScoresForACourse( const CourseID& courseID ) const; diff --git a/stepmania/src/ProfileManager.cpp b/stepmania/src/ProfileManager.cpp index ff27fca132..ddba54345a 100644 --- a/stepmania/src/ProfileManager.cpp +++ b/stepmania/src/ProfileManager.cpp @@ -540,11 +540,13 @@ class LunaProfileManager : public Luna public: LunaProfileManager() { LUA->Register( Register ); } - static int IsUsingProfile( T* p, lua_State *L ) { lua_pushboolean(L, p->IsUsingProfile((PlayerNumber)IArg(1)) ); return 1; } + static int IsUsingProfile( T* p, lua_State *L ) { lua_pushboolean(L, p->IsUsingProfile((PlayerNumber)IArg(1)) ); return 1; } + static int GetProfile( T* p, lua_State *L ) { p->GetProfile((PlayerNumber)IArg(1))->PushSelf(L); return 1; } static void Register(lua_State *L) { ADD_METHOD( IsUsingProfile ) + ADD_METHOD( GetProfile ) Luna::Register( L ); // Add global singleton if constructed already. If it's not constructed yet,