void EditMenu::Right() { if( CanGoRight() ) { m_iSelection[m_SelectedRow]++; OnRowValueChanged( m_SelectedRow ); m_soundChangeValue.PlayRandom(); } }
EditCoursesMenu::EditCoursesMenu() { LOG->Trace( "ScreenEditCoursesMenu::ScreenEditCoursesMenu()" ); m_bInSongMenu = false; for( int i=0; i<2; i++ ) { m_sprArrows[i].Load( THEME->GetPathG("EditCoursesMenu",i==0?"left":"right") ); m_sprArrows[i].SetX( ARROWS_X(i) ); this->AddChild( &m_sprArrows[i] ); } m_SelectedRow = (Row)0; ZERO( m_iSelection ); for( int i=0; i<NUM_ROWS; i++ ) { m_textLabel[i].LoadFromFont( THEME->GetPathF("Common","title") ); m_textLabel[i].SetXY( ROW_LABELS_X, ROW_Y(i) ); m_textLabel[i].SetText( RowToString((Row)i) ); m_textLabel[i].SetZoom( 0.8f ); m_textLabel[i].SetHorizAlign( Actor::align_left ); this->AddChild( &m_textLabel[i] ); m_textValue[i].LoadFromFont( THEME->GetPathF("Common","normal") ); m_textValue[i].SetXY( ROW_VALUE_X(i), ROW_Y(i) ); m_textValue[i].SetText( "blah" ); m_textValue[i].SetZoom( 0.6f ); this->AddChild( &m_textValue[i] ); } m_CourseBanner.SetXY( COURSE_BANNER_X, COURSE_BANNER_Y ); this->AddChild( &m_CourseBanner ); m_EntryBanner.SetXY( ENTRY_BANNER_X, ENTRY_BANNER_Y ); this->AddChild( &m_EntryBanner ); m_EntryTextBanner.SetName( "TextBanner" ); m_EntryTextBanner.SetXY( ENTRY_TEXT_BANNER_X, ENTRY_TEXT_BANNER_Y ); this->AddChild( &m_EntryTextBanner ); m_soundChangeRow.Load( THEME->GetPathS("EditCoursesMenu","row") ); m_soundChangeValue.Load( THEME->GetPathS("EditCoursesMenu","value") ); m_soundSave.Load( THEME->GetPathS("EditCoursesMenu","save") ); // fill in data structures SONGMAN->GetAllCourses( m_pCourses, false ); ChangeToRow( (Row)0 ); OnRowValueChanged( (Row)0 ); }
void EditCoursesSongMenu::Right() { if( CanGoRight() ) { m_iSelection[m_SelectedRow]++; OnRowValueChanged( m_SelectedRow ); m_soundChangeValue.Play(); } }
void EditCoursesMenu::HandleScreenMessage( const ScreenMessage SM ) { Course* pCourse = GetSelectedCourse(); CourseEntry* pEntry = GetSelectedEntry(); switch( SM ) { case SM_BackFromCourseOptionsMenu: pCourse->m_bRepeat = !!ScreenMiniMenu::s_iLastAnswers[repeat]; pCourse->m_bRandomize = !!ScreenMiniMenu::s_iLastAnswers[randomize]; pCourse->m_iLives = ScreenMiniMenu::s_iLastAnswers[lives]; if( pCourse->m_iLives == 0 ) pCourse->m_iLives = -1; OnRowValueChanged( ROW_COURSE_OPTIONS ); break; case SM_BackFromPlayerOptions: case SM_BackFromSongOptions: // coming back from PlayerOptions or SongOptions pEntry->modifiers = GAMESTATE->m_PlayerOptions[PLAYER_1].GetString() + "," + GAMESTATE->m_SongOptions.GetString(); OnRowValueChanged( ROW_ENTRY_PLAYER_OPTIONS ); break; } }
void EditCoursesSongMenu::LoadFromCourseEntry( const CourseEntry *pEntry ) { ZERO( m_iSelection ); if( pEntry->pSong ) { /* Set this song's group. */ SetGroupByName( pEntry->pSong->m_sGroupName ); unsigned i; for( i = 0; i < m_aSongs.size(); ++i ) if( m_aSongs[i] == pEntry->pSong ) break; ASSERT_M( i < m_aSongs.size(), ssprintf("%s", pEntry->pSong->GetTranslitMainTitle().c_str()) ); m_iSelection[ROW_SONG] = i; } else if( pEntry->group_name != "" ) { SetGroupByName( pEntry->group_name ); } m_iSelection[ROW_TYPE] = pEntry->type; m_iSelection[ROW_DIFFICULTY] = (pEntry->difficulty == DIFFICULTY_INVALID)? 0:pEntry->difficulty+1; m_iSelection[ROW_LOW_METER] = (pEntry->low_meter == -1)? 0:pEntry->low_meter; m_iSelection[ROW_HIGH_METER] = (pEntry->high_meter == -1)? 0:pEntry->high_meter; m_iSelection[ROW_BEST_WORST_VALUE] = pEntry->players_index; /* Make sure we're on an active row. */ if( !g_bRowEnabledForType[GetSelectedType()][m_SelectedRow] ) ChangeRow( -1 ); if( !g_bRowEnabledForType[GetSelectedType()][m_SelectedRow] ) ChangeRow( +1 ); ASSERT( g_bRowEnabledForType[GetSelectedType()][m_SelectedRow] ); ChangeToRow( m_SelectedRow ); OnRowValueChanged( (Row)0 ); }
void EditCoursesMenu::Right() { if( m_bInSongMenu ) { m_SongMenu.Right(); return; } if( CanGoRight() ) { m_iSelection[m_SelectedRow]++; switch( m_SelectedRow ) { case ROW_ENTRY_TYPE: GetSelectedEntry()->type = GetSelectedEntryType(); break; } OnRowValueChanged( m_SelectedRow ); m_soundChangeValue.Play(); } }
EditCoursesMenu::EditCoursesMenu() { LOG->Trace( "ScreenEditCoursesMenu::ScreenEditCoursesMenu()" ); GAMESTATE->m_bEditing = true; m_bInSongMenu = false; int i; for( i=0; i<2; i++ ) { m_sprArrows[i].Load( THEME->GetPathToG(ssprintf("EditCoursesMenu %s",(i==0?"left":"right"))) ); m_sprArrows[i].SetX( ARROWS_X(i) ); this->AddChild( &m_sprArrows[i] ); } m_SelectedRow = (Row)0; ZERO( m_iSelection ); const CString sTitleFontPath = THEME->GetPathToF( "Common title" ); const CString sNormalFontPath = THEME->GetPathToF( "Common normal" ); const float fRowLabelsX = ROW_LABELS_X; for( i=0; i<NUM_ROWS; i++ ) { const float fRowY = ROW_Y(i); m_textLabel[i].LoadFromFont( sTitleFontPath ); m_textLabel[i].SetXY( fRowLabelsX, fRowY ); m_textLabel[i].SetText( RowToString((Row)i) ); m_textLabel[i].SetZoom( 0.8f ); m_textLabel[i].SetHorizAlign( Actor::align_left ); this->AddChild( &m_textLabel[i] ); m_textValue[i].LoadFromFont( sNormalFontPath ); m_textValue[i].SetXY( ROW_VALUE_X(i), fRowY ); m_textValue[i].SetText( "blah" ); m_textValue[i].SetZoom( 0.6f ); this->AddChild( &m_textValue[i] ); } m_CourseBanner.SetXY( COURSE_BANNER_X, COURSE_BANNER_Y ); this->AddChild( &m_CourseBanner ); m_EntryBanner.SetXY( ENTRY_BANNER_X, ENTRY_BANNER_Y ); this->AddChild( &m_EntryBanner ); m_EntryTextBanner.SetName( "TextBanner" ); m_EntryTextBanner.SetXY( ENTRY_TEXT_BANNER_X, ENTRY_TEXT_BANNER_Y ); this->AddChild( &m_EntryTextBanner ); m_soundChangeRow.Load( THEME->GetPathToS("EditCoursesMenu row") ); m_soundChangeValue.Load( THEME->GetPathToS("EditCoursesMenu value") ); m_soundSave.Load( THEME->GetPathToS("EditCoursesMenu save") ); // fill in data structures SONGMAN->GetAllCourses( m_pCourses, false ); ChangeToRow( (Row)0 ); OnRowValueChanged( (Row)0 ); }
void EditCoursesMenu::Start() { if( m_bInSongMenu ) { m_SongMenu.SaveToCourseEntry( GetSelectedEntry() ); m_bInSongMenu = false; OnRowValueChanged( ROW_ENTRY ); return; } Course* pCourse = GetSelectedCourse(); CourseEntry* pEntry = GetSelectedEntry(); switch( m_SelectedRow ) { case ROW_COURSE_OPTIONS: g_CourseOptionsMenu.rows[repeat].defaultChoice = pCourse->m_bRepeat ? 1 : 0; g_CourseOptionsMenu.rows[randomize].defaultChoice = pCourse->m_bRandomize ? 1 : 0; g_CourseOptionsMenu.rows[lives].defaultChoice = pCourse->m_iLives; if( g_CourseOptionsMenu.rows[lives].defaultChoice == -1 ) g_CourseOptionsMenu.rows[lives].defaultChoice = 0; SCREENMAN->MiniMenu( &g_CourseOptionsMenu, SM_BackFromCourseOptionsMenu ); break; case ROW_ACTION: switch( GetSelectedAction() ) { case save: m_soundSave.Play(); pCourse->Save(); SCREENMAN->SystemMessage( "Course saved." ); break; case add_entry: SCREENMAN->PlayStartSound(); pCourse->m_entries.insert( pCourse->m_entries.begin()+m_iSelection[ROW_ENTRY], pCourse->m_entries[m_iSelection[ROW_ENTRY]] ); OnRowValueChanged( ROW_ENTRY ); break; case delete_selected_entry: if( pCourse->m_entries.size() == 1 ) { SCREENMAN->PlayInvalidSound(); SCREENMAN->SystemMessage( "Cannot delete the last entry from a course" ); break; } SCREENMAN->PlayStartSound(); pCourse->m_entries.erase( pCourse->m_entries.begin()+m_iSelection[ROW_ENTRY] ); CLAMP( m_iSelection[ROW_ENTRY], 0, (int) pCourse->m_entries.size()-1 ); OnRowValueChanged( ROW_ENTRY ); break; default: ASSERT(0); } OnRowValueChanged( ROW_ENTRY ); break; case ROW_ENTRY_OPTIONS: m_SongMenu.LoadFromCourseEntry( GetSelectedEntry() ); m_bInSongMenu = true; break; case ROW_ENTRY_PLAYER_OPTIONS: SCREENMAN->PlayStartSound(); GAMESTATE->m_PlayerOptions[PLAYER_1] = PlayerOptions(); GAMESTATE->m_PlayerOptions[PLAYER_1].FromString( pEntry->modifiers ); SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions", SM_BackFromPlayerOptions ); break; case ROW_ENTRY_SONG_OPTIONS: SCREENMAN->PlayStartSound(); GAMESTATE->m_SongOptions = SongOptions(); GAMESTATE->m_SongOptions.FromString( pEntry->modifiers ); SCREENMAN->AddNewScreenToTop( "ScreenSongOptions", SM_BackFromSongOptions ); break; default: SCREENMAN->PlayInvalidSound(); return; } }
EditMenu::EditMenu() { LOG->Trace( "ScreenEditMenu::ScreenEditMenu()" ); int i; for( i=0; i<2; i++ ) { m_sprArrows[i].Load( THEME->GetPathToG(ssprintf("EditMenu %s",(i==0?"left":"right"))) ); m_sprArrows[i].SetX( ARROWS_X(i) ); this->AddChild( &m_sprArrows[i] ); } m_SelectedRow = (Row)0; ZERO( m_iSelection ); // start out on easy, not beginner m_iSelection[ROW_DIFFICULTY] = DIFFICULTY_EASY; m_iSelection[ROW_SOURCE_DIFFICULTY] = DIFFICULTY_EASY; for( i=0; i<NUM_ROWS; i++ ) { m_textLabel[i].LoadFromFont( THEME->GetPathToF("Common title") ); m_textLabel[i].SetXY( ROW_LABELS_X, ROW_Y(i) ); m_textLabel[i].SetText( RowToString((Row)i) ); m_textLabel[i].SetZoom( 0.8f ); m_textLabel[i].SetHorizAlign( Actor::align_left ); this->AddChild( &m_textLabel[i] ); m_textValue[i].LoadFromFont( THEME->GetPathToF("Common normal") ); m_textValue[i].SetXY( ROW_VALUE_X(i), ROW_Y(i) ); m_textValue[i].SetText( "blah" ); m_textValue[i].SetZoom( 0.8f ); this->AddChild( &m_textValue[i] ); } m_GroupBanner.SetXY( GROUP_BANNER_X, GROUP_BANNER_Y ); this->AddChild( &m_GroupBanner ); m_SongBanner.SetXY( SONG_BANNER_X, SONG_BANNER_Y ); this->AddChild( &m_SongBanner ); m_SongTextBanner.SetName( "TextBanner" ); m_SongTextBanner.SetXY( SONG_TEXT_BANNER_X, SONG_TEXT_BANNER_Y ); this->AddChild( &m_SongTextBanner ); m_Meter.SetName( "EditDifficultyMeter", "DifficultyMeter" ); m_Meter.SetXY( METER_X, METER_Y ); m_Meter.Load(); this->AddChild( &m_Meter ); m_SourceMeter.SetName( "EditDifficultyMeter", "DifficultyMeter" ); m_SourceMeter.SetXY( SOURCE_METER_X, SOURCE_METER_Y ); m_SourceMeter.Load(); this->AddChild( &m_SourceMeter ); m_soundChangeRow.Load( THEME->GetPathToS("EditMenu row") ); m_soundChangeValue.Load( THEME->GetPathToS("EditMenu value") ); // fill in data structures SONGMAN->GetGroupNames( m_sGroups ); GAMEMAN->GetStepsTypesForGame( GAMESTATE->m_pCurGame, m_StepsTypes ); ChangeToRow( (Row)0 ); OnRowValueChanged( (Row)0 ); // Select the current song if any if( GAMESTATE->m_pCurSong ) { unsigned i; for( i=0; i<m_sGroups.size(); i++ ) if( GAMESTATE->m_pCurSong->m_sGroupName == m_sGroups[i] ) m_iSelection[ROW_GROUP] = i; OnRowValueChanged( ROW_GROUP ); for( i=0; i<m_pSongs.size(); i++ ) if( GAMESTATE->m_pCurSong == m_pSongs[i] ) m_iSelection[ROW_SONG] = i; OnRowValueChanged( ROW_SONG ); // Select the current StepsType and difficulty if any if( GAMESTATE->m_pCurSteps[PLAYER_1] ) { for( i=0; i<m_StepsTypes.size(); i++ ) { if( m_StepsTypes[i] == GAMESTATE->m_pCurSteps[PLAYER_1]->m_StepsType ) { m_iSelection[ROW_STEPS_TYPE] = i; OnRowValueChanged( ROW_STEPS_TYPE ); m_iSelection[ROW_DIFFICULTY] = GAMESTATE->m_pCurSteps[PLAYER_1]->GetDifficulty(); OnRowValueChanged( ROW_DIFFICULTY ); break; } } } } }
void EditMenu::RefreshNotes() { OnRowValueChanged( ROW_SONG ); }