add BEAT
This commit is contained in:
@@ -111,6 +111,50 @@ float ArrowGetXPos( PlayerNumber pn, int iColNum, float fYPos )
|
|||||||
fPixelOffsetFromCenter += fDistance * fEffects[PlayerOptions::EFFECT_FLIP];
|
fPixelOffsetFromCenter += fDistance * fEffects[PlayerOptions::EFFECT_FLIP];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_BEAT] > 0 )
|
||||||
|
do {
|
||||||
|
float fAccelTime = 0.2f, fTotalTime = 0.5f;
|
||||||
|
|
||||||
|
/* If the song is really fast, slow down the rate, but speed up the
|
||||||
|
* acceleration to compensate or it'll look weird. */
|
||||||
|
const float fBPM = GAMESTATE->m_fCurBPS * 60;
|
||||||
|
const float fDiv = max(1.0f, truncf( fBPM / 150.0f ));
|
||||||
|
fAccelTime /= fDiv;
|
||||||
|
fTotalTime /= fDiv;
|
||||||
|
|
||||||
|
float fBeat = GAMESTATE->m_fSongBeat + fAccelTime;
|
||||||
|
fBeat /= fDiv;
|
||||||
|
|
||||||
|
const bool bEvenBeat = ( int(fBeat) % 2 ) != 0;
|
||||||
|
|
||||||
|
/* -100.2 -> -0.2 -> 0.2 */
|
||||||
|
if( fBeat < 0 )
|
||||||
|
break;
|
||||||
|
|
||||||
|
fBeat -= truncf( fBeat );
|
||||||
|
fBeat += 1;
|
||||||
|
fBeat -= truncf( fBeat );
|
||||||
|
|
||||||
|
if( fBeat >= fTotalTime )
|
||||||
|
break;
|
||||||
|
|
||||||
|
float fAmount;
|
||||||
|
if( fBeat < fAccelTime )
|
||||||
|
{
|
||||||
|
fAmount = SCALE( fBeat, 0.0f, fAccelTime, 0.0f, 1.0f);
|
||||||
|
fAmount *= fAmount;
|
||||||
|
} else /* fBeat < fTotalTime */ {
|
||||||
|
fAmount = SCALE( fBeat, fAccelTime, fTotalTime, 1.0f, 0.0f);
|
||||||
|
fAmount = 1 - (1-fAmount) * (1-fAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( bEvenBeat )
|
||||||
|
fAmount *= -1;
|
||||||
|
|
||||||
|
const float fShift = 20.0f*fAmount*sinf( fYPos / 15.0f + PI/2.0f );
|
||||||
|
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_BEAT] * fShift;
|
||||||
|
} while(0);
|
||||||
|
|
||||||
return fPixelOffsetFromCenter;
|
return fPixelOffsetFromCenter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ CString PlayerOptions::GetString()
|
|||||||
if( m_fEffects[EFFECT_FLIP]==1 ) sReturn += "Flip, ";
|
if( m_fEffects[EFFECT_FLIP]==1 ) sReturn += "Flip, ";
|
||||||
if( m_fEffects[EFFECT_TORNADO]==1 ) sReturn += "Tornado, ";
|
if( m_fEffects[EFFECT_TORNADO]==1 ) sReturn += "Tornado, ";
|
||||||
if( m_fEffects[EFFECT_BUMPY]==1 ) sReturn += "Bumpy, ";
|
if( m_fEffects[EFFECT_BUMPY]==1 ) sReturn += "Bumpy, ";
|
||||||
|
if( m_fEffects[EFFECT_BEAT]==1 ) sReturn += "Beat, ";
|
||||||
|
|
||||||
if( m_fAppearances[APPEARANCE_HIDDEN]==1 ) sReturn += "Hidden, ";
|
if( m_fAppearances[APPEARANCE_HIDDEN]==1 ) sReturn += "Hidden, ";
|
||||||
if( m_fAppearances[APPEARANCE_SUDDEN]==1 ) sReturn += "Sudden, ";
|
if( m_fAppearances[APPEARANCE_SUDDEN]==1 ) sReturn += "Sudden, ";
|
||||||
@@ -186,6 +187,7 @@ void PlayerOptions::FromString( CString sOptions )
|
|||||||
else if( sBit == "flip" ) m_fEffects[EFFECT_FLIP] = 1;
|
else if( sBit == "flip" ) m_fEffects[EFFECT_FLIP] = 1;
|
||||||
else if( sBit == "tornado" ) m_fEffects[EFFECT_TORNADO] = 1;
|
else if( sBit == "tornado" ) m_fEffects[EFFECT_TORNADO] = 1;
|
||||||
else if( sBit == "bumpy" ) m_fEffects[EFFECT_BUMPY] = 1;
|
else if( sBit == "bumpy" ) m_fEffects[EFFECT_BUMPY] = 1;
|
||||||
|
else if( sBit == "beat" ) m_fEffects[EFFECT_BEAT] = 1;
|
||||||
else if( sBit == "hidden" ) m_fAppearances[APPEARANCE_HIDDEN] = 1;
|
else if( sBit == "hidden" ) m_fAppearances[APPEARANCE_HIDDEN] = 1;
|
||||||
else if( sBit == "sudden" ) m_fAppearances[APPEARANCE_SUDDEN] = 1;
|
else if( sBit == "sudden" ) m_fAppearances[APPEARANCE_SUDDEN] = 1;
|
||||||
else if( sBit == "stealth" ) m_fAppearances[APPEARANCE_STEALTH] = 1;
|
else if( sBit == "stealth" ) m_fAppearances[APPEARANCE_STEALTH] = 1;
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ struct PlayerOptions
|
|||||||
EFFECT_FLIP,
|
EFFECT_FLIP,
|
||||||
EFFECT_TORNADO,
|
EFFECT_TORNADO,
|
||||||
EFFECT_BUMPY,
|
EFFECT_BUMPY,
|
||||||
|
EFFECT_BEAT,
|
||||||
NUM_EFFECTS
|
NUM_EFFECTS
|
||||||
};
|
};
|
||||||
enum Appearance {
|
enum Appearance {
|
||||||
|
|||||||
Reference in New Issue
Block a user