This commit is contained in:
Glenn Maynard
2007-04-07 23:41:10 +00:00
parent 7e393eb1cc
commit ae2d2f7f88
2 changed files with 84 additions and 8 deletions
+74 -4
View File
@@ -7,7 +7,42 @@
#include "RageTextureManager.h" #include "RageTextureManager.h"
#include "ActorUtil.h" #include "ActorUtil.h"
#include "ThemeMetric.h" #include "ThemeMetric.h"
#include "XmlFile.h"
REGISTER_ACTOR_CLASS( TextBanner )
void TextBanner::LoadFromNode( const XNode* pNode )
{
m_bInitted = true;
{
const XNode *pTitleNode = pNode->GetChild( "Title" );
if( pTitleNode == NULL )
RageException::Throw( "%s: TextBanner: missing the Title child", ActorUtil::GetWhere(pNode).c_str() );
m_textTitle.LoadFromNode( pTitleNode );
this->AddChild( &m_textTitle );
}
{
const XNode *pSubtitleNode = pNode->GetChild( "Subtitle" );
if( pSubtitleNode == NULL )
RageException::Throw( "%s: TextBanner: missing the Subtitle child", ActorUtil::GetWhere(pNode).c_str() );
m_textSubTitle.LoadFromNode( pSubtitleNode );
this->AddChild( &m_textSubTitle );
}
{
const XNode *pArtistNode = pNode->GetChild( "Artist" );
if( pArtistNode == NULL )
RageException::Throw( "%s: TextBanner: missing the Artist child", ActorUtil::GetWhere(pNode).c_str() );
m_textArtist.LoadFromNode( pArtistNode );
this->AddChild( &m_textArtist );
}
pNode->GetAttrValue( "ArtistPrependString", m_sArtistPrependString );
ActorFrame::LoadFromNode( pNode );
}
void TextBanner::Load( RString sType ) void TextBanner::Load( RString sType )
{ {
@@ -26,7 +61,7 @@ void TextBanner::Load( RString sType )
this->AddChild( &m_textArtist ); this->AddChild( &m_textArtist );
AddCommand( "Set", THEME->GetMetricA(sType,"SetCommand") ); AddCommand( "Set", THEME->GetMetricA(sType,"SetCommand") );
ARTIST_PREPEND_STRING .Load(sType,"ArtistPrependString"); m_sArtistPrependString = THEME->GetMetricB(sType,"ArtistPrependString");
ActorUtil::LoadAllCommandsAndSetXYAndOnCommand( m_textTitle, sType ); ActorUtil::LoadAllCommandsAndSetXYAndOnCommand( m_textTitle, sType );
ActorUtil::LoadAllCommandsAndSetXYAndOnCommand( m_textSubTitle, sType ); ActorUtil::LoadAllCommandsAndSetXYAndOnCommand( m_textSubTitle, sType );
@@ -44,7 +79,7 @@ TextBanner::TextBanner( const TextBanner &cpy ):
m_textTitle( cpy.m_textTitle ), m_textTitle( cpy.m_textTitle ),
m_textSubTitle( cpy.m_textSubTitle ), m_textSubTitle( cpy.m_textSubTitle ),
m_textArtist( cpy.m_textArtist ), m_textArtist( cpy.m_textArtist ),
ARTIST_PREPEND_STRING( cpy.ARTIST_PREPEND_STRING ) m_sArtistPrependString( cpy.m_sArtistPrependString )
{ {
this->AddChild( &m_textTitle ); this->AddChild( &m_textTitle );
this->AddChild( &m_textSubTitle ); this->AddChild( &m_textSubTitle );
@@ -88,8 +123,8 @@ void TextBanner::LoadFromSong( Song* pSong )
RString sTranslitTitle = pSong ? pSong->GetTranslitMainTitle() : RString(""); RString sTranslitTitle = pSong ? pSong->GetTranslitMainTitle() : RString("");
RString sDisplaySubTitle = pSong ? pSong->GetDisplaySubTitle() : RString(""); RString sDisplaySubTitle = pSong ? pSong->GetDisplaySubTitle() : RString("");
RString sTranslitSubTitle = pSong ? pSong->GetTranslitSubTitle() : RString(""); RString sTranslitSubTitle = pSong ? pSong->GetTranslitSubTitle() : RString("");
RString sDisplayArtist = pSong ? (RString)ARTIST_PREPEND_STRING + pSong->GetDisplayArtist() : RString(""); RString sDisplayArtist = pSong ? m_sArtistPrependString + pSong->GetDisplayArtist() : RString("");
RString sTranslitArtist = pSong ? (RString)ARTIST_PREPEND_STRING + pSong->GetTranslitArtist() : RString(""); RString sTranslitArtist = pSong ? m_sArtistPrependString + pSong->GetTranslitArtist() : RString("");
LoadInternal( LoadInternal(
pSong, pSong,
@@ -98,6 +133,41 @@ void TextBanner::LoadFromSong( Song* pSong )
sDisplayArtist, sTranslitArtist ); sDisplayArtist, sTranslitArtist );
} }
// lua start
#include "LuaBinding.h"
class LunaTextBanner: public Luna<TextBanner>
{
public:
static int LoadFromSong( T* p, lua_State *L )
{
Song *pSong = Luna<Song>::check(L,1);
p->LoadFromSong( pSong );
return 0;
}
static int LoadFromString( T* p, lua_State *L )
{
RString sDisplayTitle = SArg(1);
RString sTranslitTitle = SArg(2);
RString sDisplaySubTitle = SArg(3);
RString sTranslitSubTitle = SArg(4);
RString sDisplayArtist = SArg(5);
RString sTranslitArtist = SArg(6);
p->LoadFromString( sDisplayTitle, sTranslitTitle, sDisplaySubTitle, sTranslitSubTitle, sDisplayArtist, sTranslitArtist );
return 0;
}
LunaTextBanner()
{
ADD_METHOD( LoadFromSong );
ADD_METHOD( LoadFromString );
}
};
LUA_REGISTER_DERIVED_CLASS( TextBanner, ActorFrame )
// lua end
/* /*
* (c) 2001-2004 Chris Danford * (c) 2001-2004 Chris Danford
* All rights reserved. * All rights reserved.
+7 -1
View File
@@ -13,6 +13,9 @@ class TextBanner : public ActorFrame
public: public:
TextBanner(); TextBanner();
TextBanner( const TextBanner &cpy ); TextBanner( const TextBanner &cpy );
virtual TextBanner *Copy() const;
void LoadFromNode( const XNode* pNode );
void Load( RString sType ); // load metrics void Load( RString sType ); // load metrics
void LoadFromSong( Song *pSong ); void LoadFromSong( Song *pSong );
void LoadFromString( void LoadFromString(
@@ -20,6 +23,9 @@ public:
const RString &sDisplaySubTitle, const RString &sTranslitSubTitle, const RString &sDisplaySubTitle, const RString &sTranslitSubTitle,
const RString &sDisplayArtist, const RString &sTranslitArtist ); const RString &sDisplayArtist, const RString &sTranslitArtist );
// Lua
void PushSelf( lua_State *L );
private: private:
void LoadInternal( void LoadInternal(
Song *pSong, Song *pSong,
@@ -31,7 +37,7 @@ private:
BitmapText m_textTitle, m_textSubTitle, m_textArtist; BitmapText m_textTitle, m_textSubTitle, m_textArtist;
ThemeMetric<RString> ARTIST_PREPEND_STRING; RString m_sArtistPrependString;
}; };
#endif #endif