Add 'difficult' for nonstop courses.

This feels hackish; feel free to make it more general
This commit is contained in:
Chris Gomez
2003-03-07 05:24:52 +00:00
parent 8d47a3e57e
commit 7d5216e9b7
7 changed files with 71 additions and 0 deletions
+36
View File
@@ -29,6 +29,7 @@ Course::Course()
m_bIsAutoGen = false; m_bIsAutoGen = false;
m_bRepeat = false; m_bRepeat = false;
m_bRandomize = false; m_bRandomize = false;
m_bDifficult = false;
m_iLives = -1; m_iLives = -1;
// //
@@ -604,6 +605,41 @@ void Course::AddScores( NotesType nt, bool bPlayerEnabled[NUM_PLAYERS], int iDan
} }
} }
bool Course::MakeNormal()
{
if( !m_bRepeat && m_iLives == -1 ) // nonstop only, not oni or endless
if(m_bDifficult) //only make it easy if it's already difficult
{
unsigned c;
for( c = 0; c < m_entries.size(); c++)
{
if( m_entries[c].difficulty == DIFFICULTY_BEGINNER || m_entries[c].difficulty == DIFFICULTY_INVALID ) // don't suddenly make things invalid or worse
continue;
m_entries[c].difficulty = Difficulty(m_entries[c].difficulty - 1);
}
m_bDifficult = false;
return true;
}
return false;
}
bool Course::MakeDifficult()
{
if( !m_bRepeat && m_iLives == -1 ) // nonstop only, not oni or endless
if(!m_bDifficult) //only make it difficult once
{
unsigned c;
for( c = 0; c < m_entries.size(); c++)
{
if( m_entries[c].difficulty < DIFFICULTY_CHALLENGE ) // don't suddenly make things invalid or worse
m_entries[c].difficulty = Difficulty(m_entries[c].difficulty + 1);
}
m_bDifficult = true;
return true;
}
return false;
}
// //
// Sorting stuff // Sorting stuff
+3
View File
@@ -52,6 +52,7 @@ public:
bool m_bRepeat; // repeat after last song? "Endless" bool m_bRepeat; // repeat after last song? "Endless"
bool m_bRandomize; // play the songs in a random order bool m_bRandomize; // play the songs in a random order
bool m_bDifficult; // only make something difficult once
int m_iLives; // -1 means use bar life meter int m_iLives; // -1 means use bar life meter
int m_iExtra; // extra stage number... // not used? -Chris int m_iExtra; // extra stage number... // not used? -Chris
@@ -75,6 +76,8 @@ public:
void GetMeterRange( int stage, int& iMeterLowOut, int& iMeterHighOut ) const; void GetMeterRange( int stage, int& iMeterLowOut, int& iMeterHighOut ) const;
bool ContainsAnyMysterySongs() const; bool ContainsAnyMysterySongs() const;
bool GetTotalSeconds( float& fSecondsOut ) const; bool GetTotalSeconds( float& fSecondsOut ) const;
bool MakeDifficult();
bool MakeNormal();
void LoadFromCRSFile( CString sPath ); void LoadFromCRSFile( CString sPath );
+1
View File
@@ -78,6 +78,7 @@ void GameState::Reset()
m_bJukeboxUsesModifiers = false; m_bJukeboxUsesModifiers = false;
m_iCurrentStageIndex = 0; m_iCurrentStageIndex = 0;
m_bAllow2ndExtraStage = true; m_bAllow2ndExtraStage = true;
m_bDifficultCourses = false;
m_pCurSong = NULL; m_pCurSong = NULL;
for( p=0; p<NUM_PLAYERS; p++ ) for( p=0; p<NUM_PLAYERS; p++ )
+1
View File
@@ -48,6 +48,7 @@ public:
int m_iCoins; // not "credits" int m_iCoins; // not "credits"
PlayerNumber m_MasterPlayerNumber; // used in Styles where one player controls both sides PlayerNumber m_MasterPlayerNumber; // used in Styles where one player controls both sides
bool m_bIsOnSystemMenu; // system screens will not be effected by the operator key -- Miryokuteki bool m_bIsOnSystemMenu; // system screens will not be effected by the operator key -- Miryokuteki
bool m_bDifficultCourses; //used in nonstop
int GetNumSidesJoined() int GetNumSidesJoined()
{ {
int iNumSidesJoined = 0; int iNumSidesJoined = 0;
+6
View File
@@ -836,6 +836,9 @@ void MusicWheel::Update( float fDeltaTime )
void MusicWheel::ChangeMusic(int dist) void MusicWheel::ChangeMusic(int dist)
{ {
if(GAMESTATE->m_PlayMode == PLAY_MODE_NONSTOP)
GetSelectedCourse()->MakeNormal();
m_iSelection += dist; m_iSelection += dist;
if( m_iSelection < 0 ) if( m_iSelection < 0 )
m_iSelection = m_CurWheelItemData.size()-1; m_iSelection = m_CurWheelItemData.size()-1;
@@ -846,6 +849,9 @@ void MusicWheel::ChangeMusic(int dist)
m_fPositionOffsetFromSelection += dist; m_fPositionOffsetFromSelection += dist;
if(GAMESTATE->m_bDifficultCourses && GAMESTATE->m_PlayMode == PLAY_MODE_NONSTOP)
GetSelectedCourse()->MakeDifficult();
SCREENMAN->SendMessageToTopScreen( SM_SongChanged, 0 ); SCREENMAN->SendMessageToTopScreen( SM_SongChanged, 0 );
/* If we're moving automatically, don't play this; it'll be called in Update. */ /* If we're moving automatically, don't play this; it'll be called in Update. */
+23
View File
@@ -128,6 +128,8 @@ ScreenSelectCourse::ScreenSelectCourse()
m_soundSelect.Load( THEME->GetPathTo("Sounds","menu start") ); m_soundSelect.Load( THEME->GetPathTo("Sounds","menu start") );
m_soundOptionsChange.Load( THEME->GetPathTo("Sounds","select music options") ); m_soundOptionsChange.Load( THEME->GetPathTo("Sounds","select music options") );
m_soundChangeNotes.Load( THEME->GetPathTo("Sounds","select music notes") );
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("select course intro") ); SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("select course intro") );
@@ -247,6 +249,27 @@ void ScreenSelectCourse::Input( const DeviceInput& DeviceI, InputEventType type,
return; return;
} }
if( CodeDetector::EnteredEasierDifficulty(GameI.controller) )
{
if( m_MusicWheel.GetSelectedCourse()->MakeNormal() )
{
m_soundChangeNotes.Play();
GAMESTATE->m_bDifficultCourses = false;
SCREENMAN->SendMessageToTopScreen(SM_SongChanged,0);
}
}
if( CodeDetector::EnteredHarderDifficulty(GameI.controller) )
{
if( m_MusicWheel.GetSelectedCourse()->MakeDifficult() )
{
m_soundChangeNotes.Play();
GAMESTATE->m_bDifficultCourses = true;
SCREENMAN->SendMessageToTopScreen(SM_SongChanged,0);
}
}
Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); // default input handler Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); // default input handler
} }
+1
View File
@@ -62,6 +62,7 @@ protected:
RageSound m_soundSelect; RageSound m_soundSelect;
RageSound m_soundOptionsChange; RageSound m_soundOptionsChange;
RageSound m_soundChangeNotes;
}; };