From 8fc33de8bf52b42e47416ff6ae549e50d531e26f Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Thu, 20 Feb 2003 00:57:52 +0000 Subject: [PATCH] split LONG transform into BIG and QUICK --- stepmania/NEWS | 7 ++++--- stepmania/src/NoteData.cpp | 30 +++++++++++++++++++++------ stepmania/src/NoteData.h | 4 +++- stepmania/src/Player.cpp | 9 ++++---- stepmania/src/PlayerOptions.cpp | 12 ++++++----- stepmania/src/PlayerOptions.h | 3 ++- stepmania/src/ScreenEdit.cpp | 5 +++-- stepmania/src/ScreenEdit.h | 2 +- stepmania/src/ScreenPlayerOptions.cpp | 2 +- stepmania/src/ScreenRanking.cpp | 8 +++---- 10 files changed, 54 insertions(+), 28 deletions(-) diff --git a/stepmania/NEWS b/stepmania/NEWS index 0ddaf913ea..159b597f21 100644 --- a/stepmania/NEWS +++ b/stepmania/NEWS @@ -11,15 +11,16 @@ NEW FEATURE: New Edit menus with ability to delete Notes patterns and new options for importing existing patterns into a new Notes pattern. NEW FEATURE: Jukebox mode. Like demonstration, but plays entire songs and loops. -NEW FEATURE: F6 to save screenshot. Saved in StepMania program directory +NEW FEATURE: F5 to save screenshot. Saved in StepMania program directory as "screenshotXXXX.bmp". CHANGE: Reorganization of options screens. NEW FEATURE: Option for user-selectable extra stage 1 CHANGE: Documentation now in HTML format. -CHANGE: Overhauled NoteSkin format. See README-FIRST.htm for details. +CHANGE: Overhauled NoteSkin format. See README-FIRST.html for details. BUG FIX: Super-shuffle fixed (now doesn't add extra notes) NEW FEATURE: Added WIDE transform (changes notes on beats to jumps) -NEW FEATURE: Added TALL transform (adds 16th notes between 8ths) +NEW FEATURE: Added BIG transform (strategically inserts 8ths) +NEW FEATURE: Added QUICK transform (strategically inserts 16ths) ----------------------- Version 3.01 --------------------------- CHANGE: Simplified NoteSkin tap graphic format. Old NoteSkins will need to diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index 1dce6c5f5d..33c5bd6d8f 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -1043,25 +1043,43 @@ void NoteDataUtil::Wide( NoteData &in ) in.Convert4sToHoldNotes(); } -void NoteDataUtil::Tall( NoteData &in ) +void NoteDataUtil::Big( NoteData &in ) +{ + InsertIntelligentTaps(in,1.0f); // add 8ths +} + +void NoteDataUtil::Quick( NoteData &in ) +{ + InsertIntelligentTaps(in,0.5f); // add 16ths +} + +void NoteDataUtil::InsertIntelligentTaps( NoteData &in, float fBeatInterval ) { in.ConvertHoldNotesTo4s(); // insert 16th between all 4th-8ths int max_row = in.GetLastRow(); - int rows_per_eighth = ROWS_PER_BEAT/2; - for( int i=0; i<=max_row; i+=rows_per_eighth ) + int rows_per_interval = BeatToNoteRow( fBeatInterval ); + for( int i=0; i<=max_row; i+=rows_per_interval ) { int iRowEarlier = i; - int iRowLater = i + rows_per_eighth; - int iRowMiddle = i + rows_per_eighth/2; + int iRowLater = i + rows_per_interval; + int iRowMiddle = i + rows_per_interval/2; if( in.GetNumTapNonEmptyTracks(iRowEarlier) != 1 ) continue; if( in.GetNumTapNonEmptyTracks(iRowLater) != 1 ) continue; // there is a 4th and 8th note surrounding iRowBetween - if( !in.IsRowEmpty(iRowMiddle) ) // there's already a 16th here + // don't insert a new note if there's already one within this interval + bool bNoteInMiddle = false; + for( int j=iRowEarlier+1; j<=iRowLater-1; j++ ) + if( !in.IsRowEmpty(iRowMiddle) ) + { + bNoteInMiddle = true; + break; + } + if( bNoteInMiddle ) continue; // add a note determinitsitcally somewhere on a track different from the two surrounding notes diff --git a/stepmania/src/NoteData.h b/stepmania/src/NoteData.h index b5b085ffe5..8130be0527 100644 --- a/stepmania/src/NoteData.h +++ b/stepmania/src/NoteData.h @@ -140,7 +140,9 @@ namespace NoteDataUtil void Turn( NoteData &in, TurnType tt ); void Little( NoteData &in ); void Wide( NoteData &in ); - void Tall( NoteData &in ); + void Big( NoteData &in ); + void Quick( NoteData &in ); + void InsertIntelligentTaps( NoteData &in, float fBeatInterval ); void SuperShuffleTaps( NoteData &in ); void Backwards( NoteData &in ); void SwapSides( NoteData &in ); diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index eda2e8ae5c..5949ddce71 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -115,10 +115,11 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi switch( GAMESTATE->m_PlayerOptions[pn].m_Transform ) { - case PlayerOptions::TRANSFORM_NONE: break; - case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little(*this); break; - case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide(*this); break; - case PlayerOptions::TRANSFORM_TALL: NoteDataUtil::Tall(*this); break; + case PlayerOptions::TRANSFORM_NONE: break; + case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little(*this); break; + case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide(*this); break; + case PlayerOptions::TRANSFORM_BIG: NoteDataUtil::Big(*this); break; + case PlayerOptions::TRANSFORM_QUICK: NoteDataUtil::Quick(*this); break; default: ASSERT(0); } diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index 6fcbbd58f3..871a1b9623 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -88,10 +88,11 @@ CString PlayerOptions::GetString() switch( m_Transform ) { - case TRANSFORM_NONE: break; - case TRANSFORM_LITTLE: sReturn += "Little, "; break; - case TRANSFORM_WIDE: sReturn += "Wide, "; break; - case TRANSFORM_TALL: sReturn += "Tall, "; break; + case TRANSFORM_NONE: break; + case TRANSFORM_LITTLE: sReturn += "Little, "; break; + case TRANSFORM_WIDE: sReturn += "Wide, "; break; + case TRANSFORM_BIG: sReturn += "Big, "; break; + case TRANSFORM_QUICK: sReturn += "Quick, "; break; default: ASSERT(0); // invalid } @@ -153,7 +154,8 @@ void PlayerOptions::FromString( CString sOptions ) else if( sBit == "supershuffle" )m_TurnType = TURN_SUPER_SHUFFLE; else if( sBit == "little" ) m_Transform = TRANSFORM_LITTLE; else if( sBit == "wide" ) m_Transform = TRANSFORM_WIDE; - else if( sBit == "tall" ) m_Transform = TRANSFORM_TALL; + else if( sBit == "big" ) m_Transform = TRANSFORM_BIG; + else if( sBit == "quick" ) m_Transform = TRANSFORM_QUICK; else if( sBit == "reverse" ) m_bReverseScroll = true; else if( sBit == "noholds" ) m_bHoldNotes = false; else if( sBit == "nofreeze" ) m_bHoldNotes = false; diff --git a/stepmania/src/PlayerOptions.h b/stepmania/src/PlayerOptions.h index d2b38b700d..f33f7cd016 100644 --- a/stepmania/src/PlayerOptions.h +++ b/stepmania/src/PlayerOptions.h @@ -58,7 +58,8 @@ struct PlayerOptions TRANSFORM_NONE=0, TRANSFORM_LITTLE, TRANSFORM_WIDE, - TRANSFORM_TALL, + TRANSFORM_BIG, + TRANSFORM_QUICK, NUM_TRANSFORMS } m_Transform; void NextTransform(); diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index 624bf46376..8e8201ae2f 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -141,7 +141,7 @@ MiniMenuDefinition g_AreaMenu = { "Paste", true, 1, 0, {""} }, { "Clear", true, 1, 0, {""} }, { "Quantize", true, NUM_NOTE_TYPES, 0, {"4TH","8TH","12TH","16TH","24TH","32ND"} }, - { "Transform", true, ScreenEdit::NUM_TRANSFORM_TYPES, 0, {"Little","Wide","Big","Left","Right","Mirror","Shuffle","Super Shuffle","Backwards","Swap Sides"} }, + { "Transform", true, ScreenEdit::NUM_TRANSFORM_TYPES, 0, {"Little","Wide","Big","Quick","Left","Right","Mirror","Shuffle","Super Shuffle","Backwards","Swap Sides"} }, { "Play selection", true, 1, 0, {""} }, { "Record in selection",true, 1, 0, {""} }, { "Insert blank beat and shift down", true, 1, 0, {""} }, @@ -1290,7 +1290,8 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers ) { case little: NoteDataUtil::Little( m_Clipboard ); break; case wide: NoteDataUtil::Wide( m_Clipboard ); break; - case tall: NoteDataUtil::Tall( m_Clipboard ); break; + case big: NoteDataUtil::Big( m_Clipboard ); break; + case quick: NoteDataUtil::Quick( m_Clipboard ); break; case left: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::left ); break; case right: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::right ); break; case shuffle: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::shuffle ); break; diff --git a/stepmania/src/ScreenEdit.h b/stepmania/src/ScreenEdit.h index e83ea58d92..a590c0cbdb 100644 --- a/stepmania/src/ScreenEdit.h +++ b/stepmania/src/ScreenEdit.h @@ -134,7 +134,7 @@ public: NUM_AREA_MENU_CHOICES }; void HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers ); - enum TransformType { little, wide, tall, left, right, mirror, shuffle, super_shuffle, backwards, swap_sides, NUM_TRANSFORM_TYPES }; + enum TransformType { little, wide, big, quick, left, right, mirror, shuffle, super_shuffle, backwards, swap_sides, NUM_TRANSFORM_TYPES }; enum EditNotesStatisticsChoice { difficulty, diff --git a/stepmania/src/ScreenPlayerOptions.cpp b/stepmania/src/ScreenPlayerOptions.cpp index 6750a24612..ca98ae5df6 100644 --- a/stepmania/src/ScreenPlayerOptions.cpp +++ b/stepmania/src/ScreenPlayerOptions.cpp @@ -40,7 +40,7 @@ OptionRowData g_PlayerOptionsLines[NUM_PLAYER_OPTIONS_LINES] = { { "Effect", 7, {"OFF","DRUNK","DIZZY","SPACE","MINI","FLIP","TORNADO"} }, { "Appear\n-ance", 5, {"VISIBLE","HIDDEN","SUDDEN","STEALTH","BLINK"} }, { "Turn", 6, {"OFF","MIRROR","LEFT","RIGHT","SHUFFLE","SUPER SHUFFLE"} }, - { "Trans\n-form", 4, {"OFF","LITTLE","WIDE","TALL"} }, + { "Trans\n-form", 5, {"OFF","LITTLE","WIDE","BIG","QUICK"} }, { "Scroll", 2, {"STANDARD","REVERSE"} }, { "Note\nSkin", 0, {""} }, { "Holds", 2, {"OFF","ON"} }, diff --git a/stepmania/src/ScreenRanking.cpp b/stepmania/src/ScreenRanking.cpp index 6e4d7ff950..6c420267ce 100644 --- a/stepmania/src/ScreenRanking.cpp +++ b/stepmania/src/ScreenRanking.cpp @@ -218,8 +218,8 @@ void ScreenRanking::SetPage( PageToShow pts ) if( bRecentHighScore ) { - m_textNames[l].SetEffectDiffuseBlinking( 0.1f, TEXT_COLOR, RageColor(1,1,1,1) ); - m_textScores[l].SetEffectDiffuseBlinking( 0.1f, TEXT_COLOR, RageColor(1,1,1,1) ); + m_textNames[l].SetEffectGlowBlinking(0.1f); + m_textScores[l].SetEffectGlowBlinking(0.1f); } else { @@ -252,8 +252,8 @@ void ScreenRanking::SetPage( PageToShow pts ) pts.nt == GAMESTATE->m_RankingNotesType && GAMESTATE->m_iRankingIndex[p] == l ) { - m_textNames[l].SetEffectDiffuseBlinking(); - m_textScores[l].SetEffectDiffuseBlinking(); + m_textNames[l].SetEffectGlowBlinking(0.1f); + m_textScores[l].SetEffectGlowBlinking(0.1f); } else {