From 86dbab010067bf3a6530d2a5c662dbff00305644 Mon Sep 17 00:00:00 2001 From: MrThatKid Date: Tue, 14 Mar 2017 03:27:18 -0700 Subject: [PATCH] Added nITG's various sub-modifiers (#1419) * Added nITG's Bumpy sub-mods and ... reorganized PlayerOptions::FromOneModString's Confusion checks This is to help avoid the nesting level of 128 under Windows * Added nITG's Tipsy sub-mods Modifiers added: TipsySpeed TipsyOffset * Add nITG's Drunk sub-mods Modifiers added: DrunkSpeed DrunkOffset DrunkPeriod * Added nITG's Wave & Expand sub-mods Modifiers added: WavePeriod ExpandPeriod * Added nITG's Tornado sub-mods Modifiers Added: TornadoPeriod TornadoOffset * Added nITG's Beat sub-mods Modifiers added: BeatOffset BeatPeriod BeatMult * Documented the new sub-mods --- Docs/Luadoc/Lua.xml | 14 ++++ Docs/Luadoc/LuaDocumentation.xml | 14 ++++ src/ArrowEffects.cpp | 23 +++---- src/PlayerOptions.cpp | 106 +++++++++++++++++++++++++++---- src/PlayerOptions.h | 14 ++++ 5 files changed, 147 insertions(+), 24 deletions(-) diff --git a/Docs/Luadoc/Lua.xml b/Docs/Luadoc/Lua.xml index b5759dae61..c2bfc66c43 100644 --- a/Docs/Luadoc/Lua.xml +++ b/Docs/Luadoc/Lua.xml @@ -1114,6 +1114,9 @@ + + + @@ -1122,6 +1125,8 @@ + + @@ -1137,8 +1142,12 @@ + + + + @@ -1204,12 +1213,17 @@ + + + + + diff --git a/Docs/Luadoc/LuaDocumentation.xml b/Docs/Luadoc/LuaDocumentation.xml index 39bbac6690..4772e2fffb 100644 --- a/Docs/Luadoc/LuaDocumentation.xml +++ b/Docs/Luadoc/LuaDocumentation.xml @@ -3432,6 +3432,9 @@ save yourself some time, copy this for undocumented things: + + + @@ -3440,6 +3443,8 @@ save yourself some time, copy this for undocumented things: + + If the player has a CMod set, returns the value of that CMod and its associated approach speed. Returns nil otherwise.
@@ -3464,8 +3469,12 @@ save yourself some time, copy this for undocumented things:
+ + + + Sets the for the player, if the optional argument is provided. Returns the that was previously set. @@ -3600,7 +3609,11 @@ save yourself some time, copy this for undocumented things:
+ + + + @@ -3608,6 +3621,7 @@ save yourself some time, copy this for undocumented things: Returns true if the player is using reverse. (equivalent to GetReverse() == 1.0)
+ If the player has a XMod set, returns the value of that XMod and its associated approach speed. Returns nil otherwise.
diff --git a/src/ArrowEffects.cpp b/src/ArrowEffects.cpp index c5313daa1d..3a959cabee 100644 --- a/src/ArrowEffects.cpp +++ b/src/ArrowEffects.cpp @@ -97,13 +97,14 @@ void ArrowEffects::Update() ? GAMESTATE->m_pPlayerState[pn]->m_Position : GAMESTATE->m_Position; const float field_zoom= GAMESTATE->m_pPlayerState[pn]->m_NotefieldZoom; const float* effects= GAMESTATE->m_pPlayerState[pn]->m_PlayerOptions.GetCurrent().m_fEffects; + const float* accels= GAMESTATE->m_pPlayerState[pn]->m_PlayerOptions.GetCurrent().m_fAccels; PerPlayerData &data = g_EffectData[pn]; if( !position.m_bFreeze || !position.m_bDelay ) { data.m_fExpandSeconds += fTime - fLastTime; - data.m_fExpandSeconds = fmodf( data.m_fExpandSeconds, PI*2 ); + data.m_fExpandSeconds = fmodf( data.m_fExpandSeconds, (PI*2)/(accels[PlayerOptions::ACCEL_EXPAND_PERIOD]+1) ); } // Update Tornado @@ -185,7 +186,7 @@ void ArrowEffects::Update() if(effects[PlayerOptions::EFFECT_TIPSY] != 0) { const float time= RageTimer::GetTimeSinceStartFast(); - const float time_times_timer= time * TIPSY_TIMER_FREQUENCY; + const float time_times_timer= time * ((effects[PlayerOptions::EFFECT_TIPSY_SPEED] * TIPSY_TIMER_FREQUENCY) + TIPSY_TIMER_FREQUENCY); const float arrow_times_mag= ARROW_SIZE * TIPSY_ARROW_MAGNITUDE; const float time_times_offset_timer= time * TIPSY_OFFSET_TIMER_FREQUENCY; @@ -194,7 +195,7 @@ void ArrowEffects::Update() for(int col= 0; col < MAX_COLS_PER_PLAYER; ++col) { data.m_tipsy_result[col]= RageFastCos( - time_times_timer + (col * TIPSY_COLUMN_FREQUENCY)) * + time_times_timer + (col * ((effects[PlayerOptions::EFFECT_TIPSY_OFFSET] * TIPSY_COLUMN_FREQUENCY) + TIPSY_COLUMN_FREQUENCY))) * arrow_times_mag; data.m_tipsy_offset_result[col]= RageFastCos( time_times_offset_timer + (col * TIPSY_OFFSET_COLUMN_FREQUENCY)) * @@ -212,7 +213,7 @@ void ArrowEffects::Update() // Update Beat do { float fAccelTime = 0.2f, fTotalTime = 0.5f; - float fBeat = position.m_fSongBeatVisible + fAccelTime; + float fBeat = ((position.m_fSongBeatVisible + fAccelTime + effects[PlayerOptions::EFFECT_BEAT_OFFSET]) * (effects[PlayerOptions::EFFECT_BEAT_MULT]+1)); const bool bEvenBeat = ( int(fBeat) % 2 ) != 0; @@ -360,7 +361,7 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float fYAdjust += fBrakeYAdjust; } if( fAccels[PlayerOptions::ACCEL_WAVE] != 0 ) - fYAdjust += fAccels[PlayerOptions::ACCEL_WAVE] * WAVE_MOD_MAGNITUDE *RageFastSin( fYOffset/WAVE_MOD_HEIGHT ); + fYAdjust += fAccels[PlayerOptions::ACCEL_WAVE] * WAVE_MOD_MAGNITUDE *RageFastSin( fYOffset/((fAccels[PlayerOptions::ACCEL_WAVE_PERIOD]*WAVE_MOD_HEIGHT)+WAVE_MOD_HEIGHT) ); fYOffset += fYAdjust; @@ -396,7 +397,7 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float // TODO: Don't index by PlayerNumber. PerPlayerData &data = g_EffectData[pPlayerState->m_PlayerNumber]; - float fExpandMultiplier = SCALE( RageFastCos(data.m_fExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY), + float fExpandMultiplier = SCALE( RageFastCos(data.m_fExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY*(fAccels[PlayerOptions::ACCEL_EXPAND_PERIOD]+1)), EXPAND_MULTIPLIER_SCALE_FROM_LOW, EXPAND_MULTIPLIER_SCALE_FROM_HIGH, EXPAND_MULTIPLIER_SCALE_TO_LOW, EXPAND_MULTIPLIER_SCALE_TO_HIGH ); fScrollSpeed *= SCALE( fAccels[PlayerOptions::ACCEL_EXPAND], @@ -493,7 +494,7 @@ float ArrowEffects::GetXPos( const PlayerState* pPlayerState, int iColNum, float const float fPositionBetween = SCALE( fRealPixelOffset, data.m_fMinTornadoX[iColNum], data.m_fMaxTornadoX[iColNum], TORNADO_POSITION_SCALE_TO_LOW, TORNADO_POSITION_SCALE_TO_HIGH ); float fRads = acosf( fPositionBetween ); - fRads += fYOffset * TORNADO_OFFSET_FREQUENCY / SCREEN_HEIGHT; + fRads += (fYOffset + fEffects[PlayerOptions::EFFECT_TORNADO_OFFSET]) * ((fEffects[PlayerOptions::EFFECT_TORNADO_PERIOD] * TORNADO_OFFSET_FREQUENCY) + TORNADO_OFFSET_FREQUENCY) / SCREEN_HEIGHT; const float fAdjustedPixelOffset = SCALE( RageFastCos(fRads), TORNADO_OFFSET_SCALE_FROM_LOW, TORNADO_OFFSET_SCALE_FROM_HIGH, data.m_fMinTornadoX[iColNum], data.m_fMaxTornadoX[iColNum] ); @@ -503,8 +504,8 @@ float ArrowEffects::GetXPos( const PlayerState* pPlayerState, int iColNum, float if( fEffects[PlayerOptions::EFFECT_DRUNK] != 0 ) fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_DRUNK] * - ( RageFastCos( RageTimer::GetTimeSinceStartFast() + iColNum*DRUNK_COLUMN_FREQUENCY - + fYOffset*DRUNK_OFFSET_FREQUENCY/SCREEN_HEIGHT) * ARROW_SIZE*DRUNK_ARROW_MAGNITUDE ); + ( RageFastCos( RageTimer::GetTimeSinceStartFast()*(1+fEffects[PlayerOptions::EFFECT_DRUNK_SPEED]) + iColNum*((fEffects[PlayerOptions::EFFECT_DRUNK_OFFSET]*DRUNK_COLUMN_FREQUENCY)+DRUNK_COLUMN_FREQUENCY) + + fYOffset*((fEffects[PlayerOptions::EFFECT_DRUNK_PERIOD]*DRUNK_OFFSET_FREQUENCY)+DRUNK_OFFSET_FREQUENCY)/SCREEN_HEIGHT) * ARROW_SIZE*DRUNK_ARROW_MAGNITUDE ); if( fEffects[PlayerOptions::EFFECT_FLIP] != 0 ) { const int iFirstCol = 0; @@ -520,7 +521,7 @@ float ArrowEffects::GetXPos( const PlayerState* pPlayerState, int iColNum, float if( fEffects[PlayerOptions::EFFECT_BEAT] != 0 ) { - const float fShift = data.m_fBeatFactor*RageFastSin( fYOffset / BEAT_OFFSET_HEIGHT + PI/BEAT_PI_HEIGHT ); + const float fShift = data.m_fBeatFactor*RageFastSin( fYOffset / ((fEffects[PlayerOptions::EFFECT_BEAT_PERIOD]*BEAT_OFFSET_HEIGHT)+BEAT_OFFSET_HEIGHT) + PI/BEAT_PI_HEIGHT ); fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_BEAT] * fShift; } @@ -858,7 +859,7 @@ float ArrowEffects::GetZPos(int iCol, float fYOffset) const float* fEffects = curr_options->m_fEffects; if( fEffects[PlayerOptions::EFFECT_BUMPY] != 0 ) - fZPos += fEffects[PlayerOptions::EFFECT_BUMPY] * 40*RageFastSin( fYOffset/16.0f ); + fZPos += fEffects[PlayerOptions::EFFECT_BUMPY] * 40*RageFastSin( (fYOffset+(100.0f*fEffects[PlayerOptions::EFFECT_BUMPY_OFFSET]) )/((fEffects[PlayerOptions::EFFECT_BUMPY_PERIOD]*16.0f)+16.0f) ); return fZPos; } diff --git a/src/PlayerOptions.cpp b/src/PlayerOptions.cpp index 859ac76c58..7f3753a79a 100644 --- a/src/PlayerOptions.cpp +++ b/src/PlayerOptions.cpp @@ -214,10 +214,15 @@ void PlayerOptions::GetMods( vector &AddTo, bool bForceNoteSkin ) const AddPart( AddTo, m_fAccels[ACCEL_BOOST], "Boost" ); AddPart( AddTo, m_fAccels[ACCEL_BRAKE], "Brake" ); AddPart( AddTo, m_fAccels[ACCEL_WAVE], "Wave" ); + AddPart( AddTo, m_fAccels[ACCEL_WAVE_PERIOD], "WavePeriod" ); AddPart( AddTo, m_fAccels[ACCEL_EXPAND], "Expand" ); + AddPart( AddTo, m_fAccels[ACCEL_EXPAND_PERIOD], "ExpandPeriod" ); AddPart( AddTo, m_fAccels[ACCEL_BOOMERANG], "Boomerang" ); AddPart( AddTo, m_fEffects[EFFECT_DRUNK], "Drunk" ); + AddPart( AddTo, m_fEffects[EFFECT_DRUNK_SPEED], "DrunkSpeed" ); + AddPart( AddTo, m_fEffects[EFFECT_DRUNK_OFFSET], "DrunkOffset" ); + AddPart( AddTo, m_fEffects[EFFECT_DRUNK_PERIOD], "DrunkPeriod" ); AddPart( AddTo, m_fEffects[EFFECT_DIZZY], "Dizzy" ); AddPart( AddTo, m_fEffects[EFFECT_CONFUSION], "Confusion" ); AddPart( AddTo, m_fEffects[EFFECT_CONFUSION_OFFSET], "ConfusionOffset" ); @@ -230,9 +235,18 @@ void PlayerOptions::GetMods( vector &AddTo, bool bForceNoteSkin ) const AddPart( AddTo, m_fEffects[EFFECT_FLIP], "Flip" ); AddPart( AddTo, m_fEffects[EFFECT_INVERT], "Invert" ); AddPart( AddTo, m_fEffects[EFFECT_TORNADO], "Tornado" ); + AddPart( AddTo, m_fEffects[EFFECT_TORNADO_PERIOD], "TornadoPeriod" ); + AddPart( AddTo, m_fEffects[EFFECT_TORNADO_OFFSET], "TornadoOffset" ); AddPart( AddTo, m_fEffects[EFFECT_TIPSY], "Tipsy" ); + AddPart( AddTo, m_fEffects[EFFECT_TIPSY_SPEED], "TipsySpeed" ); + AddPart( AddTo, m_fEffects[EFFECT_TIPSY_OFFSET], "TipsyOffset" ); AddPart( AddTo, m_fEffects[EFFECT_BUMPY], "Bumpy" ); + AddPart( AddTo, m_fEffects[EFFECT_BUMPY_OFFSET], "BumpyOffset" ); + AddPart( AddTo, m_fEffects[EFFECT_BUMPY_PERIOD], "BumpyPeriod" ); AddPart( AddTo, m_fEffects[EFFECT_BEAT], "Beat" ); + AddPart( AddTo, m_fEffects[EFFECT_BEAT_OFFSET], "BeatOffset" ); + AddPart( AddTo, m_fEffects[EFFECT_BEAT_PERIOD], "BeatPeriod" ); + AddPart( AddTo, m_fEffects[EFFECT_BEAT_MULT], "BeatMult" ); AddPart( AddTo, m_fEffects[EFFECT_XMODE], "XMode" ); AddPart( AddTo, m_fEffects[EFFECT_TWIRL], "Twirl" ); AddPart( AddTo, m_fEffects[EFFECT_ROLL], "Roll" ); @@ -484,25 +498,63 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut else if( sBit == "normal-drain" ) { m_DrainType= DrainType_Normal; } else if( sBit == "boost" ) SET_FLOAT( fAccels[ACCEL_BOOST] ) else if( sBit == "brake" || sBit == "land" ) SET_FLOAT( fAccels[ACCEL_BRAKE] ) - else if( sBit == "wave" ) SET_FLOAT( fAccels[ACCEL_WAVE] ) - else if( sBit == "expand" || sBit == "dwiwave" ) SET_FLOAT( fAccels[ACCEL_EXPAND] ) + else if( sBit.find("wave") != sBit.npos) + { + if( sBit == "wave" ) SET_FLOAT( fAccels[ACCEL_WAVE] ) + else if( sBit == "waveperiod" ) SET_FLOAT( fAccels[ACCEL_WAVE_PERIOD] ) + } + else if( (sBit.find("expand") != sBit.npos) || (sBit.find("dwiwave") != sBit.npos) ) + { + if( sBit == "expand" || sBit == "dwiwave" ) SET_FLOAT( fAccels[ACCEL_EXPAND] ) + else if( sBit == "expandperiod" ) SET_FLOAT( fAccels[ACCEL_EXPAND_PERIOD] ) + } else if( sBit == "boomerang" ) SET_FLOAT( fAccels[ACCEL_BOOMERANG] ) - else if( sBit == "drunk" ) SET_FLOAT( fEffects[EFFECT_DRUNK] ) + else if( sBit.find("drunk") != sBit.npos) + { + if( sBit == "drunk" ) SET_FLOAT( fEffects[EFFECT_DRUNK] ) + else if( sBit == "drunkspeed" ) SET_FLOAT( fEffects[EFFECT_DRUNK_SPEED] ) + else if( sBit == "drunkoffset" ) SET_FLOAT( fEffects[EFFECT_DRUNK_OFFSET] ) + else if( sBit == "drunkperiod" ) SET_FLOAT( fEffects[EFFECT_DRUNK_PERIOD] ) + } else if( sBit == "dizzy" ) SET_FLOAT( fEffects[EFFECT_DIZZY] ) - else if( sBit == "confusion" ) SET_FLOAT( fEffects[EFFECT_CONFUSION] ) - else if( sBit == "confusionoffset" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_OFFSET] ) - else if( sBit == "confusionx" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_X] ) - else if( sBit == "confusionxoffset" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_X_OFFSET] ) - else if( sBit == "confusiony" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_Y] ) - else if( sBit == "confusionyoffset" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_Y_OFFSET] ) + else if( sBit.find("confusion") != sBit.npos) + { + if( sBit == "confusion" ) SET_FLOAT( fEffects[EFFECT_CONFUSION] ) + else if( sBit == "confusionoffset" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_OFFSET] ) + else if( sBit == "confusionx" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_X] ) + else if( sBit == "confusionxoffset" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_X_OFFSET] ) + else if( sBit == "confusiony" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_Y] ) + else if( sBit == "confusionyoffset" ) SET_FLOAT( fEffects[EFFECT_CONFUSION_Y_OFFSET] ) + } else if( sBit == "mini" ) SET_FLOAT( fEffects[EFFECT_MINI] ) else if( sBit == "tiny" ) SET_FLOAT( fEffects[EFFECT_TINY] ) else if( sBit == "flip" ) SET_FLOAT( fEffects[EFFECT_FLIP] ) else if( sBit == "invert" ) SET_FLOAT( fEffects[EFFECT_INVERT] ) - else if( sBit == "tornado" ) SET_FLOAT( fEffects[EFFECT_TORNADO] ) - else if( sBit == "tipsy" ) SET_FLOAT( fEffects[EFFECT_TIPSY] ) - else if( sBit == "bumpy" ) SET_FLOAT( fEffects[EFFECT_BUMPY] ) - else if( sBit == "beat" ) SET_FLOAT( fEffects[EFFECT_BEAT] ) + else if( sBit.find("tornado") != sBit.npos) + { + if( sBit == "tornado" ) SET_FLOAT( fEffects[EFFECT_TORNADO] ) + else if( sBit == "tornadoperiod" ) SET_FLOAT( fEffects[EFFECT_TORNADO_PERIOD] ) + else if( sBit == "tornadooffset" ) SET_FLOAT( fEffects[EFFECT_TORNADO_OFFSET] ) + } + else if( sBit.find("tipsy") != sBit.npos) + { + if( sBit == "tipsy" ) SET_FLOAT( fEffects[EFFECT_TIPSY] ) + else if( sBit == "tipsyspeed" ) SET_FLOAT( fEffects[EFFECT_TIPSY_SPEED] ) + else if( sBit == "tipsyoffset" ) SET_FLOAT( fEffects[EFFECT_TIPSY_OFFSET] ) + } + else if( sBit.find("bumpy") != sBit.npos) + { + if( sBit == "bumpy" ) SET_FLOAT( fEffects[EFFECT_BUMPY] ) + else if( sBit == "bumpyoffset" ) SET_FLOAT( fEffects[EFFECT_BUMPY_OFFSET] ) + else if( sBit == "bumpyperiod" ) SET_FLOAT( fEffects[EFFECT_BUMPY_PERIOD] ) + } + else if( sBit.find("beat") != sBit.npos) + { + if( sBit == "beat" ) SET_FLOAT( fEffects[EFFECT_BEAT] ) + else if( sBit == "beatoffset" ) SET_FLOAT( fEffects[EFFECT_BEAT_OFFSET] ) + else if( sBit == "beatperiod" ) SET_FLOAT( fEffects[EFFECT_BEAT_PERIOD] ) + else if( sBit == "beatmult" ) SET_FLOAT( fEffects[EFFECT_BEAT_MULT] ) + } else if( sBit == "xmode" ) SET_FLOAT( fEffects[EFFECT_XMODE] ) else if( sBit == "twirl" ) SET_FLOAT( fEffects[EFFECT_TWIRL] ) else if( sBit == "roll" ) SET_FLOAT( fEffects[EFFECT_ROLL] ) @@ -1154,9 +1206,14 @@ public: FLOAT_INTERFACE(Boost, Accels[PlayerOptions::ACCEL_BOOST], true); FLOAT_INTERFACE(Brake, Accels[PlayerOptions::ACCEL_BRAKE], true); FLOAT_INTERFACE(Wave, Accels[PlayerOptions::ACCEL_WAVE], true); + FLOAT_INTERFACE(WavePeriod, Accels[PlayerOptions::ACCEL_WAVE_PERIOD], true); FLOAT_INTERFACE(Expand, Accels[PlayerOptions::ACCEL_EXPAND], true); + FLOAT_INTERFACE(ExpandPeriod, Accels[PlayerOptions::ACCEL_EXPAND_PERIOD], true); FLOAT_INTERFACE(Boomerang, Accels[PlayerOptions::ACCEL_BOOMERANG], true); FLOAT_INTERFACE(Drunk, Effects[PlayerOptions::EFFECT_DRUNK], true); + FLOAT_INTERFACE(DrunkSpeed, Effects[PlayerOptions::EFFECT_DRUNK_SPEED], true); + FLOAT_INTERFACE(DrunkOffset, Effects[PlayerOptions::EFFECT_DRUNK_OFFSET], true); + FLOAT_INTERFACE(DrunkPeriod, Effects[PlayerOptions::EFFECT_DRUNK_PERIOD], true); FLOAT_INTERFACE(Dizzy, Effects[PlayerOptions::EFFECT_DIZZY], true); FLOAT_INTERFACE(Confusion, Effects[PlayerOptions::EFFECT_CONFUSION], true); FLOAT_INTERFACE(ConfusionOffset, Effects[PlayerOptions::EFFECT_CONFUSION_OFFSET], true); @@ -1169,9 +1226,18 @@ public: FLOAT_INTERFACE(Flip, Effects[PlayerOptions::EFFECT_FLIP], true); FLOAT_INTERFACE(Invert, Effects[PlayerOptions::EFFECT_INVERT], true); FLOAT_INTERFACE(Tornado, Effects[PlayerOptions::EFFECT_TORNADO], true); + FLOAT_INTERFACE(TornadoPeriod, Effects[PlayerOptions::EFFECT_TORNADO_PERIOD], true); + FLOAT_INTERFACE(TornadoOffset, Effects[PlayerOptions::EFFECT_TORNADO_OFFSET], true); FLOAT_INTERFACE(Tipsy, Effects[PlayerOptions::EFFECT_TIPSY], true); + FLOAT_INTERFACE(TipsySpeed, Effects[PlayerOptions::EFFECT_TIPSY_SPEED], true); + FLOAT_INTERFACE(TipsyOffset, Effects[PlayerOptions::EFFECT_TIPSY_OFFSET], true); FLOAT_INTERFACE(Bumpy, Effects[PlayerOptions::EFFECT_BUMPY], true); + FLOAT_INTERFACE(BumpyOffset, Effects[PlayerOptions::EFFECT_BUMPY_OFFSET], true); + FLOAT_INTERFACE(BumpyPeriod, Effects[PlayerOptions::EFFECT_BUMPY_PERIOD], true); FLOAT_INTERFACE(Beat, Effects[PlayerOptions::EFFECT_BEAT], true); + FLOAT_INTERFACE(BeatOffset, Effects[PlayerOptions::EFFECT_BEAT_OFFSET], true); + FLOAT_INTERFACE(BeatPeriod, Effects[PlayerOptions::EFFECT_BEAT_PERIOD], true); + FLOAT_INTERFACE(BeatMult, Effects[PlayerOptions::EFFECT_BEAT_MULT], true); FLOAT_INTERFACE(Xmode, Effects[PlayerOptions::EFFECT_XMODE], true); FLOAT_INTERFACE(Twirl, Effects[PlayerOptions::EFFECT_TWIRL], true); FLOAT_INTERFACE(Roll, Effects[PlayerOptions::EFFECT_ROLL], true); @@ -1550,9 +1616,14 @@ public: ADD_METHOD(Boost); ADD_METHOD(Brake); ADD_METHOD(Wave); + ADD_METHOD(WavePeriod); ADD_METHOD(Expand); + ADD_METHOD(ExpandPeriod); ADD_METHOD(Boomerang); ADD_METHOD(Drunk); + ADD_METHOD(DrunkSpeed); + ADD_METHOD(DrunkOffset); + ADD_METHOD(DrunkPeriod); ADD_METHOD(Dizzy); ADD_METHOD(Confusion); ADD_METHOD(ConfusionOffset); @@ -1565,9 +1636,18 @@ public: ADD_METHOD(Flip); ADD_METHOD(Invert); ADD_METHOD(Tornado); + ADD_METHOD(TornadoPeriod); + ADD_METHOD(TornadoOffset); ADD_METHOD(Tipsy); + ADD_METHOD(TipsySpeed); + ADD_METHOD(TipsyOffset); ADD_METHOD(Bumpy); + ADD_METHOD(BumpyOffset); + ADD_METHOD(BumpyPeriod); ADD_METHOD(Beat); + ADD_METHOD(BeatOffset); + ADD_METHOD(BeatPeriod); + ADD_METHOD(BeatMult); ADD_METHOD(Xmode); ADD_METHOD(Twirl); ADD_METHOD(Roll); diff --git a/src/PlayerOptions.h b/src/PlayerOptions.h index 63074919d1..383bf24bec 100644 --- a/src/PlayerOptions.h +++ b/src/PlayerOptions.h @@ -106,12 +106,17 @@ public: ACCEL_BOOST, /**< The arrows start slow, then zoom towards the targets. */ ACCEL_BRAKE, /**< The arrows start fast, then slow down as they approach the targets. */ ACCEL_WAVE, + ACCEL_WAVE_PERIOD, ACCEL_EXPAND, + ACCEL_EXPAND_PERIOD, ACCEL_BOOMERANG, /**< The arrows start from above the targets, go down, then come back up. */ NUM_ACCELS }; enum Effect { EFFECT_DRUNK, + EFFECT_DRUNK_SPEED, + EFFECT_DRUNK_OFFSET, + EFFECT_DRUNK_PERIOD, EFFECT_DIZZY, EFFECT_CONFUSION, EFFECT_CONFUSION_OFFSET, @@ -124,9 +129,18 @@ public: EFFECT_FLIP, EFFECT_INVERT, EFFECT_TORNADO, + EFFECT_TORNADO_PERIOD, + EFFECT_TORNADO_OFFSET, EFFECT_TIPSY, + EFFECT_TIPSY_SPEED, + EFFECT_TIPSY_OFFSET, EFFECT_BUMPY, + EFFECT_BUMPY_OFFSET, + EFFECT_BUMPY_PERIOD, EFFECT_BEAT, + EFFECT_BEAT_OFFSET, + EFFECT_BEAT_PERIOD, + EFFECT_BEAT_MULT, EFFECT_XMODE, EFFECT_TWIRL, EFFECT_ROLL,