void ScreenNetSelectMusic::HandleScreenMessage( const ScreenMessage SM ) { if( SM == SM_GoToPrevScreen ) { SCREENMAN->SetNewScreen( THEME->GetMetric (m_sName, "PrevScreen") ); } else if( SM == SM_GoToNextScreen ) { SOUND->StopMusic(); SCREENMAN->SetNewScreen( THEME->GetMetric (m_sName, "NextScreen") ); } else if( SM == SM_UsersUpdate ) { m_MusicWheel.Move( 0 ); } else if( SM == SM_NoSongs ) { SCREENMAN->SetNewScreen( THEME->GetMetric (m_sName, "NoSongsScreen") ); } else if( SM == SM_ChangeSong ) { // First check to see if this song is already selected. This is so that if // you have multiple copies of the "same" song you can chose which copy to play. Song* CurSong = m_MusicWheel.GetSelectedSong(); if(CurSong != NULL ) if( ( !CurSong->GetTranslitArtist().CompareNoCase( NSMAN->m_sArtist ) ) && ( !CurSong->GetTranslitMainTitle().CompareNoCase( NSMAN->m_sMainTitle ) ) && ( !CurSong->GetTranslitSubTitle().CompareNoCase( NSMAN->m_sSubTitle ) ) ) { switch ( NSMAN->m_iSelectMode ) { case 0: case 1: NSMAN->m_iSelectMode = 0; NSMAN->SelectUserSong(); break; case 2: // Proper starting of song case 3: // Blind starting of song StartSelectedSong(); goto done; } } vector <Song *> AllSongs = SONGMAN->GetAllSongs(); unsigned i; for( i=0; i < AllSongs.size(); i++ ) { m_cSong = AllSongs[i]; if( ( !m_cSong->GetTranslitArtist().CompareNoCase( NSMAN->m_sArtist ) ) && ( !m_cSong->GetTranslitMainTitle().CompareNoCase( NSMAN->m_sMainTitle ) ) && ( !m_cSong->GetTranslitSubTitle().CompareNoCase( NSMAN->m_sSubTitle ) ) ) break; } bool haveSong = i != AllSongs.size(); switch (NSMAN->m_iSelectMode) { case 3: StartSelectedSong(); break; case 2: // We need to do cmd 1 as well here if(haveSong) { if(!m_MusicWheel.SelectSong( m_cSong ) ) { m_MusicWheel.ChangeSort( SORT_GROUP ); m_MusicWheel.FinishTweening(); SCREENMAN->PostMessageToTopScreen( SM_SetWheelSong, 0.710f ); } m_MusicWheel.Select(); m_MusicWheel.Move(-1); m_MusicWheel.Move(1); StartSelectedSong(); m_MusicWheel.Select(); } break; case 1: // Scroll to song as well if(haveSong) { if(!m_MusicWheel.SelectSong( m_cSong ) ) { //m_MusicWheel.ChangeSort( SORT_GROUP ); //m_MusicWheel.FinishTweening(); //SCREENMAN->PostMessageToTopScreen( SM_SetWheelSong, 0.710f ); m_MusicWheel.ChangeSort( SORT_GROUP ); m_MusicWheel.SetOpenSection( "" ); } m_MusicWheel.SelectSong( m_cSong ); m_MusicWheel.Select(); m_MusicWheel.Move(-1); m_MusicWheel.Move(1); m_MusicWheel.Select(); } // don't break here case 0: // See if client has song if(haveSong) NSMAN->m_iSelectMode = 0; else NSMAN->m_iSelectMode = 1; NSMAN->SelectUserSong(); } } else if( SM == SM_SetWheelSong ) // After we've done the sort on wheel, select song. { m_MusicWheel.SelectSong( m_cSong ); } else if( SM == SM_RefreshWheelLocation ) { m_MusicWheel.Select(); m_MusicWheel.Move(-1); m_MusicWheel.Move(1); m_MusicWheel.Select(); m_bAllowInput = true; } else if( SM == SM_BackFromPlayerOptions ) { // XXX HACK: This will cause ScreenSelectOptions to go back here. NSMAN->ReportNSSOnOff(1); GAMESTATE->m_EditMode = EditMode_Invalid; NSMAN->ReportPlayerOptions(); // Update changes FOREACH_EnabledPlayer(p) m_ModIconRow[p].SetFromGameState(); } else if( SM == SM_SongChanged ) { GAMESTATE->m_pCurSong.Set( m_MusicWheel.GetSelectedSong() ); MusicChanged(); } else if( SM == SM_SMOnlinePack ) { if( NSMAN->m_SMOnlinePacket.Read1() == 1 ) { switch ( NSMAN->m_SMOnlinePacket.Read1() ) { case 0: // Room title Change { RString titleSub; titleSub = NSMAN->m_SMOnlinePacket.ReadNT() + "\n"; titleSub += NSMAN->m_SMOnlinePacket.ReadNT(); if( NSMAN->m_SMOnlinePacket.Read1() != 1 ) { RString SMOnlineSelectScreen = THEME->GetMetric( m_sName, "RoomSelectScreen" ); SCREENMAN->SetNewScreen( SMOnlineSelectScreen ); } } } } } done: // Must be at end, as so it is last resort for SMOnline packets. // If it doesn't know what to do, then it'll just remove them. ScreenNetSelectBase::HandleScreenMessage( SM ); }
void ScreenEz2SelectMusic::Init() { ScreenWithMenuElements::Init(); i_SkipAheadOffset = 0; LastInputTime = 0; ScrollStartTime = 0; m_bTransitioning = false; m_bScanning = false; m_fRemainingWaitTime = 0.0f; i_ErrorDetected=0; if(PREVIEWMUSICMODE == 4) { m_soundBackMusic.Load( THEME->GetPathS("ScreenEz2SelectMusic","music")); m_soundBackMusic.Play(); } if(PREVIEWMUSICMODE == 1 || PREVIEWMUSICMODE == 3) { if(PREVIEWMUSICMODE == 1) SOUND->StopMusic(); iConfirmSelection = 0; } m_soundButtonPress.Load( THEME->GetPathS("ScreenEz2SelectMusic","buttonpress")); m_soundMusicChange.Load( THEME->GetPathS("ScreenEz2SelectMusic","change")); m_soundMusicCycle.Load( THEME->GetPathS("ScreenEz2SelectMusic","cycle")); m_ChoiceListFrame.Load( THEME->GetPathG("ScreenEz2SelectMusic","list frame")); m_ChoiceListFrame.SetXY( SCROLLING_LIST_X, SCROLLING_LIST_Y); this->AddChild( &m_ChoiceListFrame ); m_MusicBannerWheel.SetX(SCROLLING_LIST_X); m_MusicBannerWheel.SetY(SCROLLING_LIST_Y); m_MusicBannerWheel.SetRotationZ(SCROLLING_LIST_ROT); if(m_MusicBannerWheel.CheckSongsExist() != 0) { this->AddChild( &m_MusicBannerWheel ); m_ChoiceListHighlight.Load( THEME->GetPathG("ScreenEz2SelectMusic","list highlight")); m_ChoiceListHighlight.SetXY( SCROLLING_LIST_X, SCROLLING_LIST_Y); this->AddChild( &m_ChoiceListHighlight ); FOREACH_PlayerNumber( p ) { // m_FootMeter[p].SetXY( METER_X(p), METER_Y(p) ); // m_FootMeter[p].SetShadowLength( 2 ); // this->AddChild( &m_FootMeter[p] ); m_SpeedIcon[p].Load( THEME->GetPathG("ScreenEz2SelectMusic","speedicon")); m_SpeedIcon[p].SetXY( SPEEDICON_X(p), SPEEDICON_Y(p) ); m_SpeedIcon[p].SetDiffuse( RageColor(0,0,0,0) ); this->AddChild(&m_SpeedIcon[p] ); m_MirrorIcon[p].Load( THEME->GetPathG("ScreenEz2SelectMusic","mirroricon")); m_MirrorIcon[p].SetXY( MIRRORICON_X(p), MIRRORICON_Y(p) ); m_MirrorIcon[p].SetDiffuse( RageColor(0,0,0,0) ); this->AddChild(&m_MirrorIcon[p] ); m_ShuffleIcon[p].Load( THEME->GetPathG("ScreenEz2SelectMusic","shuffleicon")); m_ShuffleIcon[p].SetXY( SHUFFLEICON_X(p), SHUFFLEICON_Y(p) ); m_ShuffleIcon[p].SetDiffuse( RageColor(0,0,0,0) ); this->AddChild(&m_ShuffleIcon[p] ); m_HiddenIcon[p].Load( THEME->GetPathG("ScreenEz2SelectMusic","hiddenicon")); m_HiddenIcon[p].SetXY( HIDDENICON_X(p), HIDDENICON_Y(p) ); m_HiddenIcon[p].SetDiffuse( RageColor(0,0,0,0) ); this->AddChild(&m_HiddenIcon[p] ); m_VanishIcon[p].Load( THEME->GetPathG("ScreenEz2SelectMusic","vanishicon")); m_VanishIcon[p].SetXY( VANISHICON_X(p), VANISHICON_Y(p) ); m_VanishIcon[p].SetDiffuse( RageColor(0,0,0,0) ); this->AddChild(&m_VanishIcon[p] ); UpdateOptions( p,0); m_iSelection[p] = 0; } m_Guide.Load( THEME->GetPathG("ScreenEz2SelectMusic","guide")); m_Guide.SetXY( GUIDE_X, GUIDE_Y ); this->AddChild( &m_Guide ); m_InfoFrame.Load( THEME->GetPathG("ScreenEz2SelectMusic","infoframe") ); m_InfoFrame.SetXY( INFOFRAME_X, INFOFRAME_Y ); this->AddChild( &m_InfoFrame ); #ifdef _XBOX //shorten filenames for FATX m_PumpDifficultyCircle.Load( THEME->GetPathG("ScreenEz2SelectMusic","diff frame")); #else m_PumpDifficultyCircle.Load( THEME->GetPathG("ScreenEz2SelectMusic","difficulty frame")); #endif m_PumpDifficultyCircle.SetXY( PUMP_DIFF_X, PUMP_DIFF_Y ); this->AddChild( &m_PumpDifficultyCircle ); m_PumpDifficultyRating.LoadFromFont( THEME->GetPathF("ScreenEz2SelectMusic","difficulty") ); m_PumpDifficultyRating.SetXY( PUMP_DIFF_X, PUMP_DIFF_Y ); this->AddChild(&m_PumpDifficultyRating); m_CurrentGroup.LoadFromFont( THEME->GetPathF("ScreenEz2SelectMusic","GroupName") ); m_CurrentGroup.SetXY( GROUPNAME_X, GROUPNAME_Y ); this->AddChild(&m_CurrentGroup ); m_CurrentTitle.LoadFromFont( THEME->GetPathF("ScreenEz2SelectMusic","GroupName") ); m_CurrentTitle.SetXY( TITLE_X, TITLE_Y ); this->AddChild(&m_CurrentTitle ); m_CurrentSubTitle.LoadFromFont( THEME->GetPathF("ScreenEz2SelectMusic","GroupName") ); m_CurrentSubTitle.SetXY( SUBTITLE_X, SUBTITLE_Y ); m_CurrentSubTitle.SetZoom(0.8f); this->AddChild(&m_CurrentTitle ); m_CurrentArtist.LoadFromFont( THEME->GetPathF("ScreenEz2SelectMusic","GroupName") ); m_CurrentArtist.SetXY( ARTIST_X, ARTIST_Y ); this->AddChild(&m_CurrentArtist ); m_DifficultyRating.SetOrientation(DIFFICULTYRATING_ORIENTATION); m_DifficultyRating.SetX(DIFFICULTYRATING_X); m_DifficultyRating.SetY(DIFFICULTYRATING_Y); this->AddChild(&m_DifficultyRating); m_sprOptionsMessage.Load( THEME->GetPathG("ScreenEz2SelectMusic","options message") ); m_sprOptionsMessage.StopAnimating(); m_sprOptionsMessage.SetXY( SCREEN_CENTER_X, SCREEN_CENTER_Y ); m_sprOptionsMessage.SetZoom( 1 ); m_sprOptionsMessage.SetDiffuse( RageColor(1,1,1,0) ); this->AddChild( &m_sprOptionsMessage ); if(USE_MODE_SWITCHER == 1) { m_ModeSwitcher.SetXY(SCREEN_CENTER_X,SCREEN_CENTER_Y); this->AddChild( &m_ModeSwitcher ); } m_sprBalloon.SetName( "Balloon" ); TEXTUREMAN->CacheTexture( THEME->GetPathG("ScreenSelectMusic","balloon long") ); TEXTUREMAN->CacheTexture( THEME->GetPathG("ScreenSelectMusic","balloon marathon") ); this->AddChild( &m_sprBalloon ); m_soundOptionsChange.Load( THEME->GetPathS("ScreenEz2SelectMusic","options") ); m_bGoToOptions = false; m_bMadeChoice = false; MusicChanged(); }