Eliminated the need for having an arrow graphic in every direction by
rotating a single arrow that points to the left.
This commit is contained in:
+31
-30
@@ -48,17 +48,21 @@ const int ARROW_X_OFFSET[4] = {
|
|||||||
#define ARROW_HEIGHT 70
|
#define ARROW_HEIGHT 70
|
||||||
#define NUM_FRAMES_IN_COLOR_ARROW_SPRITE 12
|
#define NUM_FRAMES_IN_COLOR_ARROW_SPRITE 12
|
||||||
|
|
||||||
|
/*
|
||||||
const CString SPRITE_COLOR_ARROW[4] = {
|
const CString SPRITE_COLOR_ARROW[4] = {
|
||||||
"Sprites\\Color Arrow Left.sprite",
|
"Sprites\\Color Arrow Left.sprite",
|
||||||
"Sprites\\Color Arrow Down.sprite",
|
"Sprites\\Color Arrow Down.sprite",
|
||||||
"Sprites\\Color Arrow Up.sprite",
|
"Sprites\\Color Arrow Up.sprite",
|
||||||
"Sprites\\Color Arrow Right.sprite"
|
"Sprites\\Color Arrow Right.sprite"
|
||||||
};
|
};
|
||||||
const CString SPRITE_GRAY_ARROW[4] = {
|
*/
|
||||||
"Sprites\\Gray Arrow Left.sprite",
|
const CString SPRITE_COLOR_ARROW = "Sprites\\Color Arrow Left.sprite";
|
||||||
"Sprites\\Gray Arrow Down.sprite",
|
const CString SPRITE_GRAY_ARROW = "Sprites\\Gray Arrow Left.sprite";
|
||||||
"Sprites\\Gray Arrow Up.sprite",
|
const float SPRITE_ARROW_ROTATION[4] = {
|
||||||
"Sprites\\Gray Arrow Right.sprite"
|
0,
|
||||||
|
0-D3DX_PI/2.0f,
|
||||||
|
0+D3DX_PI/2.0f,
|
||||||
|
0+D3DX_PI
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -98,26 +102,25 @@ Player::Player()
|
|||||||
m_OriginalStep[i] = 0;
|
m_OriginalStep[i] = 0;
|
||||||
m_LeftToStepOn[i] = 0;
|
m_LeftToStepOn[i] = 0;
|
||||||
m_StepScore[i] = none;
|
m_StepScore[i] = none;
|
||||||
|
m_iColorArrowFrameOffset[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for( i=0; i<4; i++ ) {
|
||||||
// gray arrows
|
// gray arrows
|
||||||
for( i=0; i<4; i++ )
|
m_sprGrayArrow[i].LoadFromSpriteFile( SPRITE_GRAY_ARROW );
|
||||||
{
|
m_sprGrayArrow[i].SetRotation( SPRITE_ARROW_ROTATION[i] );
|
||||||
m_sprGrayArrow[i].LoadFromSpriteFile( SPRITE_GRAY_ARROW[i] );
|
|
||||||
m_sprGrayArrowGhost[i].LoadFromSpriteFile( SPRITE_GRAY_ARROW[i] );
|
m_sprGrayArrowGhost[i].LoadFromSpriteFile( SPRITE_GRAY_ARROW );
|
||||||
|
m_sprGrayArrowGhost[i].SetRotation( SPRITE_ARROW_ROTATION[i] );
|
||||||
m_sprGrayArrowGhost[i].StopAnimating();
|
m_sprGrayArrowGhost[i].StopAnimating();
|
||||||
m_sprGrayArrowGhost[i].SetState( 1 );
|
m_sprGrayArrowGhost[i].SetState( 1 );
|
||||||
m_sprGrayArrowGhost[i].SetColor( D3DXCOLOR(1,1,1,0) );
|
m_sprGrayArrowGhost[i].SetColor( D3DXCOLOR(1,1,1,0) );
|
||||||
}
|
|
||||||
|
|
||||||
// color arrows
|
// color arrows
|
||||||
for( i=0; i<4; i++ )
|
m_sprColorArrow[i].LoadFromSpriteFile( SPRITE_COLOR_ARROW_LEFT );
|
||||||
{
|
|
||||||
m_sprColorArrow[i].LoadFromSpriteFile( SPRITE_COLOR_ARROW[i] );
|
|
||||||
m_sprColorArrow[i].StopAnimating();
|
m_sprColorArrow[i].StopAnimating();
|
||||||
|
m_sprColorArrow[i].SetRotation( SPRITE_ARROW_ROTATION[i] );
|
||||||
}
|
}
|
||||||
for( i=0; i<MAX_STEP_ELEMENTS; i++ )
|
|
||||||
m_iColorArrowFrameOffset[i] = 0;
|
|
||||||
|
|
||||||
// judgement
|
// judgement
|
||||||
m_fJudgementDisplayCountdown = 0;
|
m_fJudgementDisplayCountdown = 0;
|
||||||
@@ -201,7 +204,7 @@ void Player::Draw( float fSongBeat )
|
|||||||
|
|
||||||
void Player::HandlePlayerStep( float fSongBeat, Step player_step, float fMaxBeatDiff )
|
void Player::HandlePlayerStep( float fSongBeat, Step player_step, float fMaxBeatDiff )
|
||||||
{
|
{
|
||||||
RageLog( "Player::HandlePlayerStep()" );
|
//RageLog( "Player::HandlePlayerStep()" );
|
||||||
|
|
||||||
// update gray arrows
|
// update gray arrows
|
||||||
if( player_step & STEP_P1_LEFT ) GrayArrowStep( 0 );
|
if( player_step & STEP_P1_LEFT ) GrayArrowStep( 0 );
|
||||||
@@ -215,13 +218,13 @@ void Player::HandlePlayerStep( float fSongBeat, Step player_step, float fMaxBeat
|
|||||||
|
|
||||||
void Player::CheckForCompleteStep( float fSongBeat, Step player_step, float fMaxBeatDiff )
|
void Player::CheckForCompleteStep( float fSongBeat, Step player_step, float fMaxBeatDiff )
|
||||||
{
|
{
|
||||||
RageLog( "Player::CheckForCompleteStep()" );
|
//RageLog( "Player::CheckForCompleteStep()" );
|
||||||
|
|
||||||
// look for the closest matching step
|
// look for the closest matching step
|
||||||
int iIndexStartLookingAt = BeatToStepIndex( fSongBeat );
|
int iIndexStartLookingAt = BeatToStepIndex( fSongBeat );
|
||||||
int iNumElementsToExamine = BeatToStepIndex( fMaxBeatDiff ); // number of elements to examine on either end of iIndexStartLookingAt
|
int iNumElementsToExamine = BeatToStepIndex( fMaxBeatDiff ); // number of elements to examine on either end of iIndexStartLookingAt
|
||||||
|
|
||||||
RageLog( "iIndexStartLookingAt = %d, iNumElementsToExamine = %d", iIndexStartLookingAt, iNumElementsToExamine );
|
//RageLog( "iIndexStartLookingAt = %d, iNumElementsToExamine = %d", iIndexStartLookingAt, iNumElementsToExamine );
|
||||||
|
|
||||||
// Start at iIndexStartLookingAt and search outward. The first one that overlaps the player's step is the closest match.
|
// Start at iIndexStartLookingAt and search outward. The first one that overlaps the player's step is the closest match.
|
||||||
for( int delta=0; delta <= iNumElementsToExamine; delta++ )
|
for( int delta=0; delta <= iNumElementsToExamine; delta++ )
|
||||||
@@ -236,7 +239,7 @@ void Player::CheckForCompleteStep( float fSongBeat, Step player_step, float fMax
|
|||||||
////////////////////////////
|
////////////////////////////
|
||||||
// check the step to the left of iIndexStartLookingAt
|
// check the step to the left of iIndexStartLookingAt
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
RageLog( "Checking steps[%d]", iCurrentIndexEarlier );
|
//RageLog( "Checking steps[%d]", iCurrentIndexEarlier );
|
||||||
if( m_LeftToStepOn[iCurrentIndexEarlier] & player_step ) // these steps overlap
|
if( m_LeftToStepOn[iCurrentIndexEarlier] & player_step ) // these steps overlap
|
||||||
{
|
{
|
||||||
m_LeftToStepOn[iCurrentIndexEarlier] &= ~player_step; // subtract player_step
|
m_LeftToStepOn[iCurrentIndexEarlier] &= ~player_step; // subtract player_step
|
||||||
@@ -249,7 +252,7 @@ void Player::CheckForCompleteStep( float fSongBeat, Step player_step, float fMax
|
|||||||
////////////////////////////
|
////////////////////////////
|
||||||
// check the step to the right of iIndexStartLookingAt
|
// check the step to the right of iIndexStartLookingAt
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
RageLog( "Checking steps[%d]", iCurrentIndexLater );
|
//RageLog( "Checking steps[%d]", iCurrentIndexLater );
|
||||||
if( m_LeftToStepOn[iCurrentIndexLater] & player_step ) // these steps overlap
|
if( m_LeftToStepOn[iCurrentIndexLater] & player_step ) // these steps overlap
|
||||||
{
|
{
|
||||||
m_LeftToStepOn[iCurrentIndexLater] &= ~player_step; // subtract player_step
|
m_LeftToStepOn[iCurrentIndexLater] &= ~player_step; // subtract player_step
|
||||||
@@ -274,8 +277,8 @@ void Player::OnCompleteStep( float fSongBeat, Step player_step, float fMaxBeatDi
|
|||||||
float fBeatsUntilStep = fStepBeat - fSongBeat;
|
float fBeatsUntilStep = fStepBeat - fSongBeat;
|
||||||
float fPercentFromPerfect = (float)fabs( fBeatsUntilStep / fMaxBeatDiff );
|
float fPercentFromPerfect = (float)fabs( fBeatsUntilStep / fMaxBeatDiff );
|
||||||
|
|
||||||
RageLog( "fBeatsUntilStep: %f, fPercentFromPerfect: %f",
|
//RageLog( "fBeatsUntilStep: %f, fPercentFromPerfect: %f",
|
||||||
fBeatsUntilStep, fPercentFromPerfect );
|
// fBeatsUntilStep, fPercentFromPerfect );
|
||||||
|
|
||||||
// compute what the score should be for the note we stepped on
|
// compute what the score should be for the note we stepped on
|
||||||
StepScore &score = m_StepScore[iIndexThatWasSteppedOn];
|
StepScore &score = m_StepScore[iIndexThatWasSteppedOn];
|
||||||
@@ -356,12 +359,12 @@ ScoreSummary Player::GetScoreSummary()
|
|||||||
|
|
||||||
void Player::UpdateGrayArrows( const float &fDeltaTime )
|
void Player::UpdateGrayArrows( const float &fDeltaTime )
|
||||||
{
|
{
|
||||||
for( int i=0; i<4; i++ )
|
// gray arrows
|
||||||
|
for( int i=0; i<4; i++ ) {
|
||||||
m_sprGrayArrow[i].Update( fDeltaTime );
|
m_sprGrayArrow[i].Update( fDeltaTime );
|
||||||
|
|
||||||
for( i=0; i<4; i++ )
|
|
||||||
m_sprGrayArrowGhost[i].Update( fDeltaTime );
|
m_sprGrayArrowGhost[i].Update( fDeltaTime );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Player::DrawGrayArrows()
|
void Player::DrawGrayArrows()
|
||||||
{
|
{
|
||||||
@@ -383,10 +386,8 @@ void Player::SetColorArrowsX( int iNewX )
|
|||||||
void Player::GrayArrowStep( int index )
|
void Player::GrayArrowStep( int index )
|
||||||
{
|
{
|
||||||
m_sprGrayArrow[index].SetZoom( 0.50 );
|
m_sprGrayArrow[index].SetZoom( 0.50 );
|
||||||
m_sprGrayArrow[index].TweenTo( GRAY_ARROW_POP_UP_TIME,
|
m_sprGrayArrow[index].SetTweening( GRAY_ARROW_POP_UP_TIME );
|
||||||
m_sprGrayArrow[index].GetX(),
|
m_sprGrayArrow[index].SetTweenZoom( 1.0f );
|
||||||
m_sprGrayArrow[index].GetY(),
|
|
||||||
1.0f );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::GrayArrowGhostStep( int index )
|
void Player::GrayArrowGhostStep( int index )
|
||||||
@@ -498,7 +499,7 @@ void Player::DrawJudgement()
|
|||||||
|
|
||||||
void Player::SetJudgement( StepScore score )
|
void Player::SetJudgement( StepScore score )
|
||||||
{
|
{
|
||||||
RageLog( "Judgement::SetJudgement()" );
|
//RageLog( "Judgement::SetJudgement()" );
|
||||||
|
|
||||||
switch( score )
|
switch( score )
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user