From 80f250739923e197ea02c5de549f6597dc2281d6 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sat, 3 Feb 2007 23:00:16 +0000 Subject: [PATCH] Remove WheelIndex. Bind the m_WheelBaseItems instead. To tween each wheel item separately, do it in eg. WheelOnCommand, and iterate over the items. --- stepmania/src/WheelBase.cpp | 38 ++++++++++++++++++++++++++----------- stepmania/src/WheelBase.h | 4 ++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/stepmania/src/WheelBase.cpp b/stepmania/src/WheelBase.cpp index b1f1452c4e..ef7be2cb1b 100644 --- a/stepmania/src/WheelBase.cpp +++ b/stepmania/src/WheelBase.cpp @@ -502,17 +502,6 @@ void WheelBase::RebuildWheelItems( int iDist ) iLast = -iDist-1; } - Lua *L = LUA->Get(); - for( int i=0; i < (int) m_WheelBaseItems.size(); i++ ) - { - m_WheelBaseItems[i]->PushContext(L); - lua_pushstring( L, "WheelIndex" ); - lua_pushnumber( L, i ); - lua_settable( L, -3 ); - lua_pop( L, 1 ); - } - LUA->Release( L ); - for( int i=iFirst; i <= iLast; i++ ) { int iIndex = iFirstVisibleIndex + i; @@ -556,6 +545,33 @@ int WheelBase::FirstVisibleIndex() return iFirstVisibleIndex; } +// lua start +#include "LuaBinding.h" + +class LunaWheelBase: public Luna +{ +public: + static int GetWheelItem( T* p, lua_State *L ) + { + int iItem = IArg(1); + + WheelItemBase *pItem = p->GetWheelItem( iItem ); + if( pItem == NULL ) + luaL_error( L, "%i out of bounds", iItem ); + pItem->PushSelf( L ); + + return 1; + } + + LunaWheelBase() + { + ADD_METHOD( GetWheelItem ); + } +}; + +LUA_REGISTER_DERIVED_CLASS( WheelBase, ActorFrame ) +// lua end + /* * (c) 2001-2004 Chris Danford, Chris Gomez, Glenn Maynard, Josh Allen * All rights reserved. diff --git a/stepmania/src/WheelBase.h b/stepmania/src/WheelBase.h index 6acb30f23e..4308facf5a 100644 --- a/stepmania/src/WheelBase.h +++ b/stepmania/src/WheelBase.h @@ -45,6 +45,10 @@ public: bool IsEmpty() { return m_bEmpty; } WheelItemBaseData* GetItem(unsigned int index); WheelItemBaseData* LastSelected(); + WheelItemBase *GetWheelItem( int i ) { if( i < 0 || i >= (int) m_WheelBaseItems.size() ) return NULL; return m_WheelBaseItems[i]; } + + // Lua + void PushSelf( lua_State *L ); protected: void TweenOnScreenForSort();