From e115f1919cdb736a53f49e0e7e87e4ec6421e5c3 Mon Sep 17 00:00:00 2001 From: Jared Roberts Date: Wed, 11 Sep 2002 05:30:49 +0000 Subject: [PATCH] Fixed boost & other effects moving boost out of the effects line had caused an off-by-one in the effects, plus flip & tornado weren't setting their flags. Also, there was some b0rkage with the menus not properly treating po.m_EffectType as a bitmask. If more & more options get moved out of the effects line, care needs to be taken to prevent special case implosion... --- stepmania/src/ScreenPlayerOptions.cpp | 36 ++++++++++++++++----------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/stepmania/src/ScreenPlayerOptions.cpp b/stepmania/src/ScreenPlayerOptions.cpp index 59e5685420..7ca4b9056b 100644 --- a/stepmania/src/ScreenPlayerOptions.cpp +++ b/stepmania/src/ScreenPlayerOptions.cpp @@ -86,15 +86,18 @@ void ScreenPlayerOptions::ImportOptions() else if( po.m_fArrowScrollSpeed == 8.0f ) m_iSelectedOption[p][PO_SPEED] = 8; else m_iSelectedOption[p][PO_SPEED] = 2; - switch(po.m_EffectType) + m_iSelectedOption[p][PO_BOOST] = po.m_EffectType & PlayerOptions::EFFECT_BOOST; + + switch(po.m_EffectType & ~PlayerOptions::EFFECT_BOOST) { case PlayerOptions::EFFECT_NONE: m_iSelectedOption[p][PO_EFFECT]=0; break; - case PlayerOptions::EFFECT_BOOST: m_iSelectedOption[p][PO_EFFECT]=1; break; - case PlayerOptions::EFFECT_WAVE: m_iSelectedOption[p][PO_EFFECT]=2; break; - case PlayerOptions::EFFECT_DRUNK: m_iSelectedOption[p][PO_EFFECT]=3; break; - case PlayerOptions::EFFECT_DIZZY: m_iSelectedOption[p][PO_EFFECT]=4; break; - case PlayerOptions::EFFECT_SPACE: m_iSelectedOption[p][PO_EFFECT]=5; break; - case PlayerOptions::EFFECT_MINI: m_iSelectedOption[p][PO_EFFECT]=6; break; + case PlayerOptions::EFFECT_WAVE: m_iSelectedOption[p][PO_EFFECT]=1; break; + case PlayerOptions::EFFECT_DRUNK: m_iSelectedOption[p][PO_EFFECT]=2; break; + case PlayerOptions::EFFECT_DIZZY: m_iSelectedOption[p][PO_EFFECT]=3; break; + case PlayerOptions::EFFECT_SPACE: m_iSelectedOption[p][PO_EFFECT]=4; break; + case PlayerOptions::EFFECT_MINI: m_iSelectedOption[p][PO_EFFECT]=5; break; + case PlayerOptions::EFFECT_FLIP: m_iSelectedOption[p][PO_EFFECT]=6; break; + case PlayerOptions::EFFECT_TORNADO: m_iSelectedOption[p][PO_EFFECT]=7; break; default: ; break; } @@ -127,15 +130,20 @@ void ScreenPlayerOptions::ExportOptions() case 8: po.m_fArrowScrollSpeed = 8.0f; break; } + po.m_EffectType = (m_iSelectedOption[p][PO_BOOST] == 1)? + PlayerOptions::EFFECT_BOOST: + PlayerOptions::EFFECT_NONE; + switch(m_iSelectedOption[p][PO_EFFECT]) { - case 0: po.m_EffectType = PlayerOptions::EFFECT_NONE; break; - case 1: po.m_EffectType = PlayerOptions::EFFECT_BOOST; break; - case 2: po.m_EffectType = PlayerOptions::EFFECT_WAVE; break; - case 3: po.m_EffectType = PlayerOptions::EFFECT_DRUNK; break; - case 4: po.m_EffectType = PlayerOptions::EFFECT_DIZZY; break; - case 5: po.m_EffectType = PlayerOptions::EFFECT_SPACE; break; - case 6: po.m_EffectType = PlayerOptions::EFFECT_MINI; break; + //case 0: po.m_EffectType |= PlayerOptions::EFFECT_NONE; break; + case 1: po.m_EffectType |= PlayerOptions::EFFECT_WAVE; break; + case 2: po.m_EffectType |= PlayerOptions::EFFECT_DRUNK; break; + case 3: po.m_EffectType |= PlayerOptions::EFFECT_DIZZY; break; + case 4: po.m_EffectType |= PlayerOptions::EFFECT_SPACE; break; + case 5: po.m_EffectType |= PlayerOptions::EFFECT_MINI; break; + case 6: po.m_EffectType |= PlayerOptions::EFFECT_FLIP; break; + case 7: po.m_EffectType |= PlayerOptions::EFFECT_TORNADO; break; } po.m_AppearanceType = (PlayerOptions::AppearanceType)m_iSelectedOption[p][PO_APPEAR];