From 6039378910bc3f31f4abf0ab50920895e093e566 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 11 Sep 2005 07:33:57 +0000 Subject: [PATCH] bind Banner. (useful instead of the higher level FadingBanner at times, since the sprite itself can be accessed) --- stepmania/src/Banner.cpp | 54 ++++++++++++++++++++++++++++++++++++++++ stepmania/src/Banner.h | 4 +++ 2 files changed, 58 insertions(+) diff --git a/stepmania/src/Banner.cpp b/stepmania/src/Banner.cpp index 65161a887d..c7ce85dedd 100644 --- a/stepmania/src/Banner.cpp +++ b/stepmania/src/Banner.cpp @@ -8,6 +8,9 @@ #include "Character.h" #include "ThemeMetric.h" #include "CharacterManager.h" +#include "ActorUtil.h" + +REGISTER_ACTOR_CLASS( Banner ) ThemeMetric SCROLL_RANDOM ("Banner","ScrollRandom"); ThemeMetric SCROLL_ROULETTE ("Banner","ScrollRoulette"); @@ -169,6 +172,57 @@ void Banner::LoadRandom() m_bScrolling = (bool)SCROLL_ROULETTE; } +// lua start +#include "LuaBinding.h" + +class LunaBanner: public Luna +{ +public: + LunaBanner() { LUA->Register( Register ); } + + static int scaletoclipped( T* p, lua_State *L ) { p->ScaleToClipped(FArg(1),FArg(2)); return 0; } + static int ScaleToClipped( T* p, lua_State *L ) { p->ScaleToClipped(FArg(1),FArg(2)); return 0; } + static int LoadFromSong( T* p, lua_State *L ) + { + if( lua_isnil(L,1) ) { p->LoadFromSong( NULL ); } + else { Song *pS = Luna::check(L,1); p->LoadFromSong( pS ); } + return 0; + } + static int LoadFromCourse( T* p, lua_State *L ) + { + if( lua_isnil(L,1) ) { p->LoadFromCourse( NULL ); } + else { Course *pC = Luna::check(L,1); p->LoadFromCourse( pC ); } + return 0; + } + static int LoadIconFromCharacter( T* p, lua_State *L ) + { + if( lua_isnil(L,1) ) { p->LoadIconFromCharacter( NULL ); } + else { Character *pC = Luna::check(L,1); p->LoadIconFromCharacter( pC ); } + return 0; + } + static int LoadCardFromCharacter( T* p, lua_State *L ) + { + if( lua_isnil(L,1) ) { p->LoadIconFromCharacter( NULL ); } + else { Character *pC = Luna::check(L,1); p->LoadIconFromCharacter( pC ); } + return 0; + } + + static void Register(lua_State *L) + { + ADD_METHOD( scaletoclipped ); + ADD_METHOD( ScaleToClipped ); + ADD_METHOD( LoadFromSong ); + ADD_METHOD( LoadFromCourse ); + ADD_METHOD( LoadIconFromCharacter ); + ADD_METHOD( LoadCardFromCharacter ); + + Luna::Register( L ); + } +}; + +LUA_REGISTER_DERIVED_CLASS( Banner, Sprite ) +// lua end + /* * (c) 2001-2004 Chris Danford diff --git a/stepmania/src/Banner.h b/stepmania/src/Banner.h index 13f277efe8..8f9b52c2ab 100644 --- a/stepmania/src/Banner.h +++ b/stepmania/src/Banner.h @@ -14,6 +14,7 @@ class Banner : public Sprite public: Banner(); virtual ~Banner() { } + virtual Actor *Copy() const; virtual bool Load( RageTextureID ID, bool bIsBanner=true ); @@ -37,6 +38,9 @@ public: bool IsScrolling() const { return m_bScrolling; } float ScrollingPercent() const { return m_fPercentScrolling; } + // Lua + void PushSelf( lua_State *L ); + protected: bool m_bScrolling; float m_fPercentScrolling;