From 1c097d1d5fb353ec1aaf11fb767c9d5ada59bfa3 Mon Sep 17 00:00:00 2001 From: Andrew Livy Date: Sun, 4 May 2003 13:58:45 +0000 Subject: [PATCH] Added: Random Vanish mode: Arrows go in at the bottom, disappear, get randomized in the middle whist invisible and come out at the top somewhere else :) Known Bugs: The only major bug i've experienced with this is for some reason the arrows continue past the grey bar even if you get great, perfect or marvellous. This doesn't affect the score though, I can't quite figure this one out. Added: Hidden and Vanish codes for PIU. --- .../ScreenEz2SelectMusic hiddenicon.redir | 1 + .../ScreenEz2SelectMusic vanishicon.redir | 1 + .../ScreenSelectMusicEz2 hiddenicon.png | Bin 0 -> 1415 bytes .../ScreenSelectMusicEz2 vanishicon.png | Bin 0 -> 1925 bytes stepmania/Themes/default/metrics.ini | 9 ++++++ stepmania/src/ArrowEffects.cpp | 24 ++++++++++++++ stepmania/src/CodeDetector.cpp | 12 ++++++- stepmania/src/CodeDetector.h | 2 ++ stepmania/src/NoteField.cpp | 2 -- stepmania/src/OptionIconRow.cpp | 1 + stepmania/src/Player.cpp | 30 ++++++++++++++++++ stepmania/src/Player.h | 4 +-- stepmania/src/PlayerOptions.cpp | 2 ++ stepmania/src/PlayerOptions.h | 1 + stepmania/src/ScreenEz2SelectMusic.cpp | 24 ++++++++++++++ stepmania/src/ScreenEz2SelectMusic.h | 2 ++ stepmania/src/ScreenGameplay.cpp | 6 ++++ stepmania/src/ScreenPlayerOptions.cpp | 2 +- 18 files changed, 117 insertions(+), 6 deletions(-) create mode 100644 stepmania/Themes/default/Graphics/ScreenEz2SelectMusic hiddenicon.redir create mode 100644 stepmania/Themes/default/Graphics/ScreenEz2SelectMusic vanishicon.redir create mode 100644 stepmania/Themes/default/Graphics/ScreenSelectMusicEz2 hiddenicon.png create mode 100644 stepmania/Themes/default/Graphics/ScreenSelectMusicEz2 vanishicon.png diff --git a/stepmania/Themes/default/Graphics/ScreenEz2SelectMusic hiddenicon.redir b/stepmania/Themes/default/Graphics/ScreenEz2SelectMusic hiddenicon.redir new file mode 100644 index 0000000000..c17b8342d2 --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEz2SelectMusic hiddenicon.redir @@ -0,0 +1 @@ +ScreenSelectMusicEz2 hiddenicon.png \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenEz2SelectMusic vanishicon.redir b/stepmania/Themes/default/Graphics/ScreenEz2SelectMusic vanishicon.redir new file mode 100644 index 0000000000..91d625d37a --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEz2SelectMusic vanishicon.redir @@ -0,0 +1 @@ +ScreenSelectMusicEz2 vanishicon.png \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenSelectMusicEz2 hiddenicon.png b/stepmania/Themes/default/Graphics/ScreenSelectMusicEz2 hiddenicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1822d7c837114566566f08fa910e8d187a25db06 GIT binary patch literal 1415 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 0) + { + + float adjustment = GAMESTATE->m_CurrentPlayerOptions[pn].m_fScrollSpeed; + if(adjustment == 0) + adjustment = 1; + + float fRealCenterLine = fCenterLine / adjustment; + const float fDistFromRealCenterLine = fYPos - fRealCenterLine; + float fRealFadeDist = (fFadeDist - 20) / adjustment; + + if(fYPos >= fRealCenterLine + (fRealFadeDist)) + { + fVisibleAdjust += fAppearances[PlayerOptions::APPEARANCE_RANDOMVANISH] * (SCALE( fDistFromRealCenterLine-fRealFadeDist, 0, (fRealFadeDist), -1, 0 )); // go hidden + } + else if(fYPos <= fRealCenterLine - (fRealFadeDist)) + { + fVisibleAdjust += fAppearances[PlayerOptions::APPEARANCE_RANDOMVANISH] * (SCALE( fDistFromRealCenterLine+fRealFadeDist, 0, -((fRealFadeDist)), -1, 0 )); // suddenly appear + } + else + { + fVisibleAdjust += fAppearances[PlayerOptions::APPEARANCE_RANDOMVANISH] * -1; // be invisible + } + } return clamp( 1+fVisibleAdjust, 0, 1 ); } diff --git a/stepmania/src/CodeDetector.cpp b/stepmania/src/CodeDetector.cpp index 3193f4e543..cd983285d8 100644 --- a/stepmania/src/CodeDetector.cpp +++ b/stepmania/src/CodeDetector.cpp @@ -11,6 +11,7 @@ */ #include "CodeDetector.h" +#include "PlayerOptions.h" #include "GameState.h" #include "InputQueue.h" #include "ThemeManager.h" @@ -41,6 +42,8 @@ const CString g_sCodeNames[CodeDetector::NUM_CODES] = { "Reverse", "HoldNotes", "Dark", + "Hidden", + "RandomVanish", "CancelAll", "NextTheme", "NextAnnouncer" @@ -136,6 +139,9 @@ bool CodeDetector::EnteredNextSort( GameController controller ) #define INCREMENT_SCROLL_SPEED(s) (s==0.5f) ? s=0.75f : (s==0.75f) ? s=1.0f : (s==1.0f) ? s=1.5f : (s==1.5f) ? s=2.0f : (s==2.0f) ? s=3.0f : (s==3.0f) ? s=4.0f : (s==4.0f) ? s=5.0f : (s==5.0f) ? s=8.0f : s=0.5f; #define DECREMENT_SCROLL_SPEED(s) (s==0.75f) ? s=0.5f : (s==1.0f) ? s=0.75f : (s==1.5f) ? s=1.0f : (s==2.0f) ? s=1.5f : (s==3.0f) ? s=2.0f : (s==4.0f) ? s=3.0f : (s==5.0f) ? s=4.0f : (s==8.0f) ? s=4.0f : s=8.0f; +#define TOGGLE_HIDDEN ZERO(GAMESTATE->m_PlayerOptions[pn].m_fAppearances); GAMESTATE->m_PlayerOptions[pn].m_fAppearances[PlayerOptions::APPEARANCE_HIDDEN] = 1; +#define TOGGLE_RANDOMVANISH ZERO(GAMESTATE->m_PlayerOptions[pn].m_fAppearances); GAMESTATE->m_PlayerOptions[pn].m_fAppearances[PlayerOptions::APPEARANCE_RANDOMVANISH] = 1; + bool CodeDetector::DetectAndAdjustMusicOptions( GameController controller ) { const StyleDef* pStyleDef = GAMESTATE->GetCurrentStyleDef(); @@ -159,12 +165,16 @@ bool CodeDetector::DetectAndAdjustMusicOptions( GameController controller ) case CODE_PREVIOUS_SCROLL_SPEED:DECREMENT_SCROLL_SPEED( GAMESTATE->m_PlayerOptions[pn].m_fScrollSpeed ); break; case CODE_NEXT_ACCEL: GAMESTATE->m_PlayerOptions[pn].NextAccel(); break; case CODE_NEXT_EFFECT: GAMESTATE->m_PlayerOptions[pn].NextEffect(); break; - case CODE_NEXT_APPEARANCE: GAMESTATE->m_PlayerOptions[pn].NextAppearance();; break; + case CODE_NEXT_APPEARANCE: GAMESTATE->m_PlayerOptions[pn].NextAppearance(); break; case CODE_NEXT_TURN: GAMESTATE->m_PlayerOptions[pn].NextTurn(); break; case CODE_REVERSE: FLOAT_TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_fReverseScroll ); break; case CODE_HOLDS: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bHoldNotes, true, false ); break; case CODE_DARK: FLOAT_TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_fDark ); break; case CODE_CANCEL_ALL: GAMESTATE->m_PlayerOptions[pn].Init(); break; + case CODE_HIDDEN: TOGGLE_HIDDEN break; + case CODE_RANDOMVANISH: TOGGLE_RANDOMVANISH break; + + // GAMESTATE->m_PlayerOptions[pn].SetOneAppearance(GAMESTATE->m_PlayerOptions[pn].GetFirstAppearance()); break; } return true; // don't check any more } diff --git a/stepmania/src/CodeDetector.h b/stepmania/src/CodeDetector.h index c2fb52c838..9a44edc8db 100644 --- a/stepmania/src/CodeDetector.h +++ b/stepmania/src/CodeDetector.h @@ -38,6 +38,8 @@ public: CODE_REVERSE, CODE_HOLDS, CODE_DARK, + CODE_HIDDEN, + CODE_RANDOMVANISH, CODE_CANCEL_ALL, CODE_NEXT_THEME, CODE_NEXT_ANNOUNCER, diff --git a/stepmania/src/NoteField.cpp b/stepmania/src/NoteField.cpp index 98a4ac7eff..8ad2e02b9a 100644 --- a/stepmania/src/NoteField.cpp +++ b/stepmania/src/NoteField.cpp @@ -420,7 +420,6 @@ void NoteField::DrawPrimitives() float fBeat = NoteRowToBeat(i); bIsInSelectionRange = m_fBeginMarker<=fBeat && fBeat<=m_fEndMarker; } - m_NoteDisplay[c].DrawTap( c, NoteRowToBeat(i), bHoldNoteBeginsOnThisBeat, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail ); } @@ -429,7 +428,6 @@ void NoteField::DrawPrimitives() } - void NoteField::RemoveTapNoteRow( int iIndex ) { for( int c=0; cGetPathToB( BackdropName ) ); + m_NoteField.Load( (NoteData*)this, pn, iStartDrawingAtPixels, iStopDrawingAtPixels ); m_ArrowBackdrop.SetPlayer( pn ); @@ -572,6 +573,35 @@ void Player::CrossedRow( int iNoteRow ) Step( t ); } +void Player::RandomiseNotes( int iNoteRow ) +{ + int NewNoteRow = iNoteRow + 50 / GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fScrollSpeed; // change the row to look ahead from based upon their speed mod + // check to see if they're at the crossed row + int EmptyNoteCol = -1; + int WaitingForEmptyColumn = -1; + + bool b_updatenotedata = false; + int iNumOfTracks = GetNumTracks(); + for(int t=0; tGetMetricF("ScreenEz2SelectMusic",ssprintf("SpeedIconP%dY",p+1)) #define MIRRORICON_X( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("MirrorIconP%dX",p+1)) #define MIRRORICON_Y( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("MirrorIconP%dY",p+1)) +#define HIDDENICON_X( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("HiddenIconP%dX",p+1)) +#define HIDDENICON_Y( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("HiddenIconP%dY",p+1)) +#define VANISHICON_X( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("VanishIconP%dX",p+1)) +#define VANISHICON_Y( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("VanishIconP%dY",p+1)) #define SHUFFLEICON_X( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("ShuffleIconP%dX",p+1)) #define SHUFFLEICON_Y( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("ShuffleIconP%dY",p+1)) #define PREVIEWMUSICMODE THEME->GetMetricI("ScreenEz2SelectMusic","PreviewMusicMode") @@ -124,6 +128,16 @@ ScreenEz2SelectMusic::ScreenEz2SelectMusic() : Screen("ScreenEz2SelectMusic") m_ShuffleIcon[p].SetDiffuse( RageColor(0,0,0,0) ); this->AddChild(&m_ShuffleIcon[p] ); + m_HiddenIcon[p].Load( THEME->GetPathToG("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->GetPathToG("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((PlayerNumber) p,0); m_iSelection[p] = 0; @@ -250,6 +264,14 @@ void ScreenEz2SelectMusic::UpdateOptions(PlayerNumber pn, int nosound) { m_ShuffleIcon[pn].SetDiffuse( RageColor(1,1,1,1) ); } + else if(asOptions[i] == "Hidden") + { + m_HiddenIcon[pn].SetDiffuse( RageColor(1,1,1,1) ); + } + else if(asOptions[i] == "RandomVanish") + { + m_VanishIcon[pn].SetDiffuse( RageColor(1,1,1,1) ); + } } } else @@ -257,6 +279,8 @@ void ScreenEz2SelectMusic::UpdateOptions(PlayerNumber pn, int nosound) m_SpeedIcon[pn].SetDiffuse( RageColor(0,0,0,0) ); m_MirrorIcon[pn].SetDiffuse( RageColor(0,0,0,0) ); m_ShuffleIcon[pn].SetDiffuse( RageColor(0,0,0,0) ); + m_HiddenIcon[pn].SetDiffuse( RageColor(0,0,0,0) ); + m_VanishIcon[pn].SetDiffuse( RageColor(0,0,0,0) ); } if(nosound !=0) m_soundOptionsChange.Play(); diff --git a/stepmania/src/ScreenEz2SelectMusic.h b/stepmania/src/ScreenEz2SelectMusic.h index 0d9503c5f7..c049e55225 100644 --- a/stepmania/src/ScreenEz2SelectMusic.h +++ b/stepmania/src/ScreenEz2SelectMusic.h @@ -60,6 +60,8 @@ protected: Sprite m_SpeedIcon[NUM_PLAYERS]; Sprite m_MirrorIcon[NUM_PLAYERS]; Sprite m_ShuffleIcon[NUM_PLAYERS]; + Sprite m_HiddenIcon[NUM_PLAYERS]; + Sprite m_VanishIcon[NUM_PLAYERS]; BitmapText m_PumpDifficultyRating; RageSound m_soundOptionsChange; diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 5a8db07b1e..7c78f8df04 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -983,7 +983,13 @@ void ScreenGameplay::Update( float fDeltaTime ) for( ; m_iRowLastCrossed <= iRowNow; m_iRowLastCrossed++ ) // for each index we crossed since the last update for( pn=0; pnIsPlayerEnabled(pn) ) + { + if(GAMESTATE->m_CurrentPlayerOptions[pn].m_fAppearances[PlayerOptions::APPEARANCE_RANDOMVANISH]==1) // if we're doing random vanish + { + m_Player[pn].RandomiseNotes( m_iRowLastCrossed ); // randomise notes on the fly + } m_Player[pn].CrossedRow( m_iRowLastCrossed ); + } } if( GAMESTATE->m_SongOptions.m_bAssistTick && IsTimeToPlayTicks()) diff --git a/stepmania/src/ScreenPlayerOptions.cpp b/stepmania/src/ScreenPlayerOptions.cpp index 8ffb2bd190..81b2e70a73 100644 --- a/stepmania/src/ScreenPlayerOptions.cpp +++ b/stepmania/src/ScreenPlayerOptions.cpp @@ -42,7 +42,7 @@ OptionRow g_PlayerOptionsLines[NUM_PLAYER_OPTIONS_LINES] = { OptionRow( "Speed", "x0.25","x0.5","x0.75","x1","x1.5","x2","x3","x5","x8","C200","C300" ), OptionRow( "Acceler\n-ation", "OFF","BOOST","BRAKE","WAVE","EXPAND","BOOMERANG" ), OptionRow( "Effect", "OFF","DRUNK","DIZZY","MINI","FLIP","TORNADO" ), - OptionRow( "Appear\n-ance", "VISIBLE","HIDDEN","SUDDEN","STEALTH","BLINK" ), + OptionRow( "Appear\n-ance", "VISIBLE","HIDDEN","SUDDEN","STEALTH","BLINK", "R.VANISH" ), OptionRow( "Turn", "OFF","MIRROR","LEFT","RIGHT","SHUFFLE","SUPER SHUFFLE" ), OptionRow( "Trans\n-form", "OFF","LITTLE","WIDE","BIG","QUICK","SKIPPY" ), OptionRow( "Scroll", "STANDARD","REVERSE" ),