add ActorScroller::LoadFromIni

This commit is contained in:
Glenn Maynard
2005-01-06 18:34:34 +00:00
parent d4a727d272
commit 5181d7e037
3 changed files with 49 additions and 43 deletions
+46
View File
@@ -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 );
+2
View File
@@ -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); }
+1 -43
View File
@@ -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;