no message

This commit is contained in:
Chris Danford
2002-05-29 09:47:24 +00:00
parent f3c360a7d6
commit bfc327df13
27 changed files with 332 additions and 228 deletions
+4 -2
View File
@@ -215,14 +215,16 @@ void Actor::Update( float fDeltaTime )
if( TS.m_fTimeLeftInTween <= 0 ) // The tweening is over. Stop the tweening if( TS.m_fTimeLeftInTween <= 0 ) // The tweening is over. Stop the tweening
{ {
int i;
m_pos = TS.m_end_pos; m_pos = TS.m_end_pos;
m_scale = TS.m_end_scale; m_scale = TS.m_end_scale;
m_rotation = TS.m_end_rotation; m_rotation = TS.m_end_rotation;
for(int i=0; i<4; i++) m_colorDiffuse[i] = TS.m_end_colorDiffuse[i]; for(i=0; i<4; i++) m_colorDiffuse[i] = TS.m_end_colorDiffuse[i];
m_colorAdd = TS.m_end_colorAdd; m_colorAdd = TS.m_end_colorAdd;
// delete the head tween // delete the head tween
for( int i=0; i<m_iNumTweenStates-1; i++ ) for( i=0; i<m_iNumTweenStates-1; i++ )
m_QueuedTweens[i] = m_QueuedTweens[i+1]; m_QueuedTweens[i] = m_QueuedTweens[i+1];
m_iNumTweenStates--; m_iNumTweenStates--;
return; return;
+83 -41
View File
@@ -229,9 +229,73 @@ void BitmapText::DrawPrimitives()
iY += iHeight; iY += iHeight;
} }
// pVB->Unlock();
// Set the stage...
LPDIRECT3DDEVICE8 pd3dDevice = DISPLAY->GetDevice();
pd3dDevice->SetTexture( 0, pTexture->GetD3DTexture() );
pd3dDevice->SetRenderState( D3DRS_SRCBLEND, m_bBlendAdd ? D3DBLEND_ONE : D3DBLEND_SRCALPHA );
pd3dDevice->SetRenderState( D3DRS_DESTBLEND, m_bBlendAdd ? D3DBLEND_ONE : D3DBLEND_INVSRCALPHA );
pd3dDevice->SetVertexShader( D3DFVF_RAGEVERTEX );
pd3dDevice->SetStreamSource( 0, pVB, sizeof(RAGEVERTEX) );
//////////////////////
// render the shadow
//////////////////////
if( m_bShadow && m_temp_colorDiffuse[0].a != 0 )
{
DISPLAY->PushMatrix();
DISPLAY->TranslateLocal( m_fShadowLength, m_fShadowLength, 0 ); // shift by 5 units
DWORD dwColor = D3DXCOLOR(0,0,0,0.5f*m_temp_colorDiffuse[0].a); // semi-transparent black
/*
// YUCK. It is very common in crapier drivers that the texture factor doesn't work.
// Too bad because using the texture factor instead of recoloring the verticies is very fast.
pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, dwColor );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TFACTOR );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
*/
// recolor the verticies for a shadow
pVB->Lock( 0, 0, (BYTE**)&v, 0 );
for( int i=0; i<iNumV; i++ )
v[i].color = dwColor;
pVB->Unlock();
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, iNumV/3 );
DISPLAY->PopMatrix();
}
//////////////////////
// render the diffuse pass
//////////////////////
//
// set vertex colors for the diffuse pass // set vertex colors for the diffuse pass
// //
pVB->Lock( 0, 0, (BYTE**)&v, 0 );
if( m_bRainbow ) if( m_bRainbow )
{ {
int color_index = (GetTickCount() / 200) % NUM_RAINBOW_COLORS; int color_index = (GetTickCount() / 200) % NUM_RAINBOW_COLORS;
@@ -259,46 +323,6 @@ void BitmapText::DrawPrimitives()
pVB->Unlock(); pVB->Unlock();
// Set the stage...
LPDIRECT3DDEVICE8 pd3dDevice = DISPLAY->GetDevice();
pd3dDevice->SetTexture( 0, pTexture->GetD3DTexture() );
pd3dDevice->SetRenderState( D3DRS_SRCBLEND, m_bBlendAdd ? D3DBLEND_ONE : D3DBLEND_SRCALPHA );
pd3dDevice->SetRenderState( D3DRS_DESTBLEND, m_bBlendAdd ? D3DBLEND_ONE : D3DBLEND_INVSRCALPHA );
pd3dDevice->SetVertexShader( D3DFVF_RAGEVERTEX );
pd3dDevice->SetStreamSource( 0, pVB, sizeof(RAGEVERTEX) );
//////////////////////
// render the shadow
//////////////////////
if( m_bShadow && m_temp_colorDiffuse[0].a != 0 )
{
DISPLAY->PushMatrix();
DISPLAY->TranslateLocal( m_fShadowLength, m_fShadowLength, 0 ); // shift by 5 units
DWORD dwColor = D3DXCOLOR(0,0,0,0.5f*m_temp_colorDiffuse[0].a); // semi-transparent black
pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, dwColor );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TFACTOR );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, iNumV/3 );
DISPLAY->PopMatrix();
}
//////////////////////
// render the diffuse pass
//////////////////////
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
@@ -315,6 +339,11 @@ void BitmapText::DrawPrimitives()
if( m_temp_colorAdd.a != 0 ) if( m_temp_colorAdd.a != 0 )
{ {
DWORD dwColor = m_temp_colorAdd; DWORD dwColor = m_temp_colorAdd;
/*
// See above comment about some cards not correctly handling the
// texture factor render state.
pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, dwColor ); pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, dwColor );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TFACTOR ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TFACTOR );
@@ -322,6 +351,19 @@ void BitmapText::DrawPrimitives()
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
*/
// recolor the verticies for
pVB->Lock( 0, 0, (BYTE**)&v, 0 );
for( int i=0; i<iNumV; i++ )
v[i].color = dwColor;
pVB->Unlock();
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, iNumV/3 ); pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, iNumV/3 );
} }
-2
View File
@@ -71,8 +71,6 @@ void GradeDisplay::SetGrade( Grade g )
StopUsingCustomCoords(); StopUsingCustomCoords();
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
switch( g ) switch( g )
{ {
case GRADE_AAA: SetState(0); break; case GRADE_AAA: SetState(0); break;
+1 -3
View File
@@ -146,12 +146,10 @@ void GrooveRadar::GrooveRadarValueMap::DrawPrimitives()
LPDIRECT3DVERTEXBUFFER8 pVB = DISPLAY->GetVertexBuffer(); LPDIRECT3DVERTEXBUFFER8 pVB = DISPLAY->GetVertexBuffer();
LPDIRECT3DDEVICE8 pd3dDevice = DISPLAY->GetDevice(); LPDIRECT3DDEVICE8 pd3dDevice = DISPLAY->GetDevice();
pd3dDevice->SetTexture( 0, NULL ); pd3dDevice->SetTexture( 0, NULL );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2 );
RAGEVERTEX* v; RAGEVERTEX* v;
for( int p=0; p<NUM_PLAYERS; p++ ) for( int p=0; p<NUM_PLAYERS; p++ )
+1
View File
@@ -23,6 +23,7 @@ HoldJudgement::HoldJudgement()
m_fDisplayCountdown = 0; m_fDisplayCountdown = 0;
m_sprJudgement.Load( THEME->GetPathTo(GRAPHIC_GAMEPLAY_JUDGEMENT) ); m_sprJudgement.Load( THEME->GetPathTo(GRAPHIC_GAMEPLAY_JUDGEMENT) );
m_sprJudgement.StopAnimating(); m_sprJudgement.StopAnimating();
m_sprJudgement.TurnShadowOn();
this->AddActor( &m_sprJudgement ); this->AddActor( &m_sprJudgement );
} }
+21 -25
View File
@@ -31,20 +31,24 @@ void LifeMeterBar::ChangeLife( TapNoteScore score )
{ {
bool bWasDoingGreat = IsDoingGreat(); bool bWasDoingGreat = IsDoingGreat();
float fDeltaLife;
switch( score ) switch( score )
{ {
case TNS_PERFECT: m_fLifePercentage += 0.02f; break; case TNS_PERFECT: fDeltaLife = +0.02f; break;
case TNS_GREAT: m_fLifePercentage += 0.01f; break; case TNS_GREAT: fDeltaLife = +0.01f; break;
case TNS_GOOD: m_fLifePercentage += 0.00f; break; case TNS_GOOD: fDeltaLife = +0.00f; break;
case TNS_BOO: m_fLifePercentage -= 0.05f; break; case TNS_BOO: fDeltaLife = -0.06f; break;
case TNS_MISS: m_fLifePercentage -= 0.10f; break; case TNS_MISS: fDeltaLife = -0.12f; break;
} }
if( bWasDoingGreat && !IsDoingGreat() )
fDeltaLife = -0.12f; // make it take a while to get back to "doing great"
m_fLifePercentage += fDeltaLife;
m_fLifePercentage = clamp( m_fLifePercentage, 0, 1 ); m_fLifePercentage = clamp( m_fLifePercentage, 0, 1 );
bool bIsDoingGreat = IsDoingGreat(); if( m_fLifePercentage == 0 )
m_bHasFailed = true;
if( bWasDoingGreat && !bIsDoingGreat )
m_fLifePercentage -= 0.10f; // make it take a while to get back to "doing great"
ResetBarVelocity(); ResetBarVelocity();
} }
@@ -74,24 +78,16 @@ bool LifeMeterBar::HasFailed()
void LifeMeterBar::Update( float fDeltaTime ) void LifeMeterBar::Update( float fDeltaTime )
{ {
m_fLifeVelocity *= 1-fDeltaTime*2; // dampen float fDelta = m_fLifePercentage - m_fTrailingLifePercentage;
m_fLifeVelocity += fDelta * fDeltaTime; // accelerate
m_fLifeVelocity *= 1-fDeltaTime; // dampen
m_fTrailingLifePercentage += m_fLifeVelocity * fDeltaTime;
// there are some cases where we want to snap the meter float fNewDelta = m_fLifePercentage - m_fTrailingLifePercentage;
bool bSnap = m_fTrailingLifePercentage >= 1;
if( bSnap ) if( fDelta * fNewDelta < 0 ) // the deltas have different signs
{ m_fLifeVelocity /= 4;
m_fTrailingLifePercentage = m_fLifePercentage; m_fTrailingLifePercentage = clamp( m_fTrailingLifePercentage, 0, 1 );
m_fLifeVelocity = 0;
}
else
{
m_fTrailingLifePercentage += m_fLifeVelocity * fDeltaTime;
m_fTrailingLifePercentage = clamp( m_fTrailingLifePercentage, 0, 1 );
}
if( m_fLifePercentage == 0 )
m_bHasFailed = true;
} }
+1 -1
View File
@@ -35,5 +35,5 @@ private:
float m_fLifePercentage; float m_fLifePercentage;
float m_fTrailingLifePercentage; // this approaches m_fLifePercentage float m_fTrailingLifePercentage; // this approaches m_fLifePercentage
float m_fLifeVelocity; // how m_fTrailingLifePercentage approaches m_fLifePercentage float m_fLifeVelocity; // how m_fTrailingLifePercentage approaches m_fLifePercentage
bool m_bHasFailed; bool m_bHasFailed; // set this to true when life dips below 0
}; };
+5 -3
View File
@@ -190,7 +190,7 @@ void MenuElements::TweenOnScreenFromBlack( ScreenMessage smSendWhenDone )
{ {
TweenTopLayerOnScreen(); TweenTopLayerOnScreen();
TweenBottomLayerOnScreen(); TweenBottomLayerOnScreen();
m_Wipe.OpenWipingRight( smSendWhenDone ); //m_Wipe.OpenWipingRight( smSendWhenDone );
m_soundSwoosh.Play(); m_soundSwoosh.Play();
} }
@@ -201,9 +201,11 @@ void MenuElements::TweenOffScreenToBlack( ScreenMessage smSendWhenDone, bool bPl
TweenTopLayerOffScreen(); TweenTopLayerOffScreen();
TweenBottomLayerOffScreen(); TweenBottomLayerOffScreen();
} }
m_Wipe.CloseWipingRight( smSendWhenDone ); else
if( bPlayBackSound ) {
m_soundBack.Play(); m_soundBack.Play();
m_Wipe.CloseWipingLeft( smSendWhenDone );
}
} }
void MenuElements::DrawPrimitives() void MenuElements::DrawPrimitives()
+57 -30
View File
@@ -146,14 +146,14 @@ void WheelItemDisplay::LoadFromWheelItemData( WheelItemData* pWID )
break; break;
case TYPE_SONG: case TYPE_SONG:
{ {
m_TextBanner.LoadFromSong( m_pSong ); m_TextBanner.LoadFromSong( m_pSong );
D3DXCOLOR color = m_color; D3DXCOLOR color = m_color;
color.r += 0.15f; color.r += 0.15f;
color.g += 0.15f; color.g += 0.15f;
color.b += 0.15f; color.b += 0.15f;
m_TextBanner.SetDiffuseColor( color ); m_TextBanner.SetDiffuseColor( color );
m_MusicStatusDisplay.SetType( m_MusicStatusDisplayType ); m_MusicStatusDisplay.SetType( m_MusicStatusDisplayType );
RefreshGrades(); RefreshGrades();
} }
break; break;
case TYPE_ROULETTE: case TYPE_ROULETTE:
@@ -167,6 +167,7 @@ void WheelItemDisplay::LoadFromWheelItemData( WheelItemData* pWID )
void WheelItemDisplay::RefreshGrades() void WheelItemDisplay::RefreshGrades()
{ {
// Refresh Grades
for( int p=0; p<NUM_PLAYERS; p++ ) for( int p=0; p<NUM_PLAYERS; p++ )
{ {
if( !GAMEMAN->IsPlayerEnabled( (PlayerNumber)p ) ) if( !GAMEMAN->IsPlayerEnabled( (PlayerNumber)p ) )
@@ -175,20 +176,22 @@ void WheelItemDisplay::RefreshGrades()
continue; continue;
} }
const DifficultyClass dc = PREFSMAN->m_PreferredDifficultyClass[p];
if( m_pSong ) // this is a song display if( m_pSong ) // this is a song display
{ {
const DifficultyClass dc = PREFSMAN->m_PreferredDifficultyClass[p];
const Grade grade = m_pSong->GetGradeForDifficultyClass( GAMEMAN->GetCurrentStyleDef()->m_NotesType, dc ); const Grade grade = m_pSong->GetGradeForDifficultyClass( GAMEMAN->GetCurrentStyleDef()->m_NotesType, dc );
m_GradeDisplay[p].SetGrade( grade ); m_GradeDisplay[p].SetGrade( grade );
m_GradeDisplay[p].SetDiffuseColor( PlayerToColor((PlayerNumber)p) ); //m_GradeDisplay[p].SetDiffuseColor( PlayerToColor((PlayerNumber)p) );
} }
else // this is a section display else // this is a section display
{ {
m_GradeDisplay[p].SetGrade( GRADE_NO_DATA ); m_GradeDisplay[p].SetGrade( GRADE_NO_DATA );
} }
} }
} }
void WheelItemDisplay::Update( float fDeltaTime ) void WheelItemDisplay::Update( float fDeltaTime )
{ {
Actor::Update( fDeltaTime ); Actor::Update( fDeltaTime );
@@ -247,15 +250,20 @@ MusicWheel::MusicWheel()
GAMEMAN->m_CurStyle = STYLE_DANCE_SINGLE; GAMEMAN->m_CurStyle = STYLE_DANCE_SINGLE;
m_frameOverlay.SetXY( 0, 0 );
for( int p=0; p<NUM_PLAYERS; p++ ) for( int p=0; p<NUM_PLAYERS; p++ )
{ {
if( !GAMEMAN->IsPlayerEnabled((PlayerNumber)p) )
continue; // skip
m_sprHighScoreFrame[p].Load( THEME->GetPathTo(GRAPHIC_SELECT_MUSIC_SCORE_FRAME) ); m_sprHighScoreFrame[p].Load( THEME->GetPathTo(GRAPHIC_SELECT_MUSIC_SCORE_FRAME) );
m_sprHighScoreFrame[p].SetXY( SCORE_X, SCORE_Y[p] ); m_sprHighScoreFrame[p].SetXY( SCORE_X, SCORE_Y[p] );
this->AddActor( &m_sprHighScoreFrame[p] ); m_frameOverlay.AddActor( &m_sprHighScoreFrame[p] );
m_HighScore[p].SetXY( SCORE_X, SCORE_Y[p]*0.97f ); m_HighScore[p].SetXY( SCORE_X, SCORE_Y[p]*0.97f );
m_HighScore[p].SetZoom( 0.6f ); m_HighScore[p].SetZoom( 0.6f );
this->AddActor( &m_HighScore[p] ); m_frameOverlay.AddActor( &m_HighScore[p] );
} }
m_sprHighScoreFrame[1].SetZoomY( -1 ); // flip vertically m_sprHighScoreFrame[1].SetZoomY( -1 ); // flip vertically
@@ -265,11 +273,14 @@ MusicWheel::MusicWheel()
m_sprSelectionOverlay.SetXY( 0, 0 ); m_sprSelectionOverlay.SetXY( 0, 0 );
m_sprSelectionOverlay.SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); m_sprSelectionOverlay.SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
m_sprSelectionOverlay.SetEffectGlowing( 1.0f, D3DXCOLOR(1,1,1,0.4f), D3DXCOLOR(1,1,1,1) ); m_sprSelectionOverlay.SetEffectGlowing( 1.0f, D3DXCOLOR(1,1,1,0.4f), D3DXCOLOR(1,1,1,1) );
this->AddActor( &m_sprSelectionOverlay ); m_frameOverlay.AddActor( &m_sprSelectionOverlay );
m_MusicSortDisplay.SetXY( SORT_ICON_ON_SCREEN_X, SORT_ICON_ON_SCREEN_Y ); m_MusicSortDisplay.SetXY( SORT_ICON_ON_SCREEN_X, SORT_ICON_ON_SCREEN_Y );
m_MusicSortDisplay.SetEffectGlowing( 1.0f ); m_MusicSortDisplay.SetEffectGlowing( 1.0f );
this->AddActor( &m_MusicSortDisplay ); m_frameOverlay.AddActor( &m_MusicSortDisplay );
this->AddActor( &m_frameOverlay );
m_ScrollBar.SetX( SCROLLBAR_X ); m_ScrollBar.SetX( SCROLLBAR_X );
this->AddActor( &m_ScrollBar ); this->AddActor( &m_ScrollBar );
@@ -315,7 +326,7 @@ MusicWheel::MusicWheel()
SONGMAN->GetSongsInGroup( SONGMAN->m_sPreferredGroup, arraySongs ); SONGMAN->GetSongsInGroup( SONGMAN->m_sPreferredGroup, arraySongs );
if( arraySongs.GetSize() > 0 ) if( arraySongs.GetSize() > 0 )
SONGMAN->m_pCurSong = arraySongs[0]; // select the first song SONGMAN->SetCurrentSong( arraySongs[0] ); // select the first song
} }
@@ -324,7 +335,7 @@ MusicWheel::MusicWheel()
// find the previously selected song (if any) // find the previously selected song (if any)
for( int i=0; i<GetCurWheelItemDatas().GetSize(); i++ ) for( int i=0; i<GetCurWheelItemDatas().GetSize(); i++ )
{ {
if( GetCurWheelItemDatas()[i].m_pSong == SONGMAN->m_pCurSong ) if( GetCurWheelItemDatas()[i].m_pSong == SONGMAN->GetCurrentSong() )
{ {
m_iSelection = i; // select it m_iSelection = i; // select it
m_sExpandedSectionName = GetCurWheelItemDatas()[m_iSelection].m_sSectionName; // make its group the currently expanded group m_sExpandedSectionName = GetCurWheelItemDatas()[m_iSelection].m_sSectionName; // make its group the currently expanded group
@@ -572,8 +583,8 @@ void MusicWheel::RebuildWheelItemDisplays()
void MusicWheel::NotesChanged( PlayerNumber pn ) // update grade graphics and top score void MusicWheel::NotesChanged( PlayerNumber pn ) // update grade graphics and top score
{ {
DifficultyClass dc = PREFSMAN->m_PreferredDifficultyClass[pn]; DifficultyClass dc = PREFSMAN->m_PreferredDifficultyClass[pn];
Song* pSong = SONGMAN->m_pCurSong; Song* pSong = SONGMAN->GetCurrentSong();
Notes* m_pNotes = SONGMAN->m_pCurNotes[pn]; Notes* m_pNotes = SONGMAN->GetCurrentNotes( pn );
if( m_pNotes ) if( m_pNotes )
m_HighScore[pn].SetScore( (float)m_pNotes->m_iTopScore ); m_HighScore[pn].SetScore( (float)m_pNotes->m_iTopScore );
@@ -886,12 +897,22 @@ void MusicWheel::TweenOnScreen()
} }
float fX = GetBannerX(0); float fX, fY;
float fY = GetBannerY(0);
m_sprSelectionOverlay.SetXY( fX+320, fY ); fX = GetBannerX(0);
m_sprSelectionOverlay.BeginTweeningQueued( 0.5f ); // sleep fY = GetBannerY(0);
m_sprSelectionOverlay.BeginTweeningQueued( 0.2f, Actor::TWEEN_BIAS_BEGIN ); m_frameOverlay.SetXY( fX+320, fY );
m_sprSelectionOverlay.SetTweenX( fX ); m_frameOverlay.BeginTweeningQueued( 0.5f ); // sleep
m_frameOverlay.BeginTweeningQueued( 0.4f, Actor::TWEEN_BIAS_BEGIN );
m_frameOverlay.SetTweenX( fX );
fX = m_ScrollBar.GetX();
fY = m_ScrollBar.GetY();
m_ScrollBar.SetXY( fX+30, fY );
m_ScrollBar.BeginTweeningQueued( 0.7f ); // sleep
m_ScrollBar.BeginTweeningQueued( 0.2f, Actor::TWEEN_BIAS_BEGIN );
m_ScrollBar.SetTweenX( fX );
for( int i=0; i<NUM_WHEEL_ITEMS_TO_DRAW; i++ ) for( int i=0; i<NUM_WHEEL_ITEMS_TO_DRAW; i++ )
@@ -927,12 +948,18 @@ void MusicWheel::TweenOffScreen()
} }
float fX = GetBannerX(0); float fX, fY;
float fY = GetBannerY(0); fX = GetBannerX(0);
m_sprSelectionOverlay.SetXY( fX, fY ); fY = GetBannerY(0);
m_sprSelectionOverlay.BeginTweeningQueued( 0 ); // sleep m_frameOverlay.SetXY( fX, fY );
m_sprSelectionOverlay.BeginTweeningQueued( 0.2f, Actor::TWEEN_BIAS_END ); m_frameOverlay.BeginTweeningQueued( 0 ); // sleep
m_sprSelectionOverlay.SetTweenX( fX+320 ); m_frameOverlay.BeginTweeningQueued( 0.2f, Actor::TWEEN_BIAS_END );
m_frameOverlay.SetTweenX( fX+320 );
m_ScrollBar.BeginTweeningQueued( 0 );
m_ScrollBar.BeginTweeningQueued( 0.2f, Actor::TWEEN_BIAS_BEGIN );
m_ScrollBar.SetTweenX( m_ScrollBar.GetX()+30 );
for( int i=0; i<NUM_WHEEL_ITEMS_TO_DRAW; i++ ) for( int i=0; i<NUM_WHEEL_ITEMS_TO_DRAW; i++ )
+5 -2
View File
@@ -120,13 +120,16 @@ protected:
ScrollBar m_ScrollBar; ScrollBar m_ScrollBar;
Sprite m_sprSelectionOverlay;
SongSortOrder m_SortOrder;
MusicSortDisplay m_MusicSortDisplay; MusicSortDisplay m_MusicSortDisplay;
ActorFrame m_frameOverlay;
// Actors inside of m_frameOverlay
Sprite m_sprSelectionOverlay;
Sprite m_sprHighScoreFrame[NUM_PLAYERS]; Sprite m_sprHighScoreFrame[NUM_PLAYERS];
ScoreDisplayRolling m_HighScore[NUM_PLAYERS]; ScoreDisplayRolling m_HighScore[NUM_PLAYERS];
SongSortOrder m_SortOrder;
CArray<WheelItemData, WheelItemData&> m_WheelItemDatas[NUM_SORT_ORDERS]; CArray<WheelItemData, WheelItemData&> m_WheelItemDatas[NUM_SORT_ORDERS];
CArray<WheelItemData, WheelItemData&> &GetCurWheelItemDatas() { return m_WheelItemDatas[m_SortOrder]; }; CArray<WheelItemData, WheelItemData&> &GetCurWheelItemDatas() { return m_WheelItemDatas[m_SortOrder]; };
+28 -30
View File
@@ -115,14 +115,7 @@ void Player::Update( float fDeltaTime, float fSongBeat, float fMaxBeatDifference
// //
// Check for TapNote misses // Check for TapNote misses
// //
int iNumMisses = UpdateTapNotesMissedOlderThan( m_fSongBeat-fMaxBeatDifference ); UpdateTapNotesMissedOlderThan( m_fSongBeat-fMaxBeatDifference );
if( iNumMisses > 0 )
{
m_Judgement.SetJudgement( TNS_MISS );
m_Combo.EndCombo();
for( int i=0; i<iNumMisses; i++ )
m_pLifeMeter->ChangeLife( TNS_MISS );
}
// //
@@ -358,6 +351,8 @@ void Player::CheckForCompleteRow( float fSongBeat, int col, float fMaxBeatDiff )
//LOG->WriteLine( "iIndexStartLookingAt = %d, iNumElementsToExamine = %d", iIndexStartLookingAt, iNumElementsToExamine ); //LOG->WriteLine( "iIndexStartLookingAt = %d, iNumElementsToExamine = %d", iIndexStartLookingAt, iNumElementsToExamine );
int iIndexOverlappingNote = -1; // leave as -1 if we don't find any
// 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++ )
{ {
@@ -374,38 +369,35 @@ void Player::CheckForCompleteRow( float fSongBeat, int col, float fMaxBeatDiff )
//LOG->WriteLine( "Checking Notes[%d]", iCurrentIndexEarlier ); //LOG->WriteLine( "Checking Notes[%d]", iCurrentIndexEarlier );
if( m_TapNotes[col][iCurrentIndexEarlier] != '0' ) // these Notes overlap if( m_TapNotes[col][iCurrentIndexEarlier] != '0' ) // these Notes overlap
{ {
m_TapNotes[col][iCurrentIndexEarlier] = '0'; // mark hit iIndexOverlappingNote = iCurrentIndexEarlier;
break;
bool bRowDestroyed = true;
for( int t=0; t<m_iNumTracks; t++ ) // did this complete the elminiation of the row?
{
if( m_TapNotes[col][iCurrentIndexEarlier] != '0' )
bRowDestroyed = false;
}
if( bRowDestroyed )
OnRowDestroyed( fSongBeat, col, fMaxBeatDiff, iCurrentIndexEarlier );
return;
} }
//////////////////////////// ////////////////////////////
// check the step to the right of iIndexStartLookingAt // check the step to the right of iIndexStartLookingAt
//////////////////////////// ////////////////////////////
//LOG->WriteLine( "Checking Notes[%d]", iCurrentIndexLater ); //LOG->WriteLine( "Checking Notes[%d]", iCurrentIndexLater );
if( m_TapNotes[col][iCurrentIndexLater] != '0' ) // these Notes overlap if( m_TapNotes[col][iCurrentIndexLater] != '0' ) // these Notes overlap
{ {
m_TapNotes[col][iCurrentIndexLater] = '0'; // mark hit iIndexOverlappingNote = iCurrentIndexLater;
break;
bool bRowDestroyed = true;
for( int t=0; t<m_iNumTracks; t++ ) // did this complete the elminiation of the row?
{
if( m_TapNotes[col][iCurrentIndexLater] != '0' )
bRowDestroyed = false;
}
if( bRowDestroyed )
OnRowDestroyed( fSongBeat, col, fMaxBeatDiff, iCurrentIndexLater );
return;
} }
} }
if( iIndexOverlappingNote != -1 )
{
m_TapNotes[col][iIndexOverlappingNote] = '0'; // mark hit
bool bRowDestroyed = true;
for( int t=0; t<m_iNumTracks; t++ ) // did this complete the elminiation of the row?
{
if( m_TapNotes[t][iIndexOverlappingNote] != '0' )
bRowDestroyed = false;
}
if( bRowDestroyed )
OnRowDestroyed( fSongBeat, col, fMaxBeatDiff, iIndexOverlappingNote );
}
} }
void Player::OnRowDestroyed( float fSongBeat, int col, float fMaxBeatDiff, int iIndexThatWasSteppedOn ) void Player::OnRowDestroyed( float fSongBeat, int col, float fMaxBeatDiff, int iIndexThatWasSteppedOn )
@@ -542,6 +534,12 @@ int Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanThisBeat )
} }
} }
if( iNumMissesFound > 0 )
{
m_Judgement.SetJudgement( TNS_MISS );
m_Combo.EndCombo();
}
return iNumMissesFound; return iNumMissesFound;
} }
+14 -7
View File
@@ -35,7 +35,7 @@ PrefsManager::PrefsManager()
m_PreferredDifficultyClass[p] = CLASS_EASY; m_PreferredDifficultyClass[p] = CLASS_EASY;
m_SongSortOrder = SORT_GROUP; m_SongSortOrder = SORT_GROUP;
m_PlayMode = PLAY_MODE_ARCADE; m_PlayMode = PLAY_MODE_ARCADE;
m_iCurrentStage = 1; m_iCurrentStageIndex = 0;
ReadPrefsFromDisk(); ReadPrefsFromDisk();
} }
@@ -84,29 +84,36 @@ void PrefsManager::SavePrefsToDisk()
ini.WriteFile(); ini.WriteFile();
} }
int PrefsManager::GetStageIndex()
{
return m_iCurrentStageIndex;
}
int PrefsManager::GetStageNumber() int PrefsManager::GetStageNumber()
{ {
return m_iCurrentStage; return m_iCurrentStageIndex+1;
} }
bool PrefsManager::IsFinalStage() bool PrefsManager::IsFinalStage()
{ {
return m_iNumArcadeStages == m_iCurrentStage; return m_iCurrentStageIndex == m_iNumArcadeStages-1;
} }
CString PrefsManager::GetStageText() CString PrefsManager::GetStageText()
{ {
if( m_iCurrentStage == 3 ) if( m_iCurrentStageIndex == m_iNumArcadeStages-1 )
return "Final"; return "Final";
int iStageNo = m_iCurrentStageIndex+1;
CString sNumberSuffix; CString sNumberSuffix;
if( ( (m_iCurrentStage/10) % 10 ) == 1 ) // in the teens (e.g. 19, 213) if( ( (iStageNo/10) % 10 ) == 1 ) // in the teens (e.g. 19, 213)
{ {
sNumberSuffix = "th"; sNumberSuffix = "th";
} }
else // not in the teens else // not in the teens
{ {
const int iLastDigit = m_iCurrentStage%10; const int iLastDigit = iStageNo%10;
switch( iLastDigit ) switch( iLastDigit )
{ {
case 1: sNumberSuffix = "st"; break; case 1: sNumberSuffix = "st"; break;
@@ -115,6 +122,6 @@ CString PrefsManager::GetStageText()
default:sNumberSuffix = "th"; break; default:sNumberSuffix = "th"; break;
} }
} }
return ssprintf( "%d%s", PREFSMAN->m_iCurrentStage, sNumberSuffix ); return ssprintf( "%d%s", this->GetStageNumber(), sNumberSuffix );
} }
+3 -2
View File
@@ -42,10 +42,11 @@ public:
// Options that are NOT saved between sessions // Options that are NOT saved between sessions
DifficultyClass m_PreferredDifficultyClass[NUM_PLAYERS]; DifficultyClass m_PreferredDifficultyClass[NUM_PLAYERS];
SongSortOrder m_SongSortOrder; // used by MusicWheel and should be saved until the app exits SongSortOrder m_SongSortOrder; // used by MusicWheel and should be saved until the app exits
PlayMode m_PlayMode; PlayMode m_PlayMode;
int m_iCurrentStage; // starts at 1, and is incremented with each Stage Clear int m_iCurrentStageIndex; // starts at 0, and is incremented with each Stage Clear
int GetStageIndex();
int GetStageNumber(); int GetStageNumber();
bool IsFinalStage(); bool IsFinalStage();
CString GetStageText(); CString GetStageText();
+15 -5
View File
@@ -31,10 +31,7 @@ RageLog::RageLog()
// delete old log files // delete old log files
DeleteFile( LOG_FILE_NAME ); DeleteFile( LOG_FILE_NAME );
// create a new console window and attach standard handles ShowConsole();
AllocConsole();
freopen("CONOUT$","wb",stdout);
freopen("CONOUT$","wb",stderr);
// Open log file and leave it open. Let the OS close it when the app exits // Open log file and leave it open. Let the OS close it when the app exits
m_fileLog = fopen( LOG_FILE_NAME, "w" ); m_fileLog = fopen( LOG_FILE_NAME, "w" );
@@ -51,11 +48,24 @@ RageLog::RageLog()
RageLog::~RageLog() RageLog::~RageLog()
{ {
FreeConsole();
Flush(); Flush();
FreeConsole();
fclose( m_fileLog ); fclose( m_fileLog );
} }
void RageLog::ShowConsole()
{
// create a new console window and attach standard handles
AllocConsole();
freopen("CONOUT$","wb",stdout);
freopen("CONOUT$","wb",stderr);
}
void RageLog::HideConsole()
{
FreeConsole();
}
void RageLog::WriteLine( LPCTSTR fmt, ...) void RageLog::WriteLine( LPCTSTR fmt, ...)
{ {
va_list va; va_list va;
+3
View File
@@ -21,6 +21,9 @@ public:
void WriteLineHr( HRESULT hr, LPCTSTR fmt, ...); void WriteLineHr( HRESULT hr, LPCTSTR fmt, ...);
void Flush(); void Flush();
void ShowConsole();
void HideConsole();
protected: protected:
FILE* m_fileLog; FILE* m_fileLog;
}; };
+23 -35
View File
@@ -15,6 +15,9 @@
#include "ThemeManager.h" #include "ThemeManager.h"
const float SCORE_TWEEN_TIME = 0.5f;
ScoreDisplayRolling::ScoreDisplayRolling() ScoreDisplayRolling::ScoreDisplayRolling()
{ {
LOG->WriteLine( "ScoreDisplayRolling::ScoreDisplayRolling()" ); LOG->WriteLine( "ScoreDisplayRolling::ScoreDisplayRolling()" );
@@ -23,12 +26,7 @@ ScoreDisplayRolling::ScoreDisplayRolling()
Load( THEME->GetPathTo(FONT_SCORE_NUMBERS) ); Load( THEME->GetPathTo(FONT_SCORE_NUMBERS) );
TurnShadowOff(); TurnShadowOff();
// init the digits m_fTrailingScore = 0;
for( int i=0; i<NUM_SCORE_DIGITS; i++ )
{
m_iCurrentScoreDigits[i] = 0;
m_iDestinationScoreDigits[i] = 0;
}
SetScore( 0 ); SetScore( 0 );
} }
@@ -43,15 +41,9 @@ void ScoreDisplayRolling::SetScore( float fNewScore )
{ {
m_fScore = fNewScore; m_fScore = fNewScore;
// super inefficient (but isn't called very often) float fDelta = m_fScore - m_fTrailingScore;
CString sFormatString = ssprintf( "%%%d.0f", NUM_SCORE_DIGITS );
CString sScore = ssprintf( sFormatString, fNewScore );
for( int i=0; i<NUM_SCORE_DIGITS; i++ )
{
m_iDestinationScoreDigits[i] = atoi( sScore.Mid(i,1) );
}
m_fScoreVelocity = fDelta / SCORE_TWEEN_TIME; // in score units per second
} }
@@ -64,36 +56,32 @@ float ScoreDisplayRolling::GetScore()
void ScoreDisplayRolling::Update( float fDeltaTime ) void ScoreDisplayRolling::Update( float fDeltaTime )
{ {
BitmapText::Update( fDeltaTime ); BitmapText::Update( fDeltaTime );
float fDeltaBefore = m_fScore - m_fTrailingScore;
m_fTrailingScore += m_fScoreVelocity * fDeltaTime;
float fDeltaAfter = m_fScore - m_fTrailingScore;
if( fDeltaBefore * fDeltaAfter < 0 ) // the sign changed
{
m_fTrailingScore = m_fScore;
m_fScoreVelocity = 0;
}
} }
void ScoreDisplayRolling::Draw() void ScoreDisplayRolling::Draw()
{ {
// find the leftmost current digit that doesn't match the destination digit if( m_fScore == 0 )
for( int i=0; i<NUM_SCORE_DIGITS; i++ )
{ {
if( m_iCurrentScoreDigits[i] != m_iDestinationScoreDigits[i] ) CString sFormat = ssprintf( "%%%d.0d", NUM_SCORE_DIGITS );
break; SetText( ssprintf(sFormat, 0) );
} }
else
// and increment that digit and everything after
for( ; i<NUM_SCORE_DIGITS; i++ )
{ {
m_iCurrentScoreDigits[i]++; CString sFormat = ssprintf( "%%%d.0f", NUM_SCORE_DIGITS );
if( m_iCurrentScoreDigits[i] > 9 ) SetText( ssprintf(sFormat, m_fTrailingScore) );
m_iCurrentScoreDigits[i] = 0;
} }
int iCurScore = 0;
int iMultiplier = 1;
for( int d=NUM_SCORE_DIGITS-1; d>=0; d-- ) // foreach digit
{
iCurScore += m_iCurrentScoreDigits[d] * iMultiplier;
iMultiplier *= 10;
}
CString sFormat = ssprintf( "%%%d.0d", NUM_SCORE_DIGITS );
SetText( ssprintf(sFormat, iCurScore) );
BitmapText::Draw(); BitmapText::Draw();
} }
+2 -2
View File
@@ -35,6 +35,6 @@ public:
protected: protected:
float m_fScore; float m_fScore;
int m_iCurrentScoreDigits[NUM_SCORE_DIGITS]; float m_fTrailingScore;
int m_iDestinationScoreDigits[NUM_SCORE_DIGITS]; float m_fScoreVelocity;
}; };
+6 -6
View File
@@ -53,7 +53,7 @@ ScreenEdit::ScreenEdit()
{ {
LOG->WriteLine( "ScreenEdit::ScreenEdit()" ); LOG->WriteLine( "ScreenEdit::ScreenEdit()" );
m_pSong = SONGMAN->m_pCurSong; m_pSong = SONGMAN->GetCurrentSong();
m_Mode = MODE_EDIT; m_Mode = MODE_EDIT;
@@ -80,7 +80,7 @@ ScreenEdit::ScreenEdit()
NoteData noteData; NoteData noteData;
noteData.m_iNumTracks = GAMEMAN->GetCurrentStyleDef()->m_iColsPerPlayer; noteData.m_iNumTracks = GAMEMAN->GetCurrentStyleDef()->m_iColsPerPlayer;
if( SONGMAN->m_pCurNotes[PLAYER_1] != NULL ) if( SONGMAN->m_pCurNotes[PLAYER_1] != NULL )
noteData = *SONGMAN->m_pCurNotes[PLAYER_1]->GetNoteData(); noteData = *SONGMAN->GetCurrentNotes(PLAYER_1)->GetNoteData();
m_NoteFieldEdit.SetXY( EDIT_CENTER_X, EDIT_GRAY_Y ); m_NoteFieldEdit.SetXY( EDIT_CENTER_X, EDIT_GRAY_Y );
m_NoteFieldEdit.SetZoom( 0.5f ); m_NoteFieldEdit.SetZoom( 0.5f );
@@ -364,20 +364,20 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
case DIK_S: case DIK_S:
// copy edit into current Notes // copy edit into current Notes
Notes* pNotes; Notes* pNotes;
pNotes = SONGMAN->m_pCurNotes[PLAYER_1]; pNotes = SONGMAN->GetCurrentNotes(PLAYER_1);
if( pNotes == NULL ) if( pNotes == NULL )
{ {
// allocate a new Notes // allocate a new Notes
SONGMAN->m_pCurSong->m_arrayNotes.SetSize( SONGMAN->m_pCurSong->m_arrayNotes.GetSize() + 1 ); SONGMAN->GetCurrentSong()->m_arrayNotes.SetSize( SONGMAN->GetCurrentSong()->m_arrayNotes.GetSize() + 1 );
pNotes = &SONGMAN->m_pCurSong->m_arrayNotes[ SONGMAN->m_pCurSong->m_arrayNotes.GetSize()-1 ]; pNotes = &SONGMAN->GetCurrentSong()->m_arrayNotes[ SONGMAN->GetCurrentSong()->m_arrayNotes.GetSize()-1 ];
pNotes->m_NotesType = GAMEMAN->m_CurNotesType; pNotes->m_NotesType = GAMEMAN->m_CurNotesType;
pNotes->m_sDescription = "Untitled"; pNotes->m_sDescription = "Untitled";
pNotes->m_iMeter = 1; pNotes->m_iMeter = 1;
} }
pNotes->SetNoteData( (NoteData*)&m_NoteFieldEdit ); pNotes->SetNoteData( (NoteData*)&m_NoteFieldEdit );
SONGMAN->m_pCurSong->Save(); SONGMAN->GetCurrentSong()->Save();
break; break;
case DIK_UP: case DIK_UP:
case DIK_DOWN: case DIK_DOWN:
+2 -2
View File
@@ -310,9 +310,9 @@ void ScreenEditMenu::MenuStart( const PlayerNumber p )
MUSIC->Stop(); MUSIC->Stop();
SONGMAN->m_pCurSong = GetSelectedSong(); SONGMAN->SetCurrentSong( GetSelectedSong() );
GAMEMAN->m_CurNotesType = GetSelectedNotesType(); GAMEMAN->m_CurNotesType = GetSelectedNotesType();
SONGMAN->m_pCurNotes[PLAYER_1] = GetSelectedNotes(); SONGMAN->SetCurrentNotes( PLAYER_1, GetSelectedNotes() );
m_soundSelect.PlayRandom(); m_soundSelect.PlayRandom();
+4 -4
View File
@@ -71,10 +71,10 @@ ScreenGameplay::ScreenGameplay()
m_fTimeLeftBeforeDancingComment = TIME_BETWEEN_DANCING_COMMENTS; m_fTimeLeftBeforeDancingComment = TIME_BETWEEN_DANCING_COMMENTS;
m_bHasFailed = false; m_bHasFailed = false;
m_pSong = SONGMAN->m_pCurSong; m_pSong = SONGMAN->GetCurrentSong();
m_Background.LoadFromSong( SONGMAN->m_pCurSong ); m_Background.LoadFromSong( m_pSong );
m_Background.SetDiffuseColor( D3DXCOLOR(0.4f,0.4f,0.4f,1) ); m_Background.SetDiffuseColor( D3DXCOLOR(0.4f,0.4f,0.4f,1) );
this->AddActor( &m_Background ); this->AddActor( &m_Background );
@@ -91,11 +91,11 @@ ScreenGameplay::ScreenGameplay()
if( PREFSMAN->m_PlayerOptions[p].m_bReverseScroll ) if( PREFSMAN->m_PlayerOptions[p].m_bReverseScroll )
fDifficultyY = SCREEN_HEIGHT - DIFFICULTY_Y; fDifficultyY = SCREEN_HEIGHT - DIFFICULTY_Y;
m_DifficultyBanner[p].SetXY( DIFFICULTY_X[p], fDifficultyY ); m_DifficultyBanner[p].SetXY( DIFFICULTY_X[p], fDifficultyY );
m_DifficultyBanner[p].SetFromNotes( SONGMAN->m_pCurNotes[p] ); m_DifficultyBanner[p].SetFromNotes( SONGMAN->GetCurrentNotes((PlayerNumber)p) );
this->AddActor( &m_DifficultyBanner[p] ); this->AddActor( &m_DifficultyBanner[p] );
NoteData* pOriginalNoteData = SONGMAN->m_pCurNotes[p]->GetNoteData(); NoteData* pOriginalNoteData = SONGMAN->GetCurrentNotes((PlayerNumber)p)->GetNoteData();
NoteData newNoteData; NoteData newNoteData;
GAMEMAN->GetCurrentStyleDef()->GetTransformedNoteDataForStyle( (PlayerNumber)p, pOriginalNoteData, newNoteData ); GAMEMAN->GetCurrentStyleDef()->GetTransformedNoteDataForStyle( (PlayerNumber)p, pOriginalNoteData, newNoteData );
+1 -1
View File
@@ -280,7 +280,7 @@ void ScreenSelectGroup::MenuStart( const PlayerNumber p )
m_soundSelect.PlayRandom(); m_soundSelect.PlayRandom();
m_bChosen = true; m_bChosen = true;
SONGMAN->m_pCurSong = NULL; SONGMAN->SetCurrentSong( NULL );
SONGMAN->m_sPreferredGroup = m_arrayGroupNames[m_iSelection]; SONGMAN->m_sPreferredGroup = m_arrayGroupNames[m_iSelection];
if( 0 == stricmp(SONGMAN->m_sPreferredGroup, "All Music") ) if( 0 == stricmp(SONGMAN->m_sPreferredGroup, "All Music") )
+9 -10
View File
@@ -114,7 +114,7 @@ ScreenSelectMusic::ScreenSelectMusic()
m_textHoldForOptions.SetZoom( 1 ); m_textHoldForOptions.SetZoom( 1 );
m_textHoldForOptions.SetZoomY( 0 ); m_textHoldForOptions.SetZoomY( 0 );
m_textHoldForOptions.SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); m_textHoldForOptions.SetDiffuseColor( D3DXCOLOR(1,1,1,0) );
m_textHoldForOptions.SetZ( -4 ); m_textHoldForOptions.SetZ( -2 );
this->AddActor( &m_textHoldForOptions ); this->AddActor( &m_textHoldForOptions );
@@ -348,18 +348,13 @@ void ScreenSelectMusic::MenuStart( const PlayerNumber p )
return; return;
} }
TweenOffScreen();
m_Menu.TweenOffScreenToBlack( SM_None, false );
m_soundSelect.PlayRandom();
bool bIsNew = m_MusicWheel.GetSelectedSong()->IsNew(); bool bIsNew = m_MusicWheel.GetSelectedSong()->IsNew();
bool bIsHard = false; bool bIsHard = false;
for( int p=0; p<NUM_PLAYERS; p++ ) for( int p=0; p<NUM_PLAYERS; p++ )
{ {
if( !GAMEMAN->IsPlayerEnabled( (PlayerNumber)p ) ) if( !GAMEMAN->IsPlayerEnabled( (PlayerNumber)p ) )
continue; // skip continue; // skip
if( SONGMAN->m_pCurNotes[p] && SONGMAN->m_pCurNotes[p]->m_iMeter >= 9 ) if( SONGMAN->GetCurrentNotes((PlayerNumber)p) && SONGMAN->GetCurrentNotes((PlayerNumber)p)->m_iMeter >= 9 )
bIsHard = true; bIsHard = true;
} }
@@ -370,12 +365,16 @@ void ScreenSelectMusic::MenuStart( const PlayerNumber p )
else else
SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo(ANNOUNCER_SELECT_MUSIC_COMMENT_GENERAL) ); SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo(ANNOUNCER_SELECT_MUSIC_COMMENT_GENERAL) );
;
TweenOffScreen();
m_soundSelect.PlayRandom();
// show "hold NEXT for options" // show "hold NEXT for options"
m_textHoldForOptions.SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); m_textHoldForOptions.SetDiffuseColor( D3DXCOLOR(1,1,1,0) );
m_textHoldForOptions.BeginTweeningQueued( 0.25f ); // fade in m_textHoldForOptions.BeginTweeningQueued( 0.25f ); // fade in
m_textHoldForOptions.SetTweenZoomY( 1 ); m_textHoldForOptions.SetTweenZoomY( 1 );
m_textHoldForOptions.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,1) );
m_textHoldForOptions.BeginTweeningQueued( 2.0f ); // sleep m_textHoldForOptions.BeginTweeningQueued( 2.0f ); // sleep
m_textHoldForOptions.BeginTweeningQueued( 0.25f ); // fade out m_textHoldForOptions.BeginTweeningQueued( 0.25f ); // fade out
m_textHoldForOptions.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) ); m_textHoldForOptions.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
@@ -412,7 +411,7 @@ void ScreenSelectMusic::AfterNotesChange( const PlayerNumber p )
Notes* pNotes = m_arrayNotes.GetSize()>0 ? m_arrayNotes[m_iSelection[p]] : NULL; Notes* pNotes = m_arrayNotes.GetSize()>0 ? m_arrayNotes[m_iSelection[p]] : NULL;
SONGMAN->m_pCurNotes[p] = pNotes; SONGMAN->SetCurrentNotes( p, pNotes );
m_DifficultyIcon[p].SetFromNotes( pNotes ); m_DifficultyIcon[p].SetFromNotes( pNotes );
m_FootMeter[p].SetFromNotes( pNotes ); m_FootMeter[p].SetFromNotes( pNotes );
@@ -423,7 +422,7 @@ void ScreenSelectMusic::AfterNotesChange( const PlayerNumber p )
void ScreenSelectMusic::AfterMusicChange() void ScreenSelectMusic::AfterMusicChange()
{ {
Song* pSong = m_MusicWheel.GetSelectedSong(); Song* pSong = m_MusicWheel.GetSelectedSong();
SONGMAN->m_pCurSong = pSong; SONGMAN->SetCurrentSong( pSong );
m_arrayNotes.RemoveAll(); m_arrayNotes.RemoveAll();
+28 -3
View File
@@ -15,6 +15,7 @@
#include "IniFile.h" #include "IniFile.h"
#include "RageLog.h" #include "RageLog.h"
#include "ErrorCatcher/ErrorCatcher.h" #include "ErrorCatcher/ErrorCatcher.h"
#include "PrefsManager.h"
SongManager* SONGMAN = NULL; // global and accessable from anywhere in our program SongManager* SONGMAN = NULL; // global and accessable from anywhere in our program
@@ -35,9 +36,12 @@ const int NUM_GROUP_COLORS = sizeof(GROUP_COLORS) / sizeof(D3DXCOLOR);
SongManager::SongManager() SongManager::SongManager()
{ {
m_pCurSong = NULL; for( int i=0; i<MAX_SONG_QUEUE_SIZE; i++ )
for( int p=0; p<NUM_PLAYERS; p++ ) {
m_pCurNotes[p] = NULL; m_pCurSong[i] = NULL;
for( int p=0; p<NUM_PLAYERS; p++ )
m_pCurNotes[i][p] = NULL;
}
InitSongArrayFromDisk(); InitSongArrayFromDisk();
ReadStatisticsFromDisk(); ReadStatisticsFromDisk();
@@ -52,6 +56,27 @@ SongManager::~SongManager()
} }
Song* SongManager::GetCurrentSong()
{
return m_pCurSong[ PREFSMAN->GetStageIndex() ];
}
Notes* SongManager::GetCurrentNotes( PlayerNumber p )
{
return m_pCurNotes[ PREFSMAN->GetStageIndex() ][p];
}
void SongManager::SetCurrentSong( Song* pSong )
{
m_pCurSong[ PREFSMAN->GetStageIndex() ] = pSong;
}
void SongManager::SetCurrentNotes( PlayerNumber p, Notes* pNotes )
{
m_pCurNotes[ PREFSMAN->GetStageIndex() ][p] = pNotes;
}
void SongManager::InitSongArrayFromDisk() void SongManager::InitSongArrayFromDisk()
{ {
LoadStepManiaSongDir( "Songs" ); LoadStepManiaSongDir( "Songs" );
+10 -2
View File
@@ -15,6 +15,7 @@
#include "Song.h" #include "Song.h"
//#include <d3dxmath.h> // for D3DXCOLOR //#include <d3dxmath.h> // for D3DXCOLOR
const int MAX_SONG_QUEUE_SIZE = 30;
class SongManager class SongManager
{ {
@@ -22,14 +23,21 @@ public:
SongManager(); SongManager();
~SongManager(); ~SongManager();
Song* m_pCurSong; Song* m_pCurSong[MAX_SONG_QUEUE_SIZE];
Notes* m_pCurNotes[NUM_PLAYERS]; Notes* m_pCurNotes[MAX_SONG_QUEUE_SIZE][NUM_PLAYERS];
CString m_sPreferredGroup; CString m_sPreferredGroup;
CArray<Song*, Song*> m_pSongs; // all songs that can be played CArray<Song*, Song*> m_pSongs; // all songs that can be played
void InitSongArrayFromDisk(); void InitSongArrayFromDisk();
Song* GetCurrentSong();
Notes* GetCurrentNotes( PlayerNumber p );
void SetCurrentSong( Song* pSong );
void SetCurrentNotes( PlayerNumber p, Notes* pNotes );
void CleanUpSongArray(); void CleanUpSongArray();
void ReloadSongArray(); void ReloadSongArray();
+3 -1
View File
@@ -233,7 +233,9 @@ void MainLoop()
CreateObjects( g_hWndMain ); // Create the game objects CreateObjects( g_hWndMain ); // Create the game objects
ShowWindow( g_hWndMain, SW_SHOW ); ShowWindow( g_hWndMain, SW_SHOW );
#ifdef RELEASE
LOG->HideConsole();
#endif
// Now we're ready to recieve and process Windows messages. // Now we're ready to recieve and process Windows messages.
MSG msg; MSG msg;
+2 -2
View File
@@ -65,7 +65,7 @@ LINK32=link.exe
# PROP Use_MFC 1 # PROP Use_MFC 1
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "../" # PROP Output_Dir "../"
# PROP Intermediate_Dir "../Debug" # PROP Intermediate_Dir "../Debug-VC6"
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
@@ -79,7 +79,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /out:"../StepMania-debug.exe" /pdbtype:sept # ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /out:"../StepMania-debug-VC6.exe" /pdbtype:sept
!ENDIF !ENDIF
-6
View File
@@ -719,12 +719,6 @@
<File <File
RelativePath="ScoreDisplayRolling.h"> RelativePath="ScoreDisplayRolling.h">
</File> </File>
<File
RelativePath="ScoreDisplayRollingWithFrame.cpp">
</File>
<File
RelativePath="ScoreDisplayRollingWithFrame.h">
</File>
</Filter> </Filter>
<Filter <Filter
Name="Rage" Name="Rage"