From e6d4d3fd437ff8bc3dd6f4a62747446746dfed92 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 21 Sep 2003 02:36:48 +0000 Subject: [PATCH] Add AutoActor helper class. --- stepmania/src/ActorUtil.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/stepmania/src/ActorUtil.h b/stepmania/src/ActorUtil.h index 6b42a50f1f..09a563a9d3 100644 --- a/stepmania/src/ActorUtil.h +++ b/stepmania/src/ActorUtil.h @@ -27,18 +27,24 @@ inline void UtilSetXY( Actor& actor, CString sClassName ) ASSERT( !actor.GetName().empty() ); actor.SetXY( THEME->GetMetricF(sClassName,actor.GetName()+"X"), THEME->GetMetricF(sClassName,actor.GetName()+"Y") ); } +inline void UtilSetXY( Actor* pActor, CString sClassName ) { UtilSetXY( *pActor, sClassName ); } + inline float UtilOnCommand( Actor& actor, CString sClassName ) { ASSERT( !actor.GetName().empty() ); return actor.Command( THEME->GetMetric(sClassName,actor.GetName()+"OnCommand") ); } +inline float UtilOnCommand( Actor* pActor, CString sClassName ) { UtilOnCommand( *pActor, sClassName ); } + inline float UtilCommand( Actor& actor, CString sClassName, CString sCommandName ) { ASSERT( !actor.GetName().empty() ); return actor.Command( THEME->GetMetric(sClassName,actor.GetName()+sCommandName+"Command") ); } +inline float UtilCommand( Actor* pActor, CString sClassName, CString sCommandName ) { UtilCommand( *pActor, sClassName, sCommandName ); } + inline float UtilOffCommand( Actor& actor, CString sClassName ) { @@ -49,14 +55,42 @@ inline float UtilOffCommand( Actor& actor, CString sClassName ) return 0; return actor.Command( THEME->GetMetric(sClassName,actor.GetName()+"OffCommand") ); } +inline float UtilOffCommand( Actor* pActor, CString sClassName ) { return UtilOffCommand( *pActor, sClassName ); } + inline float UtilSetXYAndOnCommand( Actor& actor, CString sClassName ) { UtilSetXY( actor, sClassName ); return UtilOnCommand( actor, sClassName ); } +inline float UtilSetXYAndOnCommand( Actor* pActor, CString sClassName ) { return UtilSetXYAndOnCommand( *pActor, sClassName ); } + // Return a Sprite, BitmapText, or Model depending on the file type Actor* MakeActor( CString sPath ); + +// creates the appropriate Actor derivitive on load and +// automatically deletes Actor on deconstruction. +class AutoActor +{ +public: + AutoActor() { m_pActor = NULL; } + ~AutoActor() { Unload(); } + operator Actor* () { return m_pActor; } + Actor *operator->() { return m_pActor; } + void Unload() { if(m_pActor) { delete m_pActor; m_pActor=NULL; } } + void Load( CString sPath ) + { + Unload(); + m_pActor = MakeActor( sPath ); + } + +protected: + Actor* m_pActor; +}; + + + + #endif