From db86be45baaf6cfa26d7f9221f2407dd9a1096a5 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Wed, 16 Feb 2005 02:11:31 +0000 Subject: [PATCH] add Lua binding --- stepmania/src/PlayerStageStats.cpp | 22 ++++++++++++++++++++++ stepmania/src/PlayerStageStats.h | 5 +++++ stepmania/src/StageStats.cpp | 27 +++++++++++++++++++++++++++ stepmania/src/StageStats.h | 4 ++++ 4 files changed, 58 insertions(+) diff --git a/stepmania/src/PlayerStageStats.cpp b/stepmania/src/PlayerStageStats.cpp index cfb9d9f73e..8def417b7b 100644 --- a/stepmania/src/PlayerStageStats.cpp +++ b/stepmania/src/PlayerStageStats.cpp @@ -377,6 +377,28 @@ float PlayerStageStats::GetPercentageOfTaps( TapNoteScore tns ) const } +// lua start +#include "LuaBinding.h" + +template +class LunaPlayerStageStats : public Luna +{ +public: + LunaPlayerStageStats() { LUA->Register( Register ); } + + static int GetCaloriesBurned( T* p, lua_State *L ) { lua_pushnumber(L, p->fCaloriesBurned ); return 1; } + + static void Register(lua_State *L) + { + ADD_METHOD( GetCaloriesBurned ) + Luna::Register( L ); + } +}; + +LUA_REGISTER_CLASS( PlayerStageStats ) +// lua end + + /* * (c) 2001-2004 Chris Danford, Glenn Maynard * All rights reserved. diff --git a/stepmania/src/PlayerStageStats.h b/stepmania/src/PlayerStageStats.h index 1ff5d904f7..9c1df65d4b 100644 --- a/stepmania/src/PlayerStageStats.h +++ b/stepmania/src/PlayerStageStats.h @@ -7,6 +7,8 @@ #include "RadarValues.h" #include class Steps; +struct lua_State; + struct PlayerStageStats { @@ -88,6 +90,9 @@ struct PlayerStageStats float GetPercentageOfTaps( TapNoteScore tns ) const; void UpdateComboList( float fSecond, bool rollover ); Combo_t GetMaxCombo() const; + + // Lua + void PushSelf( lua_State *L ); }; diff --git a/stepmania/src/StageStats.cpp b/stepmania/src/StageStats.cpp index e113633128..a40df1468f 100644 --- a/stepmania/src/StageStats.cpp +++ b/stepmania/src/StageStats.cpp @@ -81,6 +81,33 @@ bool StageStats::AllFailedEarlier() const return true; } + +// lua start +#include "LuaBinding.h" + +template +class LunaStageStats : public Luna +{ +public: + LunaStageStats() { LUA->Register( Register ); } + + static int GetPlayerStageStats( T* p, lua_State *L ) { p->m_player[IArg(1)].PushSelf(L); return 1; } + + static void Register(lua_State *L) + { + ADD_METHOD( GetPlayerStageStats ) + Luna::Register( L ); + } +}; + +LUA_REGISTER_CLASS( StageStats ) +// lua end + + +// +// Old Lua +// + static Grade GetBestGrade() { Grade g = NUM_GRADES; diff --git a/stepmania/src/StageStats.h b/stepmania/src/StageStats.h index 0fc2ca3bbb..a5e5d63fdf 100644 --- a/stepmania/src/StageStats.h +++ b/stepmania/src/StageStats.h @@ -7,6 +7,7 @@ #include "PlayerStageStats.h" class Song; class Style; +struct lua_State; struct StageStats @@ -31,6 +32,9 @@ struct StageStats float fGameplaySeconds; // how many seconds before gameplay ended. Updated by Gameplay, not scaled by music rate. PlayerStageStats m_player[NUM_PLAYERS]; + + // Lua + void PushSelf( lua_State *L ); }; /*