#include "global.h" // testing updates /* ----------------------------------------------------------------------------- Class: ActorScroller Desc: See header. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. Chris Danford ----------------------------------------------------------------------------- */ #include "ActorScroller.h" #include "ActorCollision.h" #include #include "RageUtil.h" ActorScroller::ActorScroller() { m_fSecsIntoScroll = 0; } void ActorScroller::Load( vector vActors, float fBaseX, float fBaseY, float fVelX, float fVelY, float fSpacingX, float fSpacingY ) { m_vActors = vActors; m_vBase.x = fBaseX; m_vBase.y = fBaseY; m_vVelocity.x = fVelX; m_vVelocity.y = fVelY; m_vSpacing.x = fSpacingX; m_vSpacing.y = fSpacingY; // adjust base float t = 10000; // inf if( m_vSpacing.x != 0 ) t = min( t, m_vBase.x / fabsf(m_vSpacing.x) ); if( m_vSpacing.y != 0 ) t = min( t, m_vBase.y / fabsf(m_vSpacing.y) ); m_vBase.x -= t * fabsf(m_vSpacing.x); m_vBase.y -= t * fabsf(m_vSpacing.y); if( m_vVelocity.x < 0 ) m_vBase.x += SCREEN_WIDTH; if( m_vVelocity.y < 0 ) m_vBase.y += SCREEN_HEIGHT; // push off screen if( m_vVelocity.x!=0 ) m_vBase.x += m_vSpacing.x/2; if( m_vVelocity.y!=0 ) m_vBase.y += m_vSpacing.y/2; } float ActorScroller::GetTotalSecsToScroll() { float fMaxSecToScroll = 0; if( m_vVelocity.x != 0 ) { float fSecToScroll = fabsf(m_vSpacing.x*(m_vActors.size()+1) + SCREEN_WIDTH) / fabsf(m_vVelocity.x); fMaxSecToScroll = max( fMaxSecToScroll, fSecToScroll ); } if( m_vVelocity.y != 0 ) { float fSecToScroll = fabsf(m_vSpacing.y*(m_vActors.size()+1) + SCREEN_HEIGHT) / fabsf(m_vVelocity.y); fMaxSecToScroll = max( fMaxSecToScroll, fSecToScroll ); } return fMaxSecToScroll; } void ActorScroller::Update( float fDeltaTime ) { m_fSecsIntoScroll += fDeltaTime; for( unsigned i=0; iSetXY( fX, fY ); } } void ActorScroller::DrawPrimitives() { for( unsigned i=0; iDraw(); }