bFlipHeadAndTailWhenReverse flips the head and tail, and flips
the hold body. Flip the caps, too.
This commit is contained in:
@@ -462,8 +462,7 @@ void NoteDisplay::DrawHoldPart( vector<Sprite*> &vpSpr, int iCol, int fYStep, fl
|
||||
}
|
||||
|
||||
void NoteDisplay::DrawHoldBody( const TapNote& tn, int iCol, float fBeat, bool bIsBeingHeld, float fYHead, float fYTail, int fYStep, bool bIsAddition, float fPercentFadeToFail, float fColorScale, bool bGlow,
|
||||
float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar,
|
||||
bool bDrawTop, bool bDrawBottom )
|
||||
float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar )
|
||||
{
|
||||
vector<Sprite*> vpSprTop;
|
||||
Sprite *pSpriteTop = GetHoldSprite( m_HoldTopCap, NotePart_HoldTopCap, fBeat, tn.subType == TapNote::hold_head_roll, bIsBeingHeld && !cache->m_bHoldActiveIsAddLayer );
|
||||
@@ -487,6 +486,14 @@ void NoteDisplay::DrawHoldBody( const TapNote& tn, int iCol, float fBeat, bool b
|
||||
vpSprBottom.push_back( pSprBottom );
|
||||
}
|
||||
|
||||
const bool bReverse = m_pPlayerState->m_PlayerOptions.GetCurrent().GetReversePercentForColumn(iCol) > 0.5f;
|
||||
bool bFlipHeadAndTail = bReverse && cache->m_bFlipHeadAndTailWhenReverse;
|
||||
if( bFlipHeadAndTail )
|
||||
{
|
||||
swap( vpSprTop, vpSprBottom );
|
||||
swap( pSpriteTop, pSpriteBottom );
|
||||
}
|
||||
|
||||
const float fFrameHeightTop = pSpriteTop->GetZoomedHeight();
|
||||
const float fFrameHeightBottom = pSpriteBottom->GetZoomedHeight();
|
||||
const float fYCapTop = fYHead+cache->m_iStartDrawingHoldBodyOffsetFromHead-fFrameHeightTop;
|
||||
@@ -494,22 +501,20 @@ void NoteDisplay::DrawHoldBody( const TapNote& tn, int iCol, float fBeat, bool b
|
||||
const float fYBodyBottom = fYTail+cache->m_iStopDrawingHoldBodyOffsetFromTail;
|
||||
const float fYCapBottom = fYTail+cache->m_iStopDrawingHoldBodyOffsetFromTail+fFrameHeightBottom;
|
||||
|
||||
const bool bReverse = m_pPlayerState->m_PlayerOptions.GetCurrent().GetReversePercentForColumn(iCol) > 0.5f;
|
||||
|
||||
float fYStartPos = ArrowEffects::GetYPos( m_pPlayerState, iCol, fDrawDistanceAfterTargetsPixels, m_fYReverseOffsetPixels );
|
||||
float fYEndPos = ArrowEffects::GetYPos( m_pPlayerState, iCol, fDrawDistanceBeforeTargetsPixels, m_fYReverseOffsetPixels );
|
||||
if( bReverse )
|
||||
swap( fYStartPos, fYEndPos );
|
||||
|
||||
// Draw the top cap
|
||||
if( bDrawTop )
|
||||
DrawHoldPart(
|
||||
vpSprTop,
|
||||
iCol, fYStep, fPercentFadeToFail, fColorScale, bGlow,
|
||||
fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar,
|
||||
fYCapTop, fYBodyTop,
|
||||
fYStartPos, min(fYEndPos, fYTail),
|
||||
false, false );
|
||||
DrawHoldPart(
|
||||
vpSprTop,
|
||||
iCol, fYStep, fPercentFadeToFail, fColorScale, bGlow,
|
||||
fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar,
|
||||
fYCapTop, fYBodyTop,
|
||||
fYStartPos, min(fYEndPos, fYTail),
|
||||
false,
|
||||
bFlipHeadAndTail );
|
||||
|
||||
// Draw the body
|
||||
DrawHoldPart(
|
||||
@@ -519,17 +524,17 @@ void NoteDisplay::DrawHoldBody( const TapNote& tn, int iCol, float fBeat, bool b
|
||||
fYBodyTop, fYBodyBottom,
|
||||
fYStartPos, fYEndPos,
|
||||
true,
|
||||
bReverse && cache->m_bFlipHeadAndTailWhenReverse );
|
||||
bFlipHeadAndTail );
|
||||
|
||||
// Draw the bottom cap
|
||||
if( bDrawBottom )
|
||||
DrawHoldPart(
|
||||
vpSprBottom,
|
||||
iCol, fYStep, fPercentFadeToFail, fColorScale, bGlow,
|
||||
fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar,
|
||||
fYBodyBottom, fYCapBottom,
|
||||
max(fYStartPos, fYHead), fYEndPos,
|
||||
false, false );
|
||||
DrawHoldPart(
|
||||
vpSprBottom,
|
||||
iCol, fYStep, fPercentFadeToFail, fColorScale, bGlow,
|
||||
fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar,
|
||||
fYBodyBottom, fYCapBottom,
|
||||
max(fYStartPos, fYHead), fYEndPos,
|
||||
false,
|
||||
bFlipHeadAndTail );
|
||||
}
|
||||
|
||||
void NoteDisplay::DrawHoldHeadTail( const TapNote& tn, Actor* pActor, NotePart part, int iCol, float fBeat, float fY, bool bIsAddition, float fPercentFadeToFail, float fColorScale,
|
||||
@@ -663,7 +668,7 @@ void NoteDisplay::DrawHold( const TapNote &tn, int iCol, int iRow, bool bIsBeing
|
||||
DISPLAY->SetZTestMode( WavyPartsNeedZBuffer?ZTEST_WRITE_ON_PASS:ZTEST_OFF );
|
||||
DISPLAY->SetZWrite( WavyPartsNeedZBuffer );
|
||||
|
||||
DrawHoldBody( tn, iCol, fBeat, bIsBeingHeld, fYHead, fYTail, fYStep, bIsAddition, fPercentFadeToFail, fColorScale, bDrawGlowOnly, fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar, bFlipHeadAndTail, !bFlipHeadAndTail );
|
||||
DrawHoldBody( tn, iCol, fBeat, bIsBeingHeld, fYHead, fYTail, fYStep, bIsAddition, fPercentFadeToFail, fColorScale, bDrawGlowOnly, fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar );
|
||||
|
||||
/* These set the texture mode themselves. */
|
||||
if( cache->m_bHoldTailIsAboveWavyParts )
|
||||
|
||||
Reference in New Issue
Block a user