diff --git a/stepmania/src/ArrowEffects.cpp b/stepmania/src/ArrowEffects.cpp index e42ee97219..24670f7eb6 100644 --- a/stepmania/src/ArrowEffects.cpp +++ b/stepmania/src/ArrowEffects.cpp @@ -27,7 +27,7 @@ float ArrowGetYOffset( PlayerNumber pn, float fNoteBeat ) float fYOffset = fBeatsUntilStep * ARROW_GAP; /* With both boost and wave enabled, the effect is that the - * notes "bufferr" at the bottom of the screen and shoot out + * notes "buffer" at the bottom of the screen and shoot out * at high speed. * * With wave first, the boost appears halfway down the screen. @@ -35,10 +35,9 @@ float ArrowGetYOffset( PlayerNumber pn, float fNoteBeat ) * * I'm not sure which is better. - glenn */ - int EffectType = GAMESTATE->m_PlayerOptions[pn].m_EffectType; - if ( EffectType & PlayerOptions::EFFECT_BOOST ) + if( GAMESTATE->m_PlayerOptions[pn].m_bBoost ) fYOffset *= 1.4f / ((fYOffset+SCREEN_HEIGHT/1.6f)/SCREEN_HEIGHT); - if ( EffectType & PlayerOptions::EFFECT_WAVE ) + if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_WAVE] ) fYOffset += 15.0f*sinf( fYOffset/38.0f ); return fYOffset; @@ -48,11 +47,11 @@ float ArrowGetXPos( PlayerNumber pn, int iColNum, float fYPos ) { float fPixelOffsetFromCenter = GAMESTATE->GetCurrentStyleDef()->m_ColumnInfo[pn][iColNum].fXOffset; - if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_DRUNK ) + if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_DRUNK] ) fPixelOffsetFromCenter += cosf( TIMER->GetTimeSinceStart() + iColNum*0.2f + fYPos*6/SCREEN_HEIGHT) * ARROW_SIZE*0.5f; - if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_FLIP ) + if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_FLIP] ) fPixelOffsetFromCenter = -fPixelOffsetFromCenter; - if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_TORNADO ) + if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_TORNADO] ) { const StyleDef* pStyleDef = GAMESTATE->GetCurrentStyleDef(); float fMaxX = -100000, fMinX = +100000; @@ -76,7 +75,7 @@ float ArrowGetRotation( PlayerNumber pn, int iColNum, float fYOffset ) { float fRotation = 0; //StyleDef.m_ColumnToRotation[iColNum]; - if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_DIZZY) + if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_DIZZY] ) fRotation += fYOffset/SCREEN_HEIGHT*6; return fRotation; diff --git a/stepmania/src/CodeDetector.cpp b/stepmania/src/CodeDetector.cpp index 6b80c191ec..23cee5245d 100644 --- a/stepmania/src/CodeDetector.cpp +++ b/stepmania/src/CodeDetector.cpp @@ -172,8 +172,8 @@ bool CodeDetector::DetectAndAdjustOptions( GameController controller ) case CODE_SUPER_SHUFFLE: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_TurnType, PlayerOptions::TURN_SUPER_SHUFFLE, PlayerOptions::TURN_NONE ); break; case CODE_LITTLE: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bLittle, true, false ); break; case CODE_NEXT_SCROLL_SPEED:INCREMENT_SCROLL_SPEED( GAMESTATE->m_PlayerOptions[pn].m_fArrowScrollSpeed ); break; - case CODE_BOOST: /* what goes here? */ break; - case CODE_NEXT_EFFECT: GAMESTATE->m_PlayerOptions[pn].m_EffectType = PlayerOptions::EffectType( (GAMESTATE->m_PlayerOptions[pn].m_EffectType+1) %NUM_EFFECT_TYPES ); break; + case CODE_BOOST: GAMESTATE->m_PlayerOptions[pn].m_bBoost ^= true; break; + case CODE_NEXT_EFFECT: GAMESTATE->m_PlayerOptions[pn].NextEffect(); break; case CODE_NEXT_APPEARANCE: GAMESTATE->m_PlayerOptions[pn].m_AppearanceType = PlayerOptions::AppearanceType((GAMESTATE->m_PlayerOptions[pn].m_AppearanceType+1) %PlayerOptions::NUM_APPEARANCE_TYPES ); break; case CODE_NEXT_TURN: GAMESTATE->m_PlayerOptions[pn].m_TurnType = PlayerOptions::TurnType( (GAMESTATE->m_PlayerOptions[pn].m_TurnType+1) %PlayerOptions::NUM_TURN_TYPES ); break; case CODE_REVERSE: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bReverseScroll, true, false ); break; diff --git a/stepmania/src/OptionIconRow.cpp b/stepmania/src/OptionIconRow.cpp index 3899dd1355..78620e56d4 100644 --- a/stepmania/src/OptionIconRow.cpp +++ b/stepmania/src/OptionIconRow.cpp @@ -47,7 +47,7 @@ const OptionColumnEntry g_OptionColumnEntries[] = {"4X", 0}, {"5X", 0}, {"8X", 0}, - {"Boost", 1}, + {"Boost", 0}, {"Wave", 1}, {"Drunk", 1}, {"Dizzy", 1}, diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 4a683469c9..dfc0e3ad1c 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -142,12 +142,12 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi int iPixelsToDrawAfter = 384; // If both options are on, we *do* need to multiply it twice. - if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_MINI) + if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_MINI] ) { iPixelsToDrawBefore *= 2; iPixelsToDrawAfter *= 2; } - if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_SPACE) + if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_SPACE] ) { iPixelsToDrawBefore *= 2; iPixelsToDrawAfter *= 2; @@ -172,7 +172,7 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi m_GrayArrowRow.SetY( GAMESTATE->m_PlayerOptions[pn].m_bReverseScroll ? SCREEN_HEIGHT - ARROWS_Y : ARROWS_Y ); m_GhostArrowRow.SetY( GAMESTATE->m_PlayerOptions[pn].m_bReverseScroll ? SCREEN_HEIGHT - ARROWS_Y : ARROWS_Y ); - if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_MINI ) + if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_MINI] ) { m_NoteField.SetZoom( 0.5f ); m_GrayArrowRow.SetZoom( 0.5f ); @@ -279,7 +279,7 @@ void Player::DrawPrimitives() D3DXMATRIX matOldView, matOldProj; - if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_EffectType & PlayerOptions::EFFECT_SPACE ) + if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_bEffects[PlayerOptions::EFFECT_SPACE] ) { // save old view and projection DISPLAY->GetViewTransform( &matOldView ); @@ -313,7 +313,7 @@ void Player::DrawPrimitives() m_NoteField.Draw(); m_GhostArrowRow.Draw(); - if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_EffectType & PlayerOptions::EFFECT_SPACE ) + if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_bEffects[PlayerOptions::EFFECT_SPACE] ) { // restire old view and projection DISPLAY->SetViewTransform( &matOldView ); diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index 80f79fc3e0..2266b40770 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -13,6 +13,42 @@ #include "PlayerOptions.h" #include "RageUtil.h" +void PlayerOptions::NextEffect() +{ + if( m_bEffects[NUM_EFFECT_TYPES-1] ) + { + ZERO( m_bEffects ); + return; + } + + for( int i=0; i 0 ) + po.m_bEffects[ m_iSelectedOption[p][PO_EFFECT]-1 ] = true; po.m_AppearanceType = (PlayerOptions::AppearanceType)m_iSelectedOption[p][PO_APPEAR]; po.m_TurnType = (PlayerOptions::TurnType)m_iSelectedOption[p][PO_TURN]; diff --git a/stepmania/src/ScreenTitleMenu.cpp b/stepmania/src/ScreenTitleMenu.cpp index ac64122875..5deb8606f5 100644 --- a/stepmania/src/ScreenTitleMenu.cpp +++ b/stepmania/src/ScreenTitleMenu.cpp @@ -269,8 +269,7 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM ) * * It's simple, but it's a hack. FIXME -glenn */ - GAMESTATE->m_PlayerOptions[p].m_EffectType = - 1 << (rand()%NUM_EFFECT_TYPES) ; + GAMESTATE->m_PlayerOptions[p].m_bEffects[ rand()%NUM_EFFECT_TYPES ] = true; if( RandomFloat(0,1)>0.9f ) GAMESTATE->m_PlayerOptions[p].m_AppearanceType = PlayerOptions::APPEARANCE_HIDDEN; if( RandomFloat(0,1)>0.9f ) diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index 974e726948..12ff4ee14e 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -414,7 +414,6 @@ void SongManager::GetSongsInGroup( const CString sGroupName, CArraym_sGroupName ) AddTo.Add( pSong ); } -// SortSongPointerArrayByGroup( AddTo ); } CString SongManager::ShortenGroupName( const CString &sOrigGroupName ) @@ -580,12 +579,12 @@ void SongManager::GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, cons int iSongHash = GetHashForString( pSongOut->m_sSongDir ); switch( ((UINT)iSongHash) % 6 ) { - case 0: po_out.m_EffectType = PlayerOptions::EFFECT_DIZZY; break; - case 1: po_out.m_bDark = true; break; - case 2: po_out.m_EffectType = PlayerOptions::EFFECT_DRUNK; break; - case 3: po_out.m_EffectType = PlayerOptions::EFFECT_MINI; break; - case 4: po_out.m_EffectType = PlayerOptions::EFFECT_SPACE; break; - case 5: po_out.m_EffectType = PlayerOptions::EFFECT_WAVE; break; + case 0: po_out.m_bEffects[PlayerOptions::EFFECT_DIZZY] = true; break; + case 1: po_out.m_bDark = true; break; + case 2: po_out.m_bEffects[PlayerOptions::EFFECT_DRUNK] = true; break; + case 3: po_out.m_bEffects[PlayerOptions::EFFECT_MINI] = true; break; + case 4: po_out.m_bEffects[PlayerOptions::EFFECT_SPACE] = true; break; + case 5: po_out.m_bEffects[PlayerOptions::EFFECT_WAVE] = true; break; default: ASSERT(0); } }