[splittiming] ok, now it displays properly.
This commit is contained in:
@@ -85,13 +85,14 @@ void ArrowEffects::Update()
|
|||||||
FOREACH_PlayerNumber( pn )
|
FOREACH_PlayerNumber( pn )
|
||||||
{
|
{
|
||||||
const Style::ColumnInfo* pCols = pStyle->m_ColumnInfo[pn];
|
const Style::ColumnInfo* pCols = pStyle->m_ColumnInfo[pn];
|
||||||
|
const SongPosition &position = GAMESTATE->m_bIsEditorStepTiming ? GAMESTATE->m_pPlayerState[pn]->m_Position : GAMESTATE->m_Position;
|
||||||
|
|
||||||
PerPlayerData &data = g_EffectData[pn];
|
PerPlayerData &data = g_EffectData[pn];
|
||||||
|
|
||||||
{
|
{
|
||||||
static float fLastTime = 0;
|
static float fLastTime = 0;
|
||||||
float fTime = RageTimer::GetTimeSinceStartFast();
|
float fTime = RageTimer::GetTimeSinceStartFast();
|
||||||
if( !GAMESTATE->m_pPlayerState[pn]->m_Position.m_bFreeze || !GAMESTATE->m_pPlayerState[pn]->m_Position.m_bDelay )
|
if( !position.m_bFreeze || !position.m_bDelay )
|
||||||
{
|
{
|
||||||
data.m_fExpandSeconds += fTime - fLastTime;
|
data.m_fExpandSeconds += fTime - fLastTime;
|
||||||
data.m_fExpandSeconds = fmodf( data.m_fExpandSeconds, PI*2 );
|
data.m_fExpandSeconds = fmodf( data.m_fExpandSeconds, PI*2 );
|
||||||
@@ -177,7 +178,7 @@ void ArrowEffects::Update()
|
|||||||
// Update Beat
|
// Update Beat
|
||||||
do {
|
do {
|
||||||
float fAccelTime = 0.2f, fTotalTime = 0.5f;
|
float fAccelTime = 0.2f, fTotalTime = 0.5f;
|
||||||
float fBeat = GAMESTATE->m_pPlayerState[pn]->m_Position.m_fSongBeatVisible + fAccelTime;
|
float fBeat = position.m_fSongBeatVisible + fAccelTime;
|
||||||
|
|
||||||
const bool bEvenBeat = ( int(fBeat) % 2 ) != 0;
|
const bool bEvenBeat = ( int(fBeat) % 2 ) != 0;
|
||||||
|
|
||||||
@@ -218,12 +219,13 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float
|
|||||||
bIsPastPeakOut = true;
|
bIsPastPeakOut = true;
|
||||||
|
|
||||||
float fYOffset = 0;
|
float fYOffset = 0;
|
||||||
|
const SongPosition &position = GAMESTATE->m_bIsEditorStepTiming ? pPlayerState->m_Position : GAMESTATE->m_Position;
|
||||||
|
|
||||||
/* Usually, fTimeSpacing is 0 or 1, in which case we use entirely beat spacing or
|
/* Usually, fTimeSpacing is 0 or 1, in which case we use entirely beat spacing or
|
||||||
* entirely time spacing (respectively). Occasionally, we tween between them. */
|
* entirely time spacing (respectively). Occasionally, we tween between them. */
|
||||||
if( pPlayerState->m_PlayerOptions.GetCurrent().m_fTimeSpacing != 1.0f )
|
if( pPlayerState->m_PlayerOptions.GetCurrent().m_fTimeSpacing != 1.0f )
|
||||||
{
|
{
|
||||||
float fSongBeat = pPlayerState->m_Position.m_fSongBeatVisible;
|
float fSongBeat = position.m_fSongBeatVisible;
|
||||||
float fBeatsUntilStep = fNoteBeat - fSongBeat;
|
float fBeatsUntilStep = fNoteBeat - fSongBeat;
|
||||||
float fYOffsetBeatSpacing = fBeatsUntilStep;
|
float fYOffsetBeatSpacing = fBeatsUntilStep;
|
||||||
fYOffset += fYOffsetBeatSpacing * (1-pPlayerState->m_PlayerOptions.GetCurrent().m_fTimeSpacing);
|
fYOffset += fYOffsetBeatSpacing * (1-pPlayerState->m_PlayerOptions.GetCurrent().m_fTimeSpacing);
|
||||||
@@ -231,7 +233,7 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float
|
|||||||
|
|
||||||
if( pPlayerState->m_PlayerOptions.GetCurrent().m_fTimeSpacing != 0.0f )
|
if( pPlayerState->m_PlayerOptions.GetCurrent().m_fTimeSpacing != 0.0f )
|
||||||
{
|
{
|
||||||
float fSongSeconds = pPlayerState->m_Position.m_fMusicSecondsVisible;
|
float fSongSeconds = position.m_fMusicSecondsVisible;
|
||||||
float fNoteSeconds = GAMESTATE->m_pCurSteps[pPlayerState->m_PlayerNumber]->m_Timing.GetElapsedTimeFromBeat(fNoteBeat);
|
float fNoteSeconds = GAMESTATE->m_pCurSteps[pPlayerState->m_PlayerNumber]->m_Timing.GetElapsedTimeFromBeat(fNoteBeat);
|
||||||
float fSecondsUntilStep = fNoteSeconds - fSongSeconds;
|
float fSecondsUntilStep = fNoteSeconds - fSongSeconds;
|
||||||
float fBPM = pPlayerState->m_PlayerOptions.GetCurrent().m_fScrollBPM;
|
float fBPM = pPlayerState->m_PlayerOptions.GetCurrent().m_fScrollBPM;
|
||||||
|
|||||||
+16
-3
@@ -697,6 +697,19 @@ float FindLastDisplayedBeat( const PlayerState* pPlayerState, int iDrawDistanceB
|
|||||||
return fLastBeatToDraw;
|
return fLastBeatToDraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline float NoteRowToVisibleBeat( const PlayerState *pPlayerState, int iRow )
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
if( GAMESTATE->m_bIsEditorStepTiming )
|
||||||
|
{
|
||||||
|
*/
|
||||||
|
return NoteRowToBeat(iRow);
|
||||||
|
/*
|
||||||
|
}
|
||||||
|
return GetDisplayedTiming(pPlayerState)->GetBeatFromElapsedTime(GetRealTiming(pPlayerState)->GetElapsedTimeFromBeat(NoteRowToBeat(iRow)));
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
bool NoteField::IsOnScreen( float fBeat, int iCol, int iDrawDistanceAfterTargetsPixels, int iDrawDistanceBeforeTargetsPixels ) const
|
bool NoteField::IsOnScreen( float fBeat, int iCol, int iDrawDistanceAfterTargetsPixels, int iDrawDistanceBeforeTargetsPixels ) const
|
||||||
{
|
{
|
||||||
// TRICKY: If boomerang is on, then ones in the range
|
// TRICKY: If boomerang is on, then ones in the range
|
||||||
@@ -1054,8 +1067,8 @@ void NoteField::DrawPrimitives()
|
|||||||
float fThrowAway;
|
float fThrowAway;
|
||||||
bool bStartIsPastPeak = false;
|
bool bStartIsPastPeak = false;
|
||||||
bool bEndIsPastPeak = false;
|
bool bEndIsPastPeak = false;
|
||||||
float fStartYOffset = ArrowEffects::GetYOffset( m_pPlayerState, c, NoteRowToBeat(iStartRow), fThrowAway, bStartIsPastPeak );
|
float fStartYOffset = ArrowEffects::GetYOffset( m_pPlayerState, c, NoteRowToVisibleBeat(m_pPlayerState, iStartRow), fThrowAway, bStartIsPastPeak );
|
||||||
float fEndYOffset = ArrowEffects::GetYOffset( m_pPlayerState, c, NoteRowToBeat(iEndRow), fThrowAway, bEndIsPastPeak );
|
float fEndYOffset = ArrowEffects::GetYOffset( m_pPlayerState, c, NoteRowToVisibleBeat(m_pPlayerState, iEndRow), fThrowAway, bEndIsPastPeak );
|
||||||
|
|
||||||
bool bTailIsOnVisible = iDrawDistanceAfterTargetsPixels <= fEndYOffset && fEndYOffset <= iDrawDistanceBeforeTargetsPixels;
|
bool bTailIsOnVisible = iDrawDistanceAfterTargetsPixels <= fEndYOffset && fEndYOffset <= iDrawDistanceBeforeTargetsPixels;
|
||||||
bool bHeadIsVisible = iDrawDistanceAfterTargetsPixels <= fStartYOffset && fStartYOffset <= iDrawDistanceBeforeTargetsPixels;
|
bool bHeadIsVisible = iDrawDistanceAfterTargetsPixels <= fStartYOffset && fStartYOffset <= iDrawDistanceBeforeTargetsPixels;
|
||||||
@@ -1152,7 +1165,7 @@ void NoteField::DrawPrimitives()
|
|||||||
bool bIsHopoPossible = (tn.bHopoPossible);
|
bool bIsHopoPossible = (tn.bHopoPossible);
|
||||||
bool bUseAdditionColoring = bIsAddition || bIsHopoPossible;
|
bool bUseAdditionColoring = bIsAddition || bIsHopoPossible;
|
||||||
NoteDisplayCols *displayCols = tn.pn == PLAYER_INVALID ? m_pCurDisplay : m_pDisplays[tn.pn];
|
NoteDisplayCols *displayCols = tn.pn == PLAYER_INVALID ? m_pCurDisplay : m_pDisplays[tn.pn];
|
||||||
displayCols->display[c].DrawTap( tn, c, NoteRowToBeat(q), bHoldNoteBeginsOnThisBeat,
|
displayCols->display[c].DrawTap( tn, c, NoteRowToVisibleBeat(m_pPlayerState, q), bHoldNoteBeginsOnThisBeat,
|
||||||
bUseAdditionColoring, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail,
|
bUseAdditionColoring, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail,
|
||||||
m_fYReverseOffsetPixels, iDrawDistanceAfterTargetsPixels, iDrawDistanceBeforeTargetsPixels,
|
m_fYReverseOffsetPixels, iDrawDistanceAfterTargetsPixels, iDrawDistanceBeforeTargetsPixels,
|
||||||
FADE_BEFORE_TARGETS_PERCENT );
|
FADE_BEFORE_TARGETS_PERCENT );
|
||||||
|
|||||||
+11
-7
@@ -1010,12 +1010,12 @@ void ScreenEdit::Update( float fDeltaTime )
|
|||||||
|
|
||||||
|
|
||||||
// Update trailing beat
|
// Update trailing beat
|
||||||
float fDelta = GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat - m_fTrailingBeat;
|
float fDelta = GetBeat() - m_fTrailingBeat;
|
||||||
if( fabsf(fDelta) < 10 )
|
if( fabsf(fDelta) < 10 )
|
||||||
fapproach( m_fTrailingBeat, GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat,
|
fapproach( m_fTrailingBeat, GetBeat(),
|
||||||
fDeltaTime*40 / m_NoteFieldEdit.GetPlayerState()->m_PlayerOptions.GetCurrent().m_fScrollSpeed );
|
fDeltaTime*40 / m_NoteFieldEdit.GetPlayerState()->m_PlayerOptions.GetCurrent().m_fScrollSpeed );
|
||||||
else
|
else
|
||||||
fapproach( m_fTrailingBeat, GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat,
|
fapproach( m_fTrailingBeat, GetBeat(),
|
||||||
fabsf(fDelta) * fDeltaTime*5 );
|
fabsf(fDelta) * fDeltaTime*5 );
|
||||||
|
|
||||||
PlayTicks();
|
PlayTicks();
|
||||||
@@ -1090,8 +1090,8 @@ void ScreenEdit::UpdateTextInfo()
|
|||||||
RString sNoteType = ssprintf( NOTES.GetValue(), NoteTypeToLocalizedString(m_SnapDisplay.GetNoteType()).c_str() );
|
RString sNoteType = ssprintf( NOTES.GetValue(), NoteTypeToLocalizedString(m_SnapDisplay.GetNoteType()).c_str() );
|
||||||
|
|
||||||
RString sText;
|
RString sText;
|
||||||
sText += ssprintf( CURRENT_BEAT_FORMAT.GetValue(), CURRENT_BEAT.GetValue().c_str(), GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat );
|
sText += ssprintf( CURRENT_BEAT_FORMAT.GetValue(), CURRENT_BEAT.GetValue().c_str(), GetBeat() );
|
||||||
sText += ssprintf( CURRENT_SECOND_FORMAT.GetValue(), CURRENT_SECOND.GetValue().c_str(), m_pSteps->m_Timing.GetElapsedTimeFromBeat(GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat) );
|
sText += ssprintf( CURRENT_SECOND_FORMAT.GetValue(), CURRENT_SECOND.GetValue().c_str(), GetAppropriateTiming().GetElapsedTimeFromBeat(GetBeat()) );
|
||||||
switch( EDIT_MODE.GetValue() )
|
switch( EDIT_MODE.GetValue() )
|
||||||
{
|
{
|
||||||
DEFAULT_FAIL( EDIT_MODE.GetValue() );
|
DEFAULT_FAIL( EDIT_MODE.GetValue() );
|
||||||
@@ -1188,6 +1188,10 @@ void ScreenEdit::DrawPrimitives()
|
|||||||
pPlayerState->m_Position.m_fSongBeat = m_fTrailingBeat; // put trailing beat in effect
|
pPlayerState->m_Position.m_fSongBeat = m_fTrailingBeat; // put trailing beat in effect
|
||||||
pPlayerState->m_Position.m_fSongBeatNoOffset = m_fTrailingBeat; // put trailing beat in effect
|
pPlayerState->m_Position.m_fSongBeatNoOffset = m_fTrailingBeat; // put trailing beat in effect
|
||||||
pPlayerState->m_Position.m_fSongBeatVisible = m_fTrailingBeat; // put trailing beat in effect
|
pPlayerState->m_Position.m_fSongBeatVisible = m_fTrailingBeat; // put trailing beat in effect
|
||||||
|
|
||||||
|
GAMESTATE->m_Position.m_fSongBeat = m_fTrailingBeat; // put trailing beat in effect
|
||||||
|
GAMESTATE->m_Position.m_fSongBeatNoOffset = m_fTrailingBeat; // put trailing beat in effect
|
||||||
|
GAMESTATE->m_Position.m_fSongBeatVisible = m_fTrailingBeat; // put trailing beat in effect
|
||||||
|
|
||||||
ScreenWithMenuElements::DrawPrimitives();
|
ScreenWithMenuElements::DrawPrimitives();
|
||||||
|
|
||||||
@@ -1446,7 +1450,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
|
|||||||
if( m_PlayerStateEdit.m_PlayerOptions.GetSong().m_fScrolls[PlayerOptions::SCROLL_REVERSE] > 0.5 )
|
if( m_PlayerStateEdit.m_PlayerOptions.GetSong().m_fScrolls[PlayerOptions::SCROLL_REVERSE] > 0.5 )
|
||||||
fBeatsToMove *= -1;
|
fBeatsToMove *= -1;
|
||||||
|
|
||||||
float fDestinationBeat = GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat + fBeatsToMove;
|
float fDestinationBeat = GetBeat() + fBeatsToMove;
|
||||||
fDestinationBeat = Quantize( fDestinationBeat, NoteTypeToBeat(m_SnapDisplay.GetNoteType()) );
|
fDestinationBeat = Quantize( fDestinationBeat, NoteTypeToBeat(m_SnapDisplay.GetNoteType()) );
|
||||||
|
|
||||||
ScrollTo( fDestinationBeat );
|
ScrollTo( fDestinationBeat );
|
||||||
@@ -2969,7 +2973,7 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
else if( SM == SM_LoseFocus )
|
else if( SM == SM_LoseFocus )
|
||||||
{
|
{
|
||||||
// Snap the trailing beat, in case we lose focus while tweening.
|
// Snap the trailing beat, in case we lose focus while tweening.
|
||||||
m_fTrailingBeat = GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat;
|
m_fTrailingBeat = GetBeat(); //GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScreenWithMenuElements::HandleScreenMessage( SM );
|
ScreenWithMenuElements::HandleScreenMessage( SM );
|
||||||
|
|||||||
Reference in New Issue
Block a user