diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 9b4e97e766..fe3072e30a 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -12,7 +12,7 @@ StepsTypesToHide=dance-couple,dance-solo,pump-halfdouble,lights-cabinet ScreenWidth=640 ScreenHeight=480 OverlayScreens=ScreenSystemLayer -HomeEditMode=0 +EditMode=2 MaxCourseEntriesBeforeShowVarious=6 [ModeSwitcher] @@ -2189,12 +2189,6 @@ MeterX=SCREEN_CENTER_X+170 MeterY=SCREEN_CENTER_Y-20 SourceMeterX=SCREEN_CENTER_X+170 SourceMeterY=SCREEN_CENTER_Y+60 -MeterNumberX=SCREEN_CENTER_X+100 -MeterNumberY=SCREEN_CENTER_Y-20 -MeterNumberOnCommand=zoom,0.7 -SourceMeterNumberX=SCREEN_CENTER_X+100 -SourceMeterNumberY=SCREEN_CENTER_Y+60 -SourceMeterNumberOnCommand=zoom,0.7 RowLabelsX=SCREEN_LEFT+40 RowLabelOnCommand=zoom,0.7 RowValue1X=SCREEN_CENTER_X diff --git a/stepmania/src/CommonMetrics.cpp b/stepmania/src/CommonMetrics.cpp index f0c4798840..ed0fe2aec7 100644 --- a/stepmania/src/CommonMetrics.cpp +++ b/stepmania/src/CommonMetrics.cpp @@ -15,7 +15,7 @@ ThemeMetric DEFAULT_MODIFIERS ("Common","DefaultModifiers" ); ThemeMetric DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" ); ThemeMetric1D PLAYER_COLOR ("Common",PLAYER_COLOR_NAME,NUM_PLAYERS); ThemeMetric WINDOW_TITLE ("Common","WindowTitle"); -ThemeMetric HOME_EDIT_MODE ("Common","HomeEditMode"); +ThemeMetricEnum EDIT_MODE ("Common","EditMode"); ThemeMetric MAX_COURSE_ENTRIES_BEFORE_VARIOUS ("Common","MaxCourseEntriesBeforeShowVarious"); ThemeMetric TICK_EARLY_SECONDS ("ScreenGameplay","TickEarlySeconds"); ThemeMetricDifficultiesToShow DIFFICULTIES_TO_SHOW ("Common","DifficultiesToShow"); diff --git a/stepmania/src/CommonMetrics.h b/stepmania/src/CommonMetrics.h index cffdf1b5bb..d87d1518e3 100644 --- a/stepmania/src/CommonMetrics.h +++ b/stepmania/src/CommonMetrics.h @@ -39,6 +39,14 @@ public: private: vector m_v; }; +template +class ThemeMetricEnum : public ThemeMetric +{ +public: + ThemeMetricEnum( const CString& sGroup, const CString& sName ) : ThemeMetric(sGroup,sName) {} + T GetValue() const { return (T)ThemeMetric::GetValue(); } + bool operator ==( T other ) const { return GetValue() == other; } +}; // @@ -50,7 +58,7 @@ extern ThemeMetric DEFAULT_MODIFIERS; extern ThemeMetric DEFAULT_CPU_MODIFIERS; extern ThemeMetric1D PLAYER_COLOR; extern ThemeMetric WINDOW_TITLE; -extern ThemeMetric HOME_EDIT_MODE; +extern ThemeMetricEnum EDIT_MODE; extern ThemeMetric MAX_COURSE_ENTRIES_BEFORE_VARIOUS; extern ThemeMetric TICK_EARLY_SECONDS; extern ThemeMetricDifficultiesToShow DIFFICULTIES_TO_SHOW; diff --git a/stepmania/src/EditCoursesMenu.cpp b/stepmania/src/EditCoursesMenu.cpp index 7ba94755a0..0a2494357b 100644 --- a/stepmania/src/EditCoursesMenu.cpp +++ b/stepmania/src/EditCoursesMenu.cpp @@ -45,9 +45,9 @@ enum CourseEntryMenuRow static Menu g_CourseOptionsMenu( "ScreenMiniMenuCourseOptions", - MenuRow( repeat, "Repeat", true, true, 0, "NO","YES" ), - MenuRow( randomize, "Randomize", true, true, 0, "NO","YES" ), - MenuRow( lives, "Lives", true, true, 4, "Use Bar Life","1","2","3","4","5","6","7","8","9","10" ) + MenuRow( repeat, "Repeat", true, EDIT_MODE_FULL, 0, "NO","YES" ), + MenuRow( randomize, "Randomize", true, EDIT_MODE_FULL, 0, "NO","YES" ), + MenuRow( lives, "Lives", true, EDIT_MODE_FULL, 4, "Use Bar Life","1","2","3","4","5","6","7","8","9","10" ) ); enum CourseOptionsMenuRow diff --git a/stepmania/src/EditMenu.cpp b/stepmania/src/EditMenu.cpp index 269f71232c..3b2491b7cc 100644 --- a/stepmania/src/EditMenu.cpp +++ b/stepmania/src/EditMenu.cpp @@ -58,7 +58,7 @@ static void GetSongsToShowForGroup( const CString &sGroup, vector &vpSong { vpSongsOut.clear(); SONGMAN->GetSongs( vpSongsOut, sGroup ); - if( HOME_EDIT_MODE ) + if( EDIT_MODE == EDIT_MODE_HOME ) { // strip groups that have no unlocked songs for( int i=vpSongsOut.size()-1; i>=0; i-- ) @@ -154,36 +154,6 @@ EditMenu::EditMenu() // GetGroupsToShow( m_sGroups ); m_StepsTypes = STEPS_TYPES_TO_SHOW.GetValue(); - if( HOME_EDIT_MODE ) - { - m_vDifficulties.push_back( DIFFICULTY_EDIT ); - } - else - { - FOREACH_Difficulty( dc ) - m_vDifficulties.push_back( dc ); - } - - m_vSourceDifficulties.push_back( DIFFICULTY_INVALID ); // "blank" - FOREACH_Difficulty( dc ) - m_vSourceDifficulties.push_back( dc ); - - - // start out on easy if available, or "blank" - { - vector::const_iterator it = find( m_vDifficulties.begin(), m_vDifficulties.end(), DIFFICULTY_EASY ); - if( it != m_vDifficulties.end() ) - m_iSelection[ROW_STEPS] = it - m_vDifficulties.begin(); - else - m_iSelection[ROW_STEPS] = 0; - } - - // start out on easy - { - vector::const_iterator it = find( m_vSourceDifficulties.begin(), m_vSourceDifficulties.end(), DIFFICULTY_EASY ); - ASSERT( it != m_vDifficulties.end() ); - m_iSelection[ROW_SOURCE_STEPS] = it - m_vSourceDifficulties.begin(); - } RefreshAll(); @@ -226,7 +196,7 @@ void EditMenu::RefreshAll() for( unsigned i=0; im_pCurSteps[PLAYER_1] ) { m_iSelection[ROW_STEPS] = i; @@ -357,24 +327,36 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) // fall through case ROW_STEPS_TYPE: m_textValue[ROW_STEPS_TYPE].SetText( GAMEMAN->StepsTypeToThemedString(GetSelectedStepsType()) ); - CLAMP( m_iSelection[ROW_STEPS], 0, m_vDifficulties.size()-1 ); // jump back to the slot for DIFFICULTY_EDIT + m_vpSteps.clear(); - FOREACH( Difficulty, m_vDifficulties, dc ) + + FOREACH_Difficulty( dc ) { - if( *dc == DIFFICULTY_EDIT ) + if( dc == DIFFICULTY_EDIT ) { vector v; GetSelectedSong()->GetSteps( v, GetSelectedStepsType(), DIFFICULTY_EDIT ); StepsUtil::SortStepsByDescription( v ); - m_vpSteps.insert( m_vpSteps.end(), v.begin(), v.end() ); - m_vpSteps.push_back( NULL ); // "New Edit" + FOREACH_CONST( Steps*, v, p ) + m_vpSteps.push_back( StepsAndDifficulty(*p,dc) ); + + if( EDIT_MODE != EDIT_MODE_PRACTICE ) + m_vpSteps.push_back( StepsAndDifficulty(NULL,dc) ); // "New Edit" } else { - Steps *pSteps = GetSelectedSong()->GetStepsByDifficulty( GetSelectedStepsType(), *dc ); - m_vpSteps.push_back( pSteps ); + // don't show non-edits in HomeMode + if( EDIT_MODE == EDIT_MODE_HOME ) + continue; + + Steps *pSteps = GetSelectedSong()->GetStepsByDifficulty( GetSelectedStepsType(), dc ); + if( pSteps || EDIT_MODE != EDIT_MODE_PRACTICE ) + m_vpSteps.push_back( StepsAndDifficulty(pSteps,dc) ); } } + + CLAMP( m_iSelection[ROW_STEPS], 0, m_vpSteps.size()-1 ); + // fall through case ROW_STEPS: { @@ -393,7 +375,7 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) s = DifficultyToThemedString(GetSelectedDifficulty()); // UGLY. "Edit" -> "New Edit" - if( HOME_EDIT_MODE ) + if( EDIT_MODE == EDIT_MODE_HOME ) s = "New " + s; } m_textValue[ROW_STEPS].SetText( s ); @@ -408,32 +390,28 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) m_textValue[ROW_SOURCE_STEPS_TYPE].SetHidden( GetSelectedSteps() ? true : false ); m_textValue[ROW_SOURCE_STEPS_TYPE].SetText( GAMEMAN->StepsTypeToThemedString(GetSelectedSourceStepsType()) ); - CLAMP( m_iSelection[ROW_SOURCE_STEPS], 0, m_vSourceDifficulties.size()-1 ); // jump back to the slot for DIFFICULTY_EDIT - m_vpSourceSteps.clear(); - FOREACH( Difficulty, m_vSourceDifficulties, dc ) + m_vpSourceSteps.push_back( StepsAndDifficulty(NULL,DIFFICULTY_INVALID) ); // "blank" + FOREACH_Difficulty( dc ) { - if( *dc == DIFFICULTY_INVALID ) + // fill in pSteps + if( dc != DIFFICULTY_EDIT ) { - m_vpSourceSteps.push_back( NULL ); - } - else if( *dc == DIFFICULTY_EDIT ) - { - vector v; - GetSelectedSong()->GetSteps( v, GetSelectedSourceStepsType(), DIFFICULTY_EDIT ); - StepsUtil::SortStepsByDescription( v ); - m_vpSourceSteps.insert( m_vpSourceSteps.end(), v.begin(), v.end() ); - - // if we don't have any edits, pad with NULL so that we have one slot for every difficulty - if( v.empty() ) - m_vpSourceSteps.push_back( NULL ); + Steps *pSteps = GetSelectedSong()->GetStepsByDifficulty( GetSelectedSourceStepsType(), dc ); + m_vpSourceSteps.push_back( StepsAndDifficulty(pSteps,dc) ); } else { - Steps *pSteps = GetSelectedSong()->GetStepsByDifficulty( GetSelectedSourceStepsType(), *dc ); - m_vpSourceSteps.push_back( pSteps ); + vector v; + GetSelectedSong()->GetSteps( v, GetSelectedSourceStepsType(), dc ); + StepsUtil::SortStepsByDescription( v ); + FOREACH_CONST( Steps*, v, pSteps ) + m_vpSourceSteps.push_back( StepsAndDifficulty(*pSteps,dc) ); + if( v.empty() ) + m_vpSourceSteps.push_back( StepsAndDifficulty(NULL,dc) ); } } + CLAMP( m_iSelection[ROW_SOURCE_STEPS], 0, m_vpSourceSteps.size()-1 ); // fall through case ROW_SOURCE_STEPS: { @@ -463,7 +441,8 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) if( GetSelectedSteps() ) { m_Actions.push_back( EDIT_MENU_ACTION_EDIT ); - m_Actions.push_back( EDIT_MENU_ACTION_DELETE ); + if( EDIT_MODE != EDIT_MODE_PRACTICE ) + m_Actions.push_back( EDIT_MENU_ACTION_DELETE ); } else { @@ -480,19 +459,6 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) } } -Difficulty EditMenu::GetSelectedDifficulty() -{ - int i = m_iSelection[ROW_STEPS]; - CLAMP( i, 0, m_vDifficulties.size()-1 ); - return m_vDifficulties[i]; -} - -Difficulty EditMenu::GetSelectedSourceDifficulty() -{ - int i = m_iSelection[ROW_SOURCE_STEPS]; - CLAMP( i, 0, m_vSourceDifficulties.size()-1 ); - return m_vSourceDifficulties[i]; -} /* * (c) 2001-2004 Chris Danford diff --git a/stepmania/src/EditMenu.h b/stepmania/src/EditMenu.h index d3f5d61583..cb763963db 100644 --- a/stepmania/src/EditMenu.h +++ b/stepmania/src/EditMenu.h @@ -62,14 +62,13 @@ public: CString GetSelectedGroup() const { ASSERT(m_iSelection[ROW_GROUP] < (int)m_sGroups.size()); return m_sGroups[m_iSelection[ROW_GROUP]]; } Song* GetSelectedSong() const { ASSERT(m_iSelection[ROW_SONG] < (int)m_pSongs.size()); return m_pSongs[m_iSelection[ROW_SONG]]; } StepsType GetSelectedStepsType() const { ASSERT(m_iSelection[ROW_STEPS_TYPE] < (int)m_StepsTypes.size()); return m_StepsTypes[m_iSelection[ROW_STEPS_TYPE]]; } - Steps* GetSelectedSteps() const { ASSERT(m_iSelection[ROW_STEPS] < (int)m_vpSteps.size()); return m_vpSteps[m_iSelection[ROW_STEPS]]; } + Steps* GetSelectedSteps() const { ASSERT(m_iSelection[ROW_STEPS] < (int)m_vpSteps.size()); return m_vpSteps[m_iSelection[ROW_STEPS]].pSteps; } + Difficulty GetSelectedDifficulty() const { ASSERT(m_iSelection[ROW_STEPS] < (int)m_vpSteps.size()); return m_vpSteps[m_iSelection[ROW_STEPS]].dc; } StepsType GetSelectedSourceStepsType() const { ASSERT(m_iSelection[ROW_SOURCE_STEPS_TYPE]< (int)m_StepsTypes.size()); return m_StepsTypes[m_iSelection[ROW_SOURCE_STEPS_TYPE]]; } - Steps* GetSelectedSourceSteps() const { ASSERT(m_iSelection[ROW_SOURCE_STEPS] < (int)m_vpSourceSteps.size()); return m_vpSourceSteps[m_iSelection[ROW_SOURCE_STEPS]]; } + Steps* GetSelectedSourceSteps() const { ASSERT(m_iSelection[ROW_SOURCE_STEPS] < (int)m_vpSourceSteps.size()); return m_vpSourceSteps[m_iSelection[ROW_SOURCE_STEPS]].pSteps; } + Difficulty GetSelectedSourceDifficulty() const { ASSERT(m_iSelection[ROW_SOURCE_STEPS] < (int)m_vpSourceSteps.size()); return m_vpSourceSteps[m_iSelection[ROW_SOURCE_STEPS]].dc; } EditMenuAction GetSelectedAction() const { ASSERT(m_iSelection[ROW_ACTION] < (int)m_Actions.size()); return m_Actions[m_iSelection[ROW_ACTION]]; } - Difficulty GetSelectedDifficulty(); - Difficulty GetSelectedSourceDifficulty(); - EditMenuRow GetSelectedRow() const { return m_SelectedRow; } private: @@ -88,14 +87,18 @@ private: DifficultyMeter m_SourceMeter; - vector m_vDifficulties; - vector m_vSourceDifficulties; + struct StepsAndDifficulty + { + StepsAndDifficulty( Steps *s, Difficulty d ) { pSteps = s; dc = d; } + Steps *pSteps; + Difficulty dc; + }; CStringArray m_sGroups; vector m_pSongs; vector m_StepsTypes; - vector m_vpSteps; - vector m_vpSourceSteps; + vector m_vpSteps; + vector m_vpSourceSteps; vector m_Actions; void OnRowValueChanged( EditMenuRow row ); diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index b517e6f810..d3fe58d4b8 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -371,6 +371,16 @@ const CString& GoalTypeToString( GoalType gt ); GoalType StringToGoalType( const CString& s ); +enum EditMode +{ + EDIT_MODE_PRACTICE, // subset of EDIT_MODE_HOME + EDIT_MODE_HOME, // subset of EDIT_MODE_FULL + EDIT_MODE_FULL, // complete + NUM_EDIT_MODES, + EDIT_MODE_INVALID, +}; + + #endif /* diff --git a/stepmania/src/NoteField.cpp b/stepmania/src/NoteField.cpp index 083431844f..baa0ac74f4 100644 --- a/stepmania/src/NoteField.cpp +++ b/stepmania/src/NoteField.cpp @@ -485,7 +485,7 @@ void NoteField::DrawPrimitives() // // BGChange text // - if( !HOME_EDIT_MODE ) + if( EDIT_MODE == EDIT_MODE_FULL ) { vector &aBackgroundChanges = GAMESTATE->m_pCurSong->m_BackgroundChanges; for( unsigned i=0; i2","Compress 4->3","Expand 3->4","Expand 2->3","Expand 2x" ), - MenuRow( ScreenEdit::play, "Play selection", true, true, 0, NULL ), - MenuRow( ScreenEdit::record, "Record in selection", true, true, 0, NULL ), - MenuRow( ScreenEdit::insert_and_shift, "Insert beat and shift down", true, true, 0, NULL ), - MenuRow( ScreenEdit::delete_and_shift, "Delete beat and shift up", true, true, 0, NULL ), - MenuRow( ScreenEdit::shift_pauses_forward, "Shift pauses and BPM changes down",true, false, 0, NULL ), - MenuRow( ScreenEdit::shift_pauses_backward, "Shift pauses and BPM changes up", true, false, 0, NULL ), - MenuRow( ScreenEdit::convert_beat_to_pause, "Convert beats to pause", true, false, 0, NULL ), - MenuRow( ScreenEdit::convert_pause_to_beat, "Convert pause to beats", true, false, 0, NULL ), - MenuRow( ScreenEdit::undo, "Undo", true, true, 0, NULL ) + MenuRow( ScreenEdit::cut, "Cut", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::copy, "Copy", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::paste_at_current_beat, "Paste at current beat", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::paste_at_begin_marker, "Paste at begin marker", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::clear, "Clear area", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::quantize, "Quantize", true, EDIT_MODE_PRACTICE, 0, "4th","8th","12th","16th","24th","32nd","48th","64th","192nd"), + MenuRow( ScreenEdit::turn, "Turn", true, EDIT_MODE_PRACTICE, 0, "Left","Right","Mirror","Shuffle","SuperShuffle" ), + MenuRow( ScreenEdit::transform, "Transform", true, EDIT_MODE_PRACTICE, 0, "NoHolds","NoMines","Little","Wide","Big","Quick","Skippy","Mines","Echo","Stomp","Planted","Floored","Twister","NoJumps","NoHands","NoQuads" ), + MenuRow( ScreenEdit::alter, "Alter", true, EDIT_MODE_PRACTICE, 0, "Autogen To Fill Width","Backwards","Swap Sides","Copy Left To Right","Copy Right To Left","Clear Left","Clear Right","Collapse To One","Collapse Left","Shift Left","Shift Right" ), + MenuRow( ScreenEdit::tempo, "Tempo", true, EDIT_MODE_FULL, 0, "Compress 2x","Compress 3->2","Compress 4->3","Expand 3->4","Expand 2->3","Expand 2x" ), + MenuRow( ScreenEdit::play, "Play selection", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::record, "Record in selection", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::insert_and_shift, "Insert beat and shift down", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::delete_and_shift, "Delete beat and shift up", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::shift_pauses_forward, "Shift pauses and BPM changes down",true, EDIT_MODE_FULL, 0, NULL ), + MenuRow( ScreenEdit::shift_pauses_backward, "Shift pauses and BPM changes up", true, EDIT_MODE_FULL, 0, NULL ), + MenuRow( ScreenEdit::convert_beat_to_pause, "Convert beats to pause", true, EDIT_MODE_FULL, 0, NULL ), + MenuRow( ScreenEdit::convert_pause_to_beat, "Convert pause to beats", true, EDIT_MODE_FULL, 0, NULL ), + MenuRow( ScreenEdit::undo, "Undo", true, EDIT_MODE_PRACTICE, 0, NULL ) ); static Menu g_StepsInformation( "ScreenMiniMenuStepsInformation", - MenuRow( ScreenEdit::difficulty, "Difficulty", true, true, 0, "BEGINNER","EASY","MEDIUM","HARD","CHALLENGE","EDIT" ), - MenuRow( ScreenEdit::meter, "Meter", true, true, 0, "1","2","3","4","5","6","7","8","9","10","11","12","13" ), - MenuRow( ScreenEdit::description, "Description", true, true, 0, NULL ), - MenuRow( ScreenEdit::predict_meter, "Predicted Meter", false, true, 0, NULL ), - MenuRow( ScreenEdit::tap_notes, "Tap Steps", false, true, 0, NULL ), - MenuRow( ScreenEdit::jumps, "Jumps", false, true, 0, NULL ), - MenuRow( ScreenEdit::hands, "Hands", false, true, 0, NULL ), - MenuRow( ScreenEdit::quads, "Quads", false, true, 0, NULL ), - MenuRow( ScreenEdit::holds, "Holds", false, true, 0, NULL ), - MenuRow( ScreenEdit::mines, "Mines", false, true, 0, NULL ), - MenuRow( ScreenEdit::stream, "Stream", false, false, 0, NULL ), - MenuRow( ScreenEdit::voltage, "Voltage", false, false, 0, NULL ), - MenuRow( ScreenEdit::air, "Air", false, false, 0, NULL ), - MenuRow( ScreenEdit::freeze, "Freeze", false, false, 0, NULL ), - MenuRow( ScreenEdit::chaos, "Chaos", false, false, 0, NULL ) + MenuRow( ScreenEdit::difficulty, "Difficulty", true, EDIT_MODE_PRACTICE, 0, "BEGINNER","EASY","MEDIUM","HARD","CHALLENGE","EDIT" ), + MenuRow( ScreenEdit::meter, "Meter", true, EDIT_MODE_PRACTICE, 0, "1","2","3","4","5","6","7","8","9","10","11","12","13" ), + MenuRow( ScreenEdit::description, "Description", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::predict_meter, "Predicted Meter", false, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::tap_notes, "Tap Steps", false, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::jumps, "Jumps", false, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::hands, "Hands", false, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::quads, "Quads", false, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::holds, "Holds", false, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::mines, "Mines", false, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::stream, "Stream", false, EDIT_MODE_FULL, 0, NULL ), + MenuRow( ScreenEdit::voltage, "Voltage", false, EDIT_MODE_FULL, 0, NULL ), + MenuRow( ScreenEdit::air, "Air", false, EDIT_MODE_FULL, 0, NULL ), + MenuRow( ScreenEdit::freeze, "Freeze", false, EDIT_MODE_FULL, 0, NULL ), + MenuRow( ScreenEdit::chaos, "Chaos", false, EDIT_MODE_FULL, 0, NULL ) ); static Menu g_SongInformation( "ScreenMiniMenuSongInfomation", - MenuRow( ScreenEdit::main_title, "Main title", true, true, 0, NULL ), - MenuRow( ScreenEdit::sub_title, "Sub title", true, true, 0, NULL ), - MenuRow( ScreenEdit::artist, "Artist", true, true, 0, NULL ), - MenuRow( ScreenEdit::credit, "Credit", true, true, 0, NULL ), - MenuRow( ScreenEdit::main_title_transliteration, "Main title transliteration", true, true, 0, NULL ), - MenuRow( ScreenEdit::sub_title_transliteration, "Sub title transliteration", true, true, 0, NULL ), - MenuRow( ScreenEdit::artist_transliteration, "Artist transliteration", true, true, 0, NULL ) + MenuRow( ScreenEdit::main_title, "Main title", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::sub_title, "Sub title", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::artist, "Artist", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::credit, "Credit", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::main_title_transliteration, "Main title transliteration", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::sub_title_transliteration, "Sub title transliteration", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::artist_transliteration, "Artist transliteration", true, EDIT_MODE_PRACTICE, 0, NULL ) ); static Menu g_BackgroundChange( "ScreenMiniMenuBackgroundChange", - MenuRow( ScreenEdit::rate, "Rate (applies to new adds)", true, true, 10, "0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%","120%","140%","160%","180%","200%" ), - MenuRow( ScreenEdit::fade_last, "Fade Last (applies to new adds)", true, true, 0, "NO","YES" ), - MenuRow( ScreenEdit::rewind_movie, "Rewind Movie (applies to new adds)", true, true, 0, "NO","YES" ), - MenuRow( ScreenEdit::loop, "Loop (applies to new adds)", true, true, 1, "NO","YES" ), - MenuRow( ScreenEdit::add_random, "Add Change to random", true, true, 0, NULL ), - MenuRow( ScreenEdit::add_song_bganimation, "Add Change to song BGAnimation", true, true, 0, NULL ), - MenuRow( ScreenEdit::add_song_movie, "Add Change to song Movie", true, true, 0, NULL ), - MenuRow( ScreenEdit::add_song_still, "Add Change to song Still", true, true, 0, NULL ), - MenuRow( ScreenEdit::add_global_random_movie, "Add Change to global Random Movie", true, true, 0, NULL ), - MenuRow( ScreenEdit::add_global_bganimation, "Add Change to global BGAnimation", true, true, 0, NULL ), - MenuRow( ScreenEdit::add_global_visualization, "Add Change to global Visualization", true, true, 0, NULL ), - MenuRow( ScreenEdit::delete_change, "Remove Change", true, true, 0, NULL ) + MenuRow( ScreenEdit::rate, "Rate (applies to new adds)", true, EDIT_MODE_PRACTICE, 10, "0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%","120%","140%","160%","180%","200%" ), + MenuRow( ScreenEdit::fade_last, "Fade Last (applies to new adds)", true, EDIT_MODE_PRACTICE, 0, "NO","YES" ), + MenuRow( ScreenEdit::rewind_movie, "Rewind Movie (applies to new adds)", true, EDIT_MODE_PRACTICE, 0, "NO","YES" ), + MenuRow( ScreenEdit::loop, "Loop (applies to new adds)", true, EDIT_MODE_PRACTICE, 1, "NO","YES" ), + MenuRow( ScreenEdit::add_random, "Add Change to random", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::add_song_bganimation, "Add Change to song BGAnimation", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::add_song_movie, "Add Change to song Movie", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::add_song_still, "Add Change to song Still", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::add_global_random_movie, "Add Change to global Random Movie", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::add_global_bganimation, "Add Change to global BGAnimation", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::add_global_visualization, "Add Change to global Visualization", true, EDIT_MODE_PRACTICE, 0, NULL ), + MenuRow( ScreenEdit::delete_change, "Remove Change", true, EDIT_MODE_PRACTICE, 0, NULL ) ); static Menu g_Prefs( "ScreenMiniMenuPreferences", - MenuRow( ScreenEdit::pref_show_bgs_play, "Show BGChanges during Play/Record", true, true, 0, "NO","YES" ) + MenuRow( ScreenEdit::pref_show_bgs_play, "Show BGChanges during Play/Record", true, EDIT_MODE_PRACTICE, 0, "NO","YES" ) ); static Menu g_InsertAttack( "ScreenMiniMenuInsertAttack", - MenuRow( -1, "Duration seconds", true, true, 3, "5","10","15","20","25","30","35","40","45" ), - MenuRow( -1, "Set modifiers", true, true, 0, "PRESS START" ) + MenuRow( -1, "Duration seconds", true, EDIT_MODE_PRACTICE, 3, "5","10","15","20","25","30","35","40","45" ), + MenuRow( -1, "Set modifiers", true, EDIT_MODE_PRACTICE, 0, "PRESS START" ) ); static Menu g_CourseMode( "ScreenMiniMenuCourseDisplay", - MenuRow( -1, "Play mods from course", true, true, 0, NULL ) + MenuRow( -1, "Play mods from course", true, EDIT_MODE_PRACTICE, 0, NULL ) ); // HACK: need to remember the track we're inserting on so @@ -525,8 +525,8 @@ void ScreenEdit::Init() g_iShiftAnchor = -1; - m_EditMode = MODE_INVALID; - TransitionEditMode( MODE_EDITING ); + m_EditState = STATE_INVALID; + TransitionEditState( STATE_EDITING ); this->AddChild( &m_Background ); @@ -616,7 +616,7 @@ ScreenEdit::~ScreenEdit() // play assist ticks void ScreenEdit::PlayTicks() { - if( !GAMESTATE->m_SongOptions.m_bAssistTick || m_EditMode != MODE_PLAYING ) + if( !GAMESTATE->m_SongOptions.m_bAssistTick || m_EditState != STATE_PLAYING ) return; /* Sound cards have a latency between when a sample is Play()ed and when the sound @@ -673,7 +673,7 @@ void ScreenEdit::Update( float fDeltaTime ) GAMESTATE->UpdateSongPosition( fSeconds, GAMESTATE->m_pCurSong->m_Timing, tm ); } - if( m_EditMode == MODE_RECORDING ) + if( m_EditState == STATE_RECORDING ) { // add or extend holds @@ -700,13 +700,13 @@ void ScreenEdit::Update( float fDeltaTime ) } } - if( m_EditMode == MODE_RECORDING || m_EditMode == MODE_PLAYING ) + if( m_EditState == STATE_RECORDING || m_EditState == STATE_PLAYING ) { // check for end of playback/record if( GAMESTATE->m_fSongBeat > NoteRowToBeat(m_NoteFieldEdit.m_iEndMarker) + 4 ) // give a one measure lead out { - TransitionEditMode( MODE_EDITING ); + TransitionEditState( STATE_EDITING ); GAMESTATE->m_fSongBeat = NoteRowToBeat( m_NoteFieldEdit.m_iEndMarker ); } } @@ -734,7 +734,7 @@ void ScreenEdit::UpdateTextInfo() return; // Don't update the text during playback or record. It causes skips. - if( m_EditMode != MODE_EDITING ) + if( m_EditState != STATE_EDITING ) return; if( !m_bTextInfoNeedsUpdate ) @@ -755,10 +755,9 @@ void ScreenEdit::UpdateTextInfo() sText += ssprintf( "Current sec:\n %.3f\n", m_pSong->GetElapsedTimeFromBeat(GAMESTATE->m_fSongBeat) ); sText += ssprintf( "Snap to:\n %s\n", sNoteType.c_str() ); sText += ssprintf( "Selection beat:\n %s\n %s\n", m_NoteFieldEdit.m_iBeginMarker==-1 ? "----" : ssprintf("%.3f",NoteRowToBeat(m_NoteFieldEdit.m_iBeginMarker)).c_str(), m_NoteFieldEdit.m_iEndMarker==-1 ? "----" : ssprintf("%.3f",NoteRowToBeat(m_NoteFieldEdit.m_iEndMarker)).c_str() ); - if( !HOME_EDIT_MODE ) - sText += ssprintf( "Difficulty:\n %s\n", DifficultyToString( m_pSteps->GetDifficulty() ).c_str() ); - if( !HOME_EDIT_MODE ) + if( EDIT_MODE == EDIT_MODE_FULL ) { + sText += ssprintf( "Difficulty:\n %s\n", DifficultyToString( m_pSteps->GetDifficulty() ).c_str() ); sText += ssprintf( "Description:\n %s\n", GAMESTATE->m_pCurSteps[PLAYER_1] ? GAMESTATE->m_pCurSteps[PLAYER_1]->GetDescription().c_str() : "no description" ); sText += ssprintf( "Main title:\n %s\n", m_pSong->m_sMainTitle.c_str() ); sText += ssprintf( "Sub title:\n %s\n", m_pSong->m_sSubTitle.c_str() ); @@ -768,12 +767,12 @@ void ScreenEdit::UpdateTextInfo() sText += ssprintf( "Hands:\n %d\n", iNumHands ); sText += ssprintf( "Holds:\n %d\n", iNumHolds ); sText += ssprintf( "Mines:\n %d\n", iNumMines ); - if( !HOME_EDIT_MODE ) + if( EDIT_MODE == EDIT_MODE_FULL ) + { sText += ssprintf( "Beat 0 Offset:\n %.3f secs\n", m_pSong->m_Timing.m_fBeat0OffsetInSeconds ); - if( !HOME_EDIT_MODE ) sText += ssprintf( "Preview Start:\n %.2f secs\n", m_pSong->m_fMusicSampleStartSeconds ); - if( !HOME_EDIT_MODE ) sText += ssprintf( "Preview Length:\n %.2f secs\n",m_pSong->m_fMusicSampleLengthSeconds ); + } m_textInfo.SetText( sText ); } @@ -800,16 +799,16 @@ void ScreenEdit::Input( const DeviceInput& DeviceI, const InputEventType type, c EditButton EditB; DeviceToEdit( di, EditB ); - switch( m_EditMode ) + switch( m_EditState ) { - case MODE_EDITING: + case STATE_EDITING: InputEdit( di, type, GameI, MenuI, StyleI, EditB ); m_bTextInfoNeedsUpdate = true; break; - case MODE_RECORDING: + case STATE_RECORDING: InputRecord( di, type, GameI, MenuI, StyleI, EditB ); break; - case MODE_PLAYING: + case STATE_PLAYING: InputPlay( di, type, GameI, MenuI, StyleI, EditB ); break; default: ASSERT(0); @@ -1350,7 +1349,7 @@ void ScreenEdit::InputRecord( const DeviceInput& DeviceI, const InputEventType t { if( EditB == EDIT_BUTTON_RETURN_TO_EDIT ) { - TransitionEditMode( MODE_EDITING ); + TransitionEditState( STATE_EDITING ); return; } @@ -1397,7 +1396,7 @@ void ScreenEdit::InputPlay( const DeviceInput& DeviceI, const InputEventType typ switch( EditB ) { case EDIT_BUTTON_RETURN_TO_EDIT: - TransitionEditMode( MODE_EDITING ); + TransitionEditState( STATE_EDITING ); break; case EDIT_BUTTON_TOGGLE_ASSIST_TICK: GAMESTATE->m_SongOptions.m_bAssistTick ^= 1; @@ -1443,13 +1442,13 @@ void ScreenEdit::InputPlay( const DeviceInput& DeviceI, const InputEventType typ } -void ScreenEdit::TransitionEditMode( EditMode em ) +void ScreenEdit::TransitionEditState( EditState em ) { - EditMode old = m_EditMode; + EditState old = m_EditState; switch( em ) { - case MODE_EDITING: + case STATE_EDITING: m_sprOverlay->PlayCommand( "Edit" ); /* Important: people will stop playing, change the BG and start again; make sure we reload */ @@ -1472,7 +1471,7 @@ void ScreenEdit::TransitionEditMode( EditMode em ) GAMESTATE->RebuildPlayerOptionsFromActiveAttacks( PLAYER_1 ); GAMESTATE->m_pPlayerState[PLAYER_1]->m_CurrentPlayerOptions = GAMESTATE->m_pPlayerState[PLAYER_1]->m_PlayerOptions; - if( old == MODE_RECORDING ) + if( old == STATE_RECORDING ) { SaveUndo(); @@ -1484,9 +1483,9 @@ void ScreenEdit::TransitionEditMode( EditMode em ) CheckNumberOfNotesAndUndo(); } break; - case MODE_RECORDING: + case STATE_RECORDING: break; - case MODE_PLAYING: + case STATE_PLAYING: break; default: ASSERT(0); @@ -1496,26 +1495,26 @@ void ScreenEdit::TransitionEditMode( EditMode em ) // // Show/hide depending on em // - m_Background.SetHidden( !PREFSMAN->m_bEditorShowBGChangesPlay || em == MODE_EDITING ); - m_sprUnderlay->SetHidden( em != MODE_EDITING ); - m_sprOverlay->SetHidden( em != MODE_EDITING ); - m_textInputTips.SetHidden( em != MODE_EDITING ); - m_textInfo.SetHidden( em != MODE_EDITING ); + m_Background.SetHidden( !PREFSMAN->m_bEditorShowBGChangesPlay || em == STATE_EDITING ); + m_sprUnderlay->SetHidden( em != STATE_EDITING ); + m_sprOverlay->SetHidden( em != STATE_EDITING ); + m_textInputTips.SetHidden( em != STATE_EDITING ); + m_textInfo.SetHidden( em != STATE_EDITING ); // Play the OnCommands again so that these will be re-hidden if the OnCommand hides them. - if( em == MODE_EDITING ) + if( em == STATE_EDITING ) { m_textInputTips.PlayCommand( "On" ); m_textInfo.PlayCommand( "On" ); } - m_textPlayRecordHelp.SetHidden( em == MODE_EDITING ); - m_SnapDisplay.SetHidden( em != MODE_EDITING ); - m_NoteFieldEdit.SetHidden( em != MODE_EDITING ); - m_NoteFieldRecord.SetHidden( em != MODE_RECORDING ); - m_Player.SetHidden( em != MODE_PLAYING ); - m_Foreground.SetHidden( !PREFSMAN->m_bEditorShowBGChangesPlay || em == MODE_EDITING ); + m_textPlayRecordHelp.SetHidden( em == STATE_EDITING ); + m_SnapDisplay.SetHidden( em != STATE_EDITING ); + m_NoteFieldEdit.SetHidden( em != STATE_EDITING ); + m_NoteFieldRecord.SetHidden( em != STATE_RECORDING ); + m_Player.SetHidden( em != STATE_PLAYING ); + m_Foreground.SetHidden( !PREFSMAN->m_bEditorShowBGChangesPlay || em == STATE_EDITING ); - m_EditMode = em; + m_EditState = em; } void ScreenEdit::HandleScreenMessage( const ScreenMessage SM ) @@ -1773,10 +1772,11 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector &iAns float fMusicSeconds = m_soundMusic.GetLengthSeconds(); g_StepsInformation.rows[difficulty].iDefaultChoice = pSteps->GetDifficulty(); - g_StepsInformation.rows[difficulty].bEnabled = !HOME_EDIT_MODE; + g_StepsInformation.rows[difficulty].bEnabled = EDIT_MODE == EDIT_MODE_FULL; + g_StepsInformation.rows[difficulty].bEnabled = EDIT_MODE <= EDIT_MODE_HOME; g_StepsInformation.rows[meter].iDefaultChoice = clamp( pSteps->GetMeter()-1, 0, MAX_METER+1 ); g_StepsInformation.rows[predict_meter].choices.resize(1);g_StepsInformation.rows[predict_meter].choices[0] = ssprintf("%.2f",pSteps->PredictMeter()); - g_StepsInformation.rows[description].choices.resize(1); g_StepsInformation.rows[description].choices[0] = pSteps->GetDescription(); g_StepsInformation.rows[description].bEnabled = !HOME_EDIT_MODE; + g_StepsInformation.rows[description].choices.resize(1); g_StepsInformation.rows[description].choices[0] = pSteps->GetDescription(); g_StepsInformation.rows[description].bEnabled = EDIT_MODE == EDIT_MODE_FULL; g_StepsInformation.rows[tap_notes].choices.resize(1); g_StepsInformation.rows[tap_notes].choices[0] = ssprintf("%d", m_NoteDataEdit.GetNumTapNotes()); g_StepsInformation.rows[jumps].choices.resize(1); g_StepsInformation.rows[jumps].choices[0] = ssprintf("%d", m_NoteDataEdit.GetNumJumps()); g_StepsInformation.rows[hands].choices.resize(1); g_StepsInformation.rows[hands].choices[0] = ssprintf("%d", m_NoteDataEdit.GetNumHands()); @@ -1818,34 +1818,43 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector &iAns pSteps->SetNoteData( m_NoteDataEdit ); pSteps->CalculateRadarValues( pSong->m_fMusicLengthSeconds ); - if( HOME_EDIT_MODE ) + switch( EDIT_MODE ) { - CString s; - switch( c ) + case EDIT_MODE_HOME: { - case save: s = "ScreenMemcardSaveEditsAfterSave"; break; - case save_on_exit: s = "ScreenMemcardSaveEditsAfterExit"; break; - default: ASSERT(0); + CString s; + switch( c ) + { + case save: s = "ScreenMemcardSaveEditsAfterSave"; break; + case save_on_exit: s = "ScreenMemcardSaveEditsAfterExit"; break; + default: ASSERT(0); + } + SCREENMAN->AddNewScreenToTop( s ); } - SCREENMAN->AddNewScreenToTop( s ); - } - else - { - pSteps->SetSavedToDisk( true ); - CopyToLastSave(); + break; + case EDIT_MODE_FULL: + { + pSteps->SetSavedToDisk( true ); + CopyToLastSave(); - GAMESTATE->m_pCurSong->Save(); - SCREENMAN->ZeroNextUpdate(); + GAMESTATE->m_pCurSong->Save(); + SCREENMAN->ZeroNextUpdate(); - // we shouldn't say we're saving a DWI if we're on any game besides - // dance, it just looks tacky and people may be wondering where the - // DWI file is :-) - if ((int)pSteps->m_StepsType <= (int)STEPS_TYPE_DANCE_SOLO) - SCREENMAN->SystemMessage( "Saved as SM and DWI." ); - else - SCREENMAN->SystemMessage( "Saved as SM." ); + // we shouldn't say we're saving a DWI if we're on any game besides + // dance, it just looks tacky and people may be wondering where the + // DWI file is :-) + if ((int)pSteps->m_StepsType <= (int)STEPS_TYPE_DANCE_SOLO) + SCREENMAN->SystemMessage( "Saved as SM and DWI." ); + else + SCREENMAN->SystemMessage( "Saved as SM." ); - HandleScreenMessage( SM_Success ); + HandleScreenMessage( SM_Success ); + } + break; + case EDIT_MODE_PRACTICE: + break; + default: + ASSERT(0); } m_soundSave.Play(); @@ -2013,10 +2022,21 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector &iAns PlayPreviewMusic(); break; case exit: - SCREENMAN->Prompt( - SM_DoSaveAndExit, - "Do you want to save changes before exiting?", - PROMPT_YES_NO_CANCEL, ANSWER_CANCEL ); + switch( EDIT_MODE ) + { + case EDIT_MODE_FULL: + case EDIT_MODE_HOME: + SCREENMAN->Prompt( + SM_DoSaveAndExit, + "Do you want to save changes before exiting?", + PROMPT_YES_NO_CANCEL, ANSWER_CANCEL ); + break; + case EDIT_MODE_PRACTICE: + SCREENMAN->SendMessageToTopScreen( SM_DoExit ); + break; + default: + ASSERT(0); + } break; default: ASSERT(0); @@ -2271,7 +2291,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns SOUND->PlayMusic(""); - TransitionEditMode( MODE_PLAYING ); + TransitionEditState( STATE_PLAYING ); m_sprOverlay->PlayCommand( "Play" ); GAMESTATE->m_bPastHereWeGo = true; @@ -2323,7 +2343,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns SOUND->PlayMusic(""); - TransitionEditMode( MODE_RECORDING ); + TransitionEditState( STATE_RECORDING ); m_sprOverlay->PlayCommand( "Record" ); GAMESTATE->m_bPastHereWeGo = true; diff --git a/stepmania/src/ScreenEdit.h b/stepmania/src/ScreenEdit.h index a9bdf8570f..cf693ccf78 100644 --- a/stepmania/src/ScreenEdit.h +++ b/stepmania/src/ScreenEdit.h @@ -139,8 +139,8 @@ public: protected: ThemeMetric PREV_SCREEN; - enum EditMode { MODE_EDITING, MODE_RECORDING, MODE_PLAYING, NUM_EDIT_MODES, MODE_INVALID }; - void TransitionEditMode( EditMode em ); + enum EditState { STATE_EDITING, STATE_RECORDING, STATE_PLAYING, NUM_EDIT_STATES, STATE_INVALID }; + void TransitionEditState( EditState em ); void PlayTicks(); void PlayPreviewMusic(); @@ -160,7 +160,7 @@ protected: float GetMaximumBeatForMoving() const; // don't allow Down key to go past this beat. - EditMode m_EditMode; + EditState m_EditState; Song* m_pSong; Steps* m_pSteps; diff --git a/stepmania/src/ScreenEditMenu.cpp b/stepmania/src/ScreenEditMenu.cpp index 0142760eea..b0dfe18197 100644 --- a/stepmania/src/ScreenEditMenu.cpp +++ b/stepmania/src/ScreenEditMenu.cpp @@ -62,7 +62,7 @@ void DeleteCurSteps( void* pThrowAway ) Song* pSong = GAMESTATE->m_pCurSong; Steps* pStepsToDelete = GAMESTATE->m_pCurSteps[PLAYER_1]; pSong->RemoveSteps( pStepsToDelete ); - if( !HOME_EDIT_MODE ) + if( EDIT_MODE == EDIT_MODE_FULL ) { pSong->Save(); SCREENMAN->ZeroNextUpdate(); @@ -224,13 +224,16 @@ void ScreenEditMenu::MenuStart( PlayerNumber pn ) break; case EDIT_MENU_ACTION_DELETE: ASSERT( pSteps ); - if( HOME_EDIT_MODE ) + switch( EDIT_MODE ) { + case EDIT_MODE_HOME: SCREENMAN->AddNewScreenToTop( "ScreenEditMenuDeleteSteps" ); - } - else - { + break; + case EDIT_MODE_FULL: SCREENMAN->Prompt( SM_RefreshSelector, "These steps will be lost permanently.\n\nContinue with delete?", PROMPT_YES_NO, ANSWER_NO, DeleteCurSteps ); + break; + default: + ASSERT(0); } break; case EDIT_MENU_ACTION_CREATE: diff --git a/stepmania/src/ScreenMiniMenu.cpp b/stepmania/src/ScreenMiniMenu.cpp index c90fe66da3..b16e40cb57 100644 --- a/stepmania/src/ScreenMiniMenu.cpp +++ b/stepmania/src/ScreenMiniMenu.cpp @@ -43,7 +43,7 @@ void ScreenMiniMenu::Init( const Menu* pDef, ScreenMessage SM_SendOnOK, ScreenMe FOREACH_CONST( MenuRow, pDef->rows, r ) { // Don't add rows that aren't applicable to HomeEditMode. - if( !HOME_EDIT_MODE || r->bShowInHomeEditMode ) + if( EDIT_MODE >= r->emShowIn ) m_vMenuRows.push_back( *r ); } diff --git a/stepmania/src/ScreenMiniMenu.h b/stepmania/src/ScreenMiniMenu.h index 5261bc35db..51584e0218 100644 --- a/stepmania/src/ScreenMiniMenu.h +++ b/stepmania/src/ScreenMiniMenu.h @@ -15,14 +15,14 @@ struct MenuRow int iRowCode; CString sName; bool bEnabled; - bool bShowInHomeEditMode; + EditMode emShowIn; int iDefaultChoice; vector choices; MenuRow() {} - MenuRow( int r, CString n, bool e, bool s, int d, const char *c0=NULL, const char *c1=NULL, const char *c2=NULL, const char *c3=NULL, const char *c4=NULL, const char *c5=NULL, const char *c6=NULL, const char *c7=NULL, const char *c8=NULL, const char *c9=NULL, const char *c10=NULL, const char *c11=NULL, const char *c12=NULL, const char *c13=NULL, const char *c14=NULL, const char *c15=NULL, const char *c16=NULL, const char *c17=NULL, const char *c18=NULL, const char *c19=NULL ) + MenuRow( int r, CString n, bool e, EditMode s, int d, const char *c0=NULL, const char *c1=NULL, const char *c2=NULL, const char *c3=NULL, const char *c4=NULL, const char *c5=NULL, const char *c6=NULL, const char *c7=NULL, const char *c8=NULL, const char *c9=NULL, const char *c10=NULL, const char *c11=NULL, const char *c12=NULL, const char *c13=NULL, const char *c14=NULL, const char *c15=NULL, const char *c16=NULL, const char *c17=NULL, const char *c18=NULL, const char *c19=NULL ) { - iRowCode = r; sName = n; bEnabled = e; bShowInHomeEditMode = s; iDefaultChoice = d; + iRowCode = r; sName = n; bEnabled = e; emShowIn = s; iDefaultChoice = d; #define PUSH( c ) if(c) choices.push_back(c); PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5);PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11);PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17);PUSH(c18);PUSH(c19); #undef PUSH