From 5a7b10e98924d9fcaecc7995c06e49e5ca0e6646 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 26 Jan 2003 20:49:05 +0000 Subject: [PATCH] more work on ranking --- stepmania/Themes/default/metrics.ini | 10 +- stepmania/src/Actor.cpp | 18 ++- stepmania/src/Actor.h | 5 + stepmania/src/GameConstantsAndTypes.cpp | 1 - stepmania/src/Screen.cpp | 13 +- stepmania/src/Screen.h | 4 +- stepmania/src/ScreenAttract.cpp | 11 +- stepmania/src/ScreenLogo.h | 2 +- stepmania/src/ScreenMessage.h | 1 + stepmania/src/ScreenRanking.cpp | 163 +++++++++++++----------- stepmania/src/ScreenRanking.h | 8 +- stepmania/src/StepMania.vcproj | 3 + 12 files changed, 141 insertions(+), 98 deletions(-) diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index e6c34a4810..667519a313 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -764,15 +764,15 @@ SecondsToShow=10 NextScreen=ScreenRanking [ScreenRanking] -SecondsToShow=30 +SecondsToShow=0 // ignored in favor of SecsBetweenPages below NextScreen=ScreenMemoryCard CategoryX=520 -CategoryY=30 +CategoryY=32 TypeX=520 -TypeY=50 +TypeY=60 LineSpacingX=0 LineSpacingY=60 -BulletsStartX=60 +BulletsStartX=100 BulletsStartY=140 NamesStartX=250 NamesStartY=140 @@ -782,7 +782,7 @@ ScoresStartX=450 ScoresStartY=140 ScoresZoom=1.2 ScoresColor=0.8,0.8,1,1 -SecsBetweenCategories=5 +SecondsPerPage=5 ShowCategories=1 CoursesToShow=Courses/NaokiStandard.crs,Courses/ParanoiaBrothers.crs NotesTypesToHide=dance-couple,dance-solo diff --git a/stepmania/src/Actor.cpp b/stepmania/src/Actor.cpp index cdddbc1272..b912cb7736 100644 --- a/stepmania/src/Actor.cpp +++ b/stepmania/src/Actor.cpp @@ -517,9 +517,19 @@ void Actor::Fade( float fSleepSeconds, CString sFadeString, float fFadeSeconds, else if( CONTAINS("spring") ) tt = TWEEN_SPRING; else tt = TWEEN_LINEAR; - mod.pos.x += (CONTAINS("left")?-SCREEN_WIDTH:0) + (CONTAINS("right")?+SCREEN_HEIGHT:0); - mod.pos.y += (CONTAINS("top")?-SCREEN_WIDTH:0) + (CONTAINS("bottom")?+SCREEN_HEIGHT:0); - mod.pos.z += 0; + + float fDeltaX = (float)(CONTAINS("left")?-SCREEN_WIDTH:0) + (CONTAINS("right")?+SCREEN_HEIGHT:0); + float fDeltaY = (float)(CONTAINS("top")?-SCREEN_WIDTH:0) + (CONTAINS("bottom")?+SCREEN_HEIGHT:0); + float fDeltaZ = (float)0; + if( CONTAINS("far") ) + { + fDeltaX *= 2; + fDeltaY *= 2; + fDeltaZ *= 2; + } + mod.pos.x += fDeltaX; + mod.pos.y += fDeltaY; + mod.pos.z += fDeltaZ; mod.rotation.x += (CONTAINS("spinx")?-PI*2:0); mod.rotation.y += (CONTAINS("spiny")?-PI*2:0); mod.rotation.z += (CONTAINS("spinz")?-PI*2:0); @@ -534,7 +544,7 @@ void Actor::Fade( float fSleepSeconds, CString sFadeString, float fFadeSeconds, mod.glow.a *= CONTAINS("glow")?1:0; -// StopTweening(); // Will commenting this out break some of the animations? + StopTweening(); m_current = bOnToScreenOrOffOfScreen ? original : mod; BeginTweening( fSleepSeconds ); BeginTweening( fFadeSeconds, tt ); diff --git a/stepmania/src/Actor.h b/stepmania/src/Actor.h index 1f309dc6ce..d3e6dc016c 100644 --- a/stepmania/src/Actor.h +++ b/stepmania/src/Actor.h @@ -171,7 +171,9 @@ public: Effect GetEffect() { return m_Effect; }; + // // other properties + // void TurnShadowOn() { m_bShadow = true; }; void TurnShadowOff() { m_bShadow = false; }; void SetShadowLength( float fLength ) { m_fShadowLength = fLength; }; @@ -180,6 +182,9 @@ public: void SetBlendModeNormal() { m_bBlendAdd = false; }; + // + // fade command + // void Fade( float fSleepSeconds, CString sFadeString, float fFadeSeconds, bool bOnToScreenOrOffOfScreen ); void FadeOn( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,false); }; void FadeOff( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,true); }; diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index 0ba259c175..6e033a71cb 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -66,4 +66,3 @@ RankingCategory AverageMeterToRankingCategory( float fAverageMeter ) } - diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index 641e967e7b..9daeac2bde 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -116,7 +116,7 @@ void Screen::MenuCoin( PlayerNumber pn ) } } -void Screen::SendScreenMessage( ScreenMessage SM, float fDelay ) +void Screen::SendScreenMessage( const ScreenMessage SM, float fDelay ) { ASSERT( fDelay >= 0.0 ); @@ -125,3 +125,14 @@ void Screen::SendScreenMessage( ScreenMessage SM, float fDelay ) QSM.fDelayRemaining = fDelay; m_QueuedMessages.push_back( QSM ); } + +void Screen::ClearMessageQueue() +{ + m_QueuedMessages.clear(); +} + +void Screen::ClearMessageQueue( const ScreenMessage SM ) +{ + for( int i=m_QueuedMessages.size()-1; i>=0; i-- ) + m_QueuedMessages.erase( m_QueuedMessages.begin()+i ); +} diff --git a/stepmania/src/Screen.h b/stepmania/src/Screen.h index c7700fc02b..71b23384fd 100644 --- a/stepmania/src/Screen.h +++ b/stepmania/src/Screen.h @@ -37,8 +37,8 @@ public: virtual void HandleScreenMessage( const ScreenMessage SM ) {}; void SendScreenMessage( const ScreenMessage SM, const float fDelay ); - void ClearMessageQueue() { m_QueuedMessages.clear(); } - + void ClearMessageQueue(); + void ClearMessageQueue( const ScreenMessage SM ); // clear of a specific SM protected: // structure for holding messages sent to a Screen diff --git a/stepmania/src/ScreenAttract.cpp b/stepmania/src/ScreenAttract.cpp index afdcf3437a..2ed6250e6e 100644 --- a/stepmania/src/ScreenAttract.cpp +++ b/stepmania/src/ScreenAttract.cpp @@ -30,8 +30,6 @@ #define SECONDS_TO_SHOW THEME->GetMetricF(m_sMetricName,"SecondsToShow") #define NEXT_SCREEN THEME->GetMetric(m_sMetricName,"NextScreen") -const ScreenMessage SM_BeginFadingOut = ScreenMessage(SM_User+2); - ScreenAttract::ScreenAttract( CString sMetricName, CString sElementName ) { @@ -55,7 +53,7 @@ ScreenAttract::ScreenAttract( CString sMetricName, CString sElementName ) m_soundStart.Load( THEME->GetPathTo("Sounds","menu start") ); - SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds",m_sElementName + " music"), false ); + SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds",m_sElementName + " music") ); // DO loop. -Chris GAMESTATE->m_bPlayersCanJoin = true; @@ -96,8 +94,7 @@ void ScreenAttract::Input( const DeviceInput& DeviceI, const InputEventType type { case MENU_BUTTON_LEFT: case MENU_BUTTON_RIGHT: - if( !m_Fade.IsOpening() && !m_Fade.IsClosing() ) - m_Fade.CloseWipingRight( SM_GoToNextScreen ); + this->SendScreenMessage( SM_BeginFadingOut, 0 ); break; case MENU_BUTTON_COIN: Screen::MenuCoin( MenuI.player ); // increment coins, play sound @@ -149,7 +146,9 @@ void ScreenAttract::HandleScreenMessage( const ScreenMessage SM ) * music theme element and it's the same as the one we're playing * now, don't stop. (However, if we're going to interrupt it * when we fade in, it's cleaner to stop it before we fade out.) */ - SOUNDMAN->PlayMusic( "" ); + /* Don't stop the music, or else the music will start over from the + * beginning for consecutive screens with the same music. -Chris */ + //SOUNDMAN->PlayMusic( "" ); SCREENMAN->SetNewScreen( NEXT_SCREEN ); break; } diff --git a/stepmania/src/ScreenLogo.h b/stepmania/src/ScreenLogo.h index ae6e0391fe..5ada4fc294 100644 --- a/stepmania/src/ScreenLogo.h +++ b/stepmania/src/ScreenLogo.h @@ -4,7 +4,7 @@ ----------------------------------------------------------------------------- Class: ScreenLogo - Desc: Base class for all attraction screens. + Desc: Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. Chris Danford diff --git a/stepmania/src/ScreenMessage.h b/stepmania/src/ScreenMessage.h index a108a660aa..1fc4863277 100644 --- a/stepmania/src/ScreenMessage.h +++ b/stepmania/src/ScreenMessage.h @@ -20,6 +20,7 @@ enum ScreenMessage { SM_DoneOpeningWipingLeft, SM_DoneOpeningWipingRight, SM_MenuTimer, + SM_BeginFadingOut, SM_GoToNextScreen, SM_GoToPrevScreen, SM_User = 100 diff --git a/stepmania/src/ScreenRanking.cpp b/stepmania/src/ScreenRanking.cpp index 13cfde62d4..2fc968d017 100644 --- a/stepmania/src/ScreenRanking.cpp +++ b/stepmania/src/ScreenRanking.cpp @@ -33,13 +33,15 @@ #define SCORES_START_Y THEME->GetMetricF("ScreenRanking","ScoresStartY") #define SCORES_ZOOM THEME->GetMetricF("ScreenRanking","ScoresZoom") #define SCORES_COLOR THEME->GetMetricC("ScreenRanking","ScoresColor") -#define SECS_BETWEEN_PAGES THEME->GetMetricF("ScreenRanking","SecsBetweenPages") +#define SECONDS_PER_PAGE THEME->GetMetricF("ScreenRanking","SecondsPerPage") #define SHOW_CATEGORIES THEME->GetMetricB("ScreenRanking","ShowCategories") #define COURSES_TO_SHOW THEME->GetMetric("ScreenRanking","CoursesToShow") #define NOTES_TYPES_TO_HIDE THEME->GetMetric("ScreenRanking","NotesTypesToHide") -const ScreenMessage SM_NextCategory = (ScreenMessage)(SM_User+67); +const ScreenMessage SM_ShowNextPage = (ScreenMessage)(SM_User+67); +const ScreenMessage SM_HidePage = (ScreenMessage)(SM_User+68); + ScreenRanking::ScreenRanking() : ScreenAttract("ScreenRanking","ranking") { @@ -59,6 +61,7 @@ ScreenRanking::ScreenRanking() : ScreenAttract("ScreenRanking","ranking") m_sprBullets[i].SetXY( BULLETS_START_X+LINE_SPACING_X*i, BULLETS_START_Y+LINE_SPACING_Y*i ); m_sprBullets[i].StopAnimating(); m_sprBullets[i].SetState(i); + m_sprBullets[i].SetDiffuse( RageColor(1,1,1,0) ); this->AddChild( &m_sprBullets[i] ); m_textNames[i].LoadFromFont( THEME->GetPathTo("Fonts","ranking") ); @@ -77,104 +80,118 @@ ScreenRanking::ScreenRanking() : ScreenAttract("ScreenRanking","ranking") } - vector aNotesTypesToHide; + vector aNotesTypesToShow; + GAMEMAN->GetNotesTypesForGame( GAMESTATE->m_CurGame, aNotesTypesToShow ); + + // subtract hidden NotesTypes { vector asNotesTypesToHide; split( NOTES_TYPES_TO_HIDE, ",", asNotesTypesToHide, true ); for( unsigned i=0; i::iterator iter = find( aNotesTypesToShow.begin(), aNotesTypesToShow.end(), nt ); + if( iter != aNotesTypesToShow.end() ) + aNotesTypesToShow.erase( iter ); + } + } } - // fill m_vCategoriesToShow + + // fill m_vPagesToShow if( SHOW_CATEGORIES ) { - for( NotesType nt=(NotesType)0; nt