bool ScreenNetSelectMusic::MenuDown( const InputEventPlus &input ) { /* Tricky: If we have a player on player 2, and there is only player 2, * allow them to use player 1's controls to change their difficulty. */ /* Why? Nothing else allows that. (-who?) */ // I agree, that's a stupid idea -aj PlayerNumber pn = input.pn; if( GAMESTATE->IsPlayerEnabled( PLAYER_2 ) && !GAMESTATE->IsPlayerEnabled( PLAYER_1 ) ) pn = PLAYER_2; if( GAMESTATE->m_pCurSong == NULL ) return false; StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType; vector <Steps *> MultiSteps; MultiSteps = GAMESTATE->m_pCurSong->GetStepsByStepsType( st ); if(MultiSteps.size() == 0) m_DC[pn] = NUM_Difficulty; else { int i; bool dcs[NUM_Difficulty]; for( i=0; i<NUM_Difficulty; ++i ) dcs[i] = false; for( i=0; i<(int)MultiSteps.size(); ++i ) dcs[MultiSteps[i]->GetDifficulty()] = true; for( i=0; i<NUM_Difficulty; ++i ) { if( (dcs[i]) && (i > m_DC[pn]) ) { m_DC[pn] = (Difficulty)i; break; } } // If failed to go up, loop if( i == NUM_Difficulty ) { for(i = 0;i<NUM_Difficulty;i++) { if(dcs[i]) { m_DC[pn] = (Difficulty)i; break; } } } } UpdateDifficulties( pn ); GAMESTATE->m_PreferredDifficulty[pn].Set( m_DC[pn] ); return true; }
void ScreenNetSelectMusic::MusicChanged() { if( GAMESTATE->m_pCurSong == NULL ) { FOREACH_EnabledPlayer (pn) UpdateDifficulties( pn ); SOUND->StopMusic(); // todo: handle playing section music correctly. -aj // SOUND->PlayMusic( m_sSectionMusicPath, NULL, true, 0, -1 ); return; } FOREACH_EnabledPlayer (pn) { m_DC[pn] = GAMESTATE->m_PreferredDifficulty[pn]; StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType; vector <Steps *> MultiSteps; MultiSteps = GAMESTATE->m_pCurSong->GetStepsByStepsType( st ); if(MultiSteps.size() == 0) m_DC[pn] = NUM_Difficulty; else { int i; Difficulty Target = Difficulty_Easy; bool dcs[NUM_Difficulty]; for( i=0; i<NUM_Difficulty; ++i ) dcs[i] = false; for( i=0; i<(int)MultiSteps.size(); ++i ) dcs[MultiSteps[i]->GetDifficulty()] = true; for( i=0; i<NUM_Difficulty; ++i ) if( dcs[i] ) { Target = (Difficulty)i; if( i >= m_DC[pn] ) { m_DC[pn] = (Difficulty)i; break; } } if( i == NUM_Difficulty ) m_DC[pn] = Target; } UpdateDifficulties( pn ); } // Copied from ScreenSelectMusic // TODO: Update me! -aj SOUND->StopMusic(); if( GAMESTATE->m_pCurSong->HasMusic() ) { // don't play the same sound over and over if(SOUND->GetMusicPath().CompareNoCase(GAMESTATE->m_pCurSong->GetMusicPath())) { SOUND->StopMusic(); SOUND->PlayMusic( GAMESTATE->m_pCurSong->GetMusicPath(), NULL, true, GAMESTATE->m_pCurSong->m_fMusicSampleStartSeconds, GAMESTATE->m_pCurSong->m_fMusicSampleLengthSeconds ); } } }