From 5181d7e03785b470f07bfca2960911af2d81dad0 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 6 Jan 2005 18:34:34 +0000 Subject: [PATCH] add ActorScroller::LoadFromIni --- stepmania/src/ActorScroller.cpp | 46 +++++++++++++++++++++++++++++++++ stepmania/src/ActorScroller.h | 2 ++ stepmania/src/BGAnimation.cpp | 44 +------------------------------ 3 files changed, 49 insertions(+), 43 deletions(-) diff --git a/stepmania/src/ActorScroller.cpp b/stepmania/src/ActorScroller.cpp index 75b1a41f1c..a14ddc9f87 100644 --- a/stepmania/src/ActorScroller.cpp +++ b/stepmania/src/ActorScroller.cpp @@ -3,6 +3,8 @@ #include "ActorCollision.h" #include "RageUtil.h" #include "RageDisplay.h" +#include "IniFile.h" +#include "arch/Dialog/Dialog.h" ActorScroller::ActorScroller() { @@ -37,6 +39,50 @@ void ActorScroller::Load( m_bLoaded = true; } +void ActorScroller::LoadFromIni( const IniFile &ini, const CString &sKey ) +{ +#define REQUIRED_GET_VALUE( szName, valueOut ) \ + if( !ini.GetValue( sKey, szName, valueOut ) ) \ + Dialog::OK( ssprintf("File '%s' is missing the value Scroller::%s", ini.GetPath().c_str(), szName) ); + + float fSecondsPerItem = 1; + int iNumItemsToDraw = 7; + RageVector3 vRotationDegrees = RageVector3(0,0,0); + RageVector3 vTranslateTerm0 = RageVector3(0,0,0); + RageVector3 vTranslateTerm1 = RageVector3(0,0,0); + RageVector3 vTranslateTerm2 = RageVector3(0,0,0); + float fItemPaddingStart = 0; + float fItemPaddingEnd = 0; + + REQUIRED_GET_VALUE( "SecondsPerItem", fSecondsPerItem ); + REQUIRED_GET_VALUE( "NumItemsToDraw", iNumItemsToDraw ); + REQUIRED_GET_VALUE( "RotationDegreesX", vRotationDegrees[0] ); + REQUIRED_GET_VALUE( "RotationDegreesY", vRotationDegrees[1] ); + REQUIRED_GET_VALUE( "RotationDegreesZ", vRotationDegrees[2] ); + REQUIRED_GET_VALUE( "TranslateTerm0X", vTranslateTerm0[0] ); + REQUIRED_GET_VALUE( "TranslateTerm0Y", vTranslateTerm0[1] ); + REQUIRED_GET_VALUE( "TranslateTerm0Z", vTranslateTerm0[2] ); + REQUIRED_GET_VALUE( "TranslateTerm1X", vTranslateTerm1[0] ); + REQUIRED_GET_VALUE( "TranslateTerm1Y", vTranslateTerm1[1] ); + REQUIRED_GET_VALUE( "TranslateTerm1Z", vTranslateTerm1[2] ); + REQUIRED_GET_VALUE( "TranslateTerm2X", vTranslateTerm2[0] ); + REQUIRED_GET_VALUE( "TranslateTerm2Y", vTranslateTerm2[1] ); + REQUIRED_GET_VALUE( "TranslateTerm2Z", vTranslateTerm2[2] ); + REQUIRED_GET_VALUE( "ItemPaddingStart", fItemPaddingStart ); + REQUIRED_GET_VALUE( "ItemPaddingEnd", fItemPaddingEnd ); +#undef REQUIRED_GET_VALUE + + Load( + fSecondsPerItem, + iNumItemsToDraw, + vRotationDegrees, + vTranslateTerm0, + vTranslateTerm1, + vTranslateTerm2 ); + SetCurrentAndDestinationItem( int(-fItemPaddingStart) ); + SetDestinationItem( int(m_SubActors.size()-1+fItemPaddingEnd) ); +} + void ActorScroller::Update( float fDeltaTime ) { ActorFrame::Update( fDeltaTime ); diff --git a/stepmania/src/ActorScroller.h b/stepmania/src/ActorScroller.h index fe8929f7d7..8f258f2f63 100644 --- a/stepmania/src/ActorScroller.h +++ b/stepmania/src/ActorScroller.h @@ -5,6 +5,7 @@ #include "ActorFrame.h" +class IniFile; class ActorScroller : public ActorFrame { @@ -22,6 +23,7 @@ public: virtual void Update( float fDelta ); virtual void DrawPrimitives(); // DOES draw + void LoadFromIni( const IniFile &ini, const CString &sKey ); void SetDestinationItem( int iItem ) { m_fDestinationItem = float(iItem); } void SetCurrentAndDestinationItem( int iItem ) { m_fCurrentItem = m_fDestinationItem = float(iItem); } diff --git a/stepmania/src/BGAnimation.cpp b/stepmania/src/BGAnimation.cpp index 37d05b3cbc..c232755090 100644 --- a/stepmania/src/BGAnimation.cpp +++ b/stepmania/src/BGAnimation.cpp @@ -10,7 +10,6 @@ #include "RageFile.h" #include "ActorUtil.h" #include "LuaHelpers.h" -#include "arch/Dialog/Dialog.h" #include "Foreach.h" @@ -150,48 +149,7 @@ void BGAnimation::LoadFromAniDir( CString sAniDir ) bool bUseScroller; if( ini.GetValue( "BGAnimation", "UseScroller", bUseScroller ) && bUseScroller ) { - // TODO: Move this into ActorScroller - -#define REQUIRED_GET_VALUE( szName, valueOut ) \ - if( !ini.GetValue( "Scroller", szName, valueOut ) ) \ - Dialog::OK( ssprintf("File '%s' is missing the value Scroller::%s", sPathToIni.c_str(), szName) ); - - float fSecondsPerItem = 1; - int iNumItemsToDraw = 7; - RageVector3 vRotationDegrees = RageVector3(0,0,0); - RageVector3 vTranslateTerm0 = RageVector3(0,0,0); - RageVector3 vTranslateTerm1 = RageVector3(0,0,0); - RageVector3 vTranslateTerm2 = RageVector3(0,0,0); - float fItemPaddingStart = 0; - float fItemPaddingEnd = 0; - - REQUIRED_GET_VALUE( "SecondsPerItem", fSecondsPerItem ); - REQUIRED_GET_VALUE( "NumItemsToDraw", iNumItemsToDraw ); - REQUIRED_GET_VALUE( "RotationDegreesX", vRotationDegrees[0] ); - REQUIRED_GET_VALUE( "RotationDegreesY", vRotationDegrees[1] ); - REQUIRED_GET_VALUE( "RotationDegreesZ", vRotationDegrees[2] ); - REQUIRED_GET_VALUE( "TranslateTerm0X", vTranslateTerm0[0] ); - REQUIRED_GET_VALUE( "TranslateTerm0Y", vTranslateTerm0[1] ); - REQUIRED_GET_VALUE( "TranslateTerm0Z", vTranslateTerm0[2] ); - REQUIRED_GET_VALUE( "TranslateTerm1X", vTranslateTerm1[0] ); - REQUIRED_GET_VALUE( "TranslateTerm1Y", vTranslateTerm1[1] ); - REQUIRED_GET_VALUE( "TranslateTerm1Z", vTranslateTerm1[2] ); - REQUIRED_GET_VALUE( "TranslateTerm2X", vTranslateTerm2[0] ); - REQUIRED_GET_VALUE( "TranslateTerm2Y", vTranslateTerm2[1] ); - REQUIRED_GET_VALUE( "TranslateTerm2Z", vTranslateTerm2[2] ); - REQUIRED_GET_VALUE( "ItemPaddingStart", fItemPaddingStart ); - REQUIRED_GET_VALUE( "ItemPaddingEnd", fItemPaddingEnd ); -#undef REQUIRED_GET_VALUE - - ActorScroller::Load( - fSecondsPerItem, - iNumItemsToDraw, - vRotationDegrees, - vTranslateTerm0, - vTranslateTerm1, - vTranslateTerm2 ); - ActorScroller::SetCurrentAndDestinationItem( int(-fItemPaddingStart) ); - ActorScroller::SetDestinationItem( int(m_SubActors.size()-1+fItemPaddingEnd) ); + ActorScroller::LoadFromIni( ini, "Scroller" ); } CString sInitCommand;