[splittiming] ArrowEffects, BPMDisplay, Inventory, MeterDisplay

This commit is contained in:
Thai Pangsakulyanont
2011-05-10 21:44:25 +07:00
parent 5209585cdc
commit 2c87c34899
4 changed files with 20 additions and 16 deletions
+17 -13
View File
@@ -67,13 +67,13 @@ static float GetNoteFieldHeight( const PlayerState* pPlayerState )
namespace namespace
{ {
float g_fExpandSeconds = 0;
struct PerPlayerData struct PerPlayerData
{ {
float m_fMinTornadoX[MAX_COLS_PER_PLAYER]; float m_fMinTornadoX[MAX_COLS_PER_PLAYER];
float m_fMaxTornadoX[MAX_COLS_PER_PLAYER]; float m_fMaxTornadoX[MAX_COLS_PER_PLAYER];
float m_fInvertDistance[MAX_COLS_PER_PLAYER]; float m_fInvertDistance[MAX_COLS_PER_PLAYER];
float m_fBeatFactor; float m_fBeatFactor;
float m_fExpandSeconds;
}; };
PerPlayerData g_EffectData[NUM_PLAYERS]; PerPlayerData g_EffectData[NUM_PLAYERS];
}; };
@@ -82,22 +82,23 @@ void ArrowEffects::Update()
{ {
const Style* pStyle = GAMESTATE->GetCurrentStyle(); const Style* pStyle = GAMESTATE->GetCurrentStyle();
{
static float fLastTime = 0;
float fTime = RageTimer::GetTimeSinceStartFast();
if( !GAMESTATE->m_bFreeze || !GAMESTATE->m_bDelay )
{
g_fExpandSeconds += fTime - fLastTime;
g_fExpandSeconds = fmodf( g_fExpandSeconds, PI*2 );
}
fLastTime = fTime;
}
FOREACH_PlayerNumber( pn ) FOREACH_PlayerNumber( pn )
{ {
const Style::ColumnInfo* pCols = pStyle->m_ColumnInfo[pn]; const Style::ColumnInfo* pCols = pStyle->m_ColumnInfo[pn];
PerPlayerData &data = g_EffectData[pn]; PerPlayerData &data = g_EffectData[pn];
{
static float fLastTime = 0;
float fTime = RageTimer::GetTimeSinceStartFast();
if( !GAMESTATE->m_pPlayerState[pn]->m_Position.m_bFreeze || !GAMESTATE->m_pPlayerState[pn]->m_Position.m_bDelay )
{
data.m_fExpandSeconds += fTime - fLastTime;
data.m_fExpandSeconds = fmodf( data.m_fExpandSeconds, PI*2 );
}
fLastTime = fTime;
}
// Update Tornado // Update Tornado
for( int iColNum = 0; iColNum < MAX_COLS_PER_PLAYER; ++iColNum ) for( int iColNum = 0; iColNum < MAX_COLS_PER_PLAYER; ++iColNum )
{ {
@@ -307,7 +308,10 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float
if( fAccels[PlayerOptions::ACCEL_EXPAND] != 0 ) if( fAccels[PlayerOptions::ACCEL_EXPAND] != 0 )
{ {
float fExpandMultiplier = SCALE( RageFastCos(g_fExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY), // TODO: Don't index by PlayerNumber.
PerPlayerData &data = g_EffectData[pPlayerState->m_PlayerNumber];
float fExpandMultiplier = SCALE( RageFastCos(data.m_fExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY),
EXPAND_MULTIPLIER_SCALE_FROM_LOW, EXPAND_MULTIPLIER_SCALE_FROM_HIGH, EXPAND_MULTIPLIER_SCALE_FROM_LOW, EXPAND_MULTIPLIER_SCALE_FROM_HIGH,
EXPAND_MULTIPLIER_SCALE_TO_LOW, EXPAND_MULTIPLIER_SCALE_TO_HIGH ); EXPAND_MULTIPLIER_SCALE_TO_LOW, EXPAND_MULTIPLIER_SCALE_TO_HIGH );
fScrollSpeed *= SCALE( fAccels[PlayerOptions::ACCEL_EXPAND], fScrollSpeed *= SCALE( fAccels[PlayerOptions::ACCEL_EXPAND],
+1 -1
View File
@@ -276,7 +276,7 @@ SongBPMDisplay::SongBPMDisplay()
void SongBPMDisplay::Update( float fDeltaTime ) void SongBPMDisplay::Update( float fDeltaTime )
{ {
float fGameStateBPM = GAMESTATE->m_fCurBPS * 60.0f; float fGameStateBPM = GAMESTATE->m_Position.m_fCurBPS * 60.0f;
if( m_fLastGameStateBPM != fGameStateBPM ) if( m_fLastGameStateBPM != fGameStateBPM )
{ {
m_fLastGameStateBPM = fGameStateBPM; m_fLastGameStateBPM = fGameStateBPM;
+1 -1
View File
@@ -121,7 +121,7 @@ void Inventory::Update( float fDelta )
// use items if this player is CPU-controlled // use items if this player is CPU-controlled
if( m_pPlayerState->m_PlayerController != PC_HUMAN && if( m_pPlayerState->m_PlayerController != PC_HUMAN &&
GAMESTATE->m_fSongBeat < GAMESTATE->m_pCurSong->m_fLastBeat ) GAMESTATE->m_Position.m_fSongBeat < GAMESTATE->m_pCurSong->m_fLastBeat )
{ {
// every 1 seconds, try to use an item // every 1 seconds, try to use an item
int iLastSecond = (int)(RageTimer::GetTimeSinceStartFast() - fDelta); int iLastSecond = (int)(RageTimer::GetTimeSinceStartFast() - fDelta);
+1 -1
View File
@@ -75,7 +75,7 @@ void SongMeterDisplay::Update( float fDeltaTime )
{ {
float fSongStartSeconds = GAMESTATE->m_pCurSong->m_SongTiming.GetElapsedTimeFromBeat( GAMESTATE->m_pCurSong->m_fFirstBeat ); float fSongStartSeconds = GAMESTATE->m_pCurSong->m_SongTiming.GetElapsedTimeFromBeat( GAMESTATE->m_pCurSong->m_fFirstBeat );
float fSongEndSeconds = GAMESTATE->m_pCurSong->m_SongTiming.GetElapsedTimeFromBeat( GAMESTATE->m_pCurSong->m_fLastBeat ); float fSongEndSeconds = GAMESTATE->m_pCurSong->m_SongTiming.GetElapsedTimeFromBeat( GAMESTATE->m_pCurSong->m_fLastBeat );
float fPercentPositionSong = SCALE( GAMESTATE->m_fMusicSeconds, fSongStartSeconds, fSongEndSeconds, 0.0f, 1.0f ); float fPercentPositionSong = SCALE( GAMESTATE->m_Position.m_fMusicSeconds, fSongStartSeconds, fSongEndSeconds, 0.0f, 1.0f );
CLAMP( fPercentPositionSong, 0, 1 ); CLAMP( fPercentPositionSong, 0, 1 );
SetPercent( fPercentPositionSong ); SetPercent( fPercentPositionSong );