From 78db0513dc8ba1c42ce6f06e3d6aaf806200e14b Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 4 Jan 2005 10:42:59 +0000 Subject: [PATCH] sClassName -> sScreenName load commands from .actor files --- stepmania/src/ActorUtil.cpp | 35 ++++++++++++++++++++++++++++++----- stepmania/src/ActorUtil.h | 24 ++++++++++++------------ 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/stepmania/src/ActorUtil.cpp b/stepmania/src/ActorUtil.cpp index 94d26b0af0..94c504b5d1 100644 --- a/stepmania/src/ActorUtil.cpp +++ b/stepmania/src/ActorUtil.cpp @@ -240,6 +240,31 @@ retry: if( layer.GetValue( "BaseZoomY", f ) ) pActor->SetBaseZoomY( f ); if( layer.GetValue( "BaseZoomZ", f ) ) pActor->SetBaseZoomZ( f ); + + // + // Load commands + // + for( IniKey::const_iterator i = layer.begin(); + i != layer.end(); ++i) + { + CString KeyName = i->first; /* "OnCommand" */ + KeyName.MakeLower(); + + if( KeyName.Right(7) != "command" ) + continue; /* not a command */ + + const CString &sCommands = i->second; + Commands cmds = ParseCommands( sCommands ); + CString sCmdName; + /* Special case: "Command=foo" -> "OnCommand=foo" */ + if( KeyName.size() == 7 ) + sCmdName="on"; + else + sCmdName = KeyName.Left( KeyName.size()-7 ); + pActor->AddCommands( sCmdName, cmds ); + } + + ASSERT( pActor ); // we should have filled this in above return pActor; } @@ -287,13 +312,13 @@ Actor* MakeActor( const RageTextureID &ID ) } } -void UtilSetXY( Actor& actor, const CString &sClassName ) +void UtilSetXY( Actor& actor, const CString &sScreenName ) { ASSERT( !actor.GetID().empty() ); - actor.SetXY( THEME->GetMetricF(sClassName,actor.GetID()+"X"), THEME->GetMetricF(sClassName,actor.GetID()+"Y") ); + actor.SetXY( THEME->GetMetricF(sScreenName,actor.GetID()+"X"), THEME->GetMetricF(sScreenName,actor.GetID()+"Y") ); } -void UtilCommand( Actor& actor, const CString &sClassName, const CString &sCommandName ) +void UtilCommand( Actor& actor, const CString &sScreenName, const CString &sCommandName ) { // If Actor is hidden, it won't get updated or drawn, so don't bother tweening. /* ... but we might be unhiding it, or setting state for when we unhide it later */ @@ -316,10 +341,10 @@ void UtilCommand( Actor& actor, const CString &sClassName, const CString &sComma else { ASSERT_M( !actor.GetID().empty(), ssprintf("!actor.GetID().empty() ('%s', '%s')", - sClassName.c_str(), sCommandName.c_str()) ); + sScreenName.c_str(), sCommandName.c_str()) ); } - actor.RunCommands( THEME->GetMetricA(sClassName,actor.GetID()+sCommandName+"Command") ); + actor.RunCommands( THEME->GetMetricA(sScreenName,actor.GetID()+sCommandName+"Command") ); } void AutoActor::Load( const CString &sPath ) diff --git a/stepmania/src/ActorUtil.h b/stepmania/src/ActorUtil.h index c708873b5b..30e0653975 100644 --- a/stepmania/src/ActorUtil.h +++ b/stepmania/src/ActorUtil.h @@ -12,25 +12,25 @@ class IniKey; #define SET_XY_AND_ON_COMMAND( actor ) UtilSetXYAndOnCommand( actor, m_sName ) #define COMMAND( actor, command_name ) UtilCommand( actor, m_sName, command_name ) -void UtilSetXY( Actor& actor, const CString &sClassName ); -inline void UtilSetXY( Actor* pActor, const CString &sClassName ) { UtilSetXY( *pActor, sClassName ); } +void UtilSetXY( Actor& actor, const CString &sScreenName ); +inline void UtilSetXY( Actor* pActor, const CString &sScreenName ) { UtilSetXY( *pActor, sScreenName ); } -void UtilCommand( Actor& actor, const CString &sClassName, const CString &sCommandName ); +void UtilCommand( Actor& actor, const CString &sScreenName, const CString &sCommandName ); -inline void UtilOnCommand( Actor& actor, const CString &sClassName ) { UtilCommand( actor, sClassName, "On" ); } -inline void UtilOffCommand( Actor& actor, const CString &sClassName ) { UtilCommand( actor, sClassName, "Off" ); } -inline void UtilSetXYAndOnCommand( Actor& actor, const CString &sClassName ) +inline void UtilOnCommand( Actor& actor, const CString &sScreenName ) { UtilCommand( actor, sScreenName, "On" ); } +inline void UtilOffCommand( Actor& actor, const CString &sScreenName ) { UtilCommand( actor, sScreenName, "Off" ); } +inline void UtilSetXYAndOnCommand( Actor& actor, const CString &sScreenName ) { - UtilSetXY( actor, sClassName ); - UtilOnCommand( actor, sClassName ); + UtilSetXY( actor, sScreenName ); + UtilOnCommand( actor, sScreenName ); } /* convenience */ -inline void UtilCommand( Actor* pActor, const CString &sClassName, const CString &sCommandName ) { if(pActor) UtilCommand( *pActor, sClassName, sCommandName ); } -inline void UtilOnCommand( Actor* pActor, const CString &sClassName ) { if(pActor) UtilOnCommand( *pActor, sClassName ); } -inline void UtilOffCommand( Actor* pActor, const CString &sClassName ) { if(pActor) UtilOffCommand( *pActor, sClassName ); } -inline void UtilSetXYAndOnCommand( Actor* pActor, const CString &sClassName ) { if(pActor) UtilSetXYAndOnCommand( *pActor, sClassName ); } +inline void UtilCommand( Actor* pActor, const CString &sScreenName, const CString &sCommandName ) { if(pActor) UtilCommand( *pActor, sScreenName, sCommandName ); } +inline void UtilOnCommand( Actor* pActor, const CString &sScreenName ) { if(pActor) UtilOnCommand( *pActor, sScreenName ); } +inline void UtilOffCommand( Actor* pActor, const CString &sScreenName ) { if(pActor) UtilOffCommand( *pActor, sScreenName ); } +inline void UtilSetXYAndOnCommand( Actor* pActor, const CString &sScreenName ) { if(pActor) UtilSetXYAndOnCommand( *pActor, sScreenName ); } // Return a Sprite, BitmapText, or Model depending on the file type Actor* LoadFromActorFile( const CString &sIniPath, const CString &sLayer = "Actor" );