From 2f3648d05c4aa637ee76c0813b8f5d36e1461469 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sat, 25 Jun 2005 03:30:20 +0000 Subject: [PATCH] Game bindings --- stepmania/src/Game.cpp | 19 +++++++++++++++++++ stepmania/src/Game.h | 6 ++++++ stepmania/src/GameState.cpp | 4 +++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/stepmania/src/Game.cpp b/stepmania/src/Game.cpp index d21fc9cbd4..9457b246fe 100644 --- a/stepmania/src/Game.cpp +++ b/stepmania/src/Game.cpp @@ -115,6 +115,25 @@ TapNoteScore Game::MapTapNoteScore( TapNoteScore tns ) const } } +// lua start +#include "LuaBinding.h" + +class LunaGame: public Luna +{ +public: + LunaGame() { LUA->Register( Register ); } + + static int GetName( T* p, lua_State *L ) { lua_pushstring( L, p->m_szName ); return 1; } + static void Register( Lua *L ) + { + ADD_METHOD( GetName ) + Luna::Register( L ); + } +}; + +LUA_REGISTER_CLASS( Game ) +// lua end + /* * (c) 2001-2002 Chris Danford * All rights reserved. diff --git a/stepmania/src/Game.h b/stepmania/src/Game.h index fba5e510cd..4e46589235 100644 --- a/stepmania/src/Game.h +++ b/stepmania/src/Game.h @@ -7,6 +7,7 @@ #include "MenuInput.h" #include "GameConstantsAndTypes.h" +struct lua_State; const int MAX_STYLES_PER_GAME = 10; @@ -61,6 +62,11 @@ public: TapNoteScore m_mapGreatTo; TapNoteScore m_mapGoodTo; TapNoteScore m_mapBooTo; + + // + // Lua + // + void PushSelf( lua_State *L ); }; #endif diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 44c7a6dad7..8adbcd2faf 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -1977,6 +1977,7 @@ void GameState::RevertSyncChanges() // lua start #include "LuaBinding.h" +#include "Game.h" class LunaGameState: public Luna { @@ -2099,7 +2100,7 @@ public: PlayerNumber pn = (PlayerNumber)IArg(1); lua_pushboolean(L, p->GetStageResult(pn)==RESULT_WIN); return 1; } - + static int GetCurrentGame( T* p, lua_State *L ) { const_cast(p->GetCurrentGame())->PushSelf( L ); return 1; } static void Register(lua_State *L) { ADD_METHOD( IsPlayerEnabled ) @@ -2148,6 +2149,7 @@ public: ADD_METHOD( GetPremium ) ADD_METHOD( IsSyncDataChanged ) ADD_METHOD( IsWinner ) + ADD_METHOD( GetCurrentGame ) Luna::Register( L );