Add "tipsy" effect (is there a better name for this?)
This commit is contained in:
+30
-26
@@ -26,13 +26,14 @@
|
||||
#include "ThemeManager.h"
|
||||
#include "NoteFieldPositioning.h"
|
||||
#include "NoteSkinManager.h"
|
||||
#include "song.h"
|
||||
|
||||
const float HOLD_NOTE_BITS_PER_BEAT = 6;
|
||||
const float HOLD_NOTE_BITS_PER_ROW = HOLD_NOTE_BITS_PER_BEAT / ROWS_PER_BEAT;
|
||||
const float ROWS_BETWEEN_HOLD_BITS = 1 / HOLD_NOTE_BITS_PER_ROW;
|
||||
|
||||
NoteField::NoteField()
|
||||
{
|
||||
{
|
||||
m_textMeasureNumber.LoadFromFont( THEME->GetPathToF("Common normal") );
|
||||
m_textMeasureNumber.SetZoom( 1.0f );
|
||||
|
||||
@@ -48,11 +49,12 @@ NoteField::NoteField()
|
||||
}
|
||||
|
||||
|
||||
void NoteField::Load( NoteData* pNoteData, PlayerNumber pn, int iFirstPixelToDraw, int iLastPixelToDraw )
|
||||
void NoteField::Load( NoteData* pNoteData, PlayerNumber pn, int iFirstPixelToDraw, int iLastPixelToDraw, int iYReverseOffsetPixels )
|
||||
{
|
||||
m_PlayerNumber = pn;
|
||||
m_iFirstPixelToDraw = iFirstPixelToDraw;
|
||||
m_iLastPixelToDraw = iLastPixelToDraw;
|
||||
m_iStartDrawingPixel = iFirstPixelToDraw;
|
||||
m_iEndDrawingPixel = iLastPixelToDraw;
|
||||
m_iYReverseOffsetPixels = iYReverseOffsetPixels;
|
||||
|
||||
m_fPercentFadeToFail = -1;
|
||||
|
||||
@@ -79,6 +81,8 @@ void NoteField::ReloadNoteSkin()
|
||||
|
||||
void NoteField::Update( float fDeltaTime )
|
||||
{
|
||||
ActorFrame::Update( fDeltaTime );
|
||||
|
||||
m_rectMarkerBar.Update( fDeltaTime );
|
||||
|
||||
if( m_fPercentFadeToFail >= 0 )
|
||||
@@ -102,8 +106,8 @@ void NoteField::DrawBeatBar( const float fBeat )
|
||||
|
||||
NoteType nt = BeatToNoteType( fBeat );
|
||||
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, fYOffset );
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, 0, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, 0, fYOffset, m_iYReverseOffsetPixels );
|
||||
|
||||
float fAlpha;
|
||||
int iState;
|
||||
@@ -151,8 +155,8 @@ void NoteField::DrawBeatBar( const float fBeat )
|
||||
|
||||
void NoteField::DrawMarkerBar( const float fBeat )
|
||||
{
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, fYOffset );
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, 0, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, 0, fYOffset, m_iYReverseOffsetPixels );
|
||||
|
||||
|
||||
m_rectMarkerBar.StretchTo( RectF(-GetWidth()/2, fYPos-ARROW_SIZE/2, GetWidth()/2, fYPos+ARROW_SIZE/2) );
|
||||
@@ -161,10 +165,10 @@ void NoteField::DrawMarkerBar( const float fBeat )
|
||||
|
||||
void NoteField::DrawAreaHighlight( const float fStartBeat, const float fEndBeat )
|
||||
{
|
||||
float fYStartOffset = ArrowGetYOffset( m_PlayerNumber, fStartBeat );
|
||||
float fYStartPos = ArrowGetYPos( m_PlayerNumber, fYStartOffset );
|
||||
float fYEndOffset = ArrowGetYOffset( m_PlayerNumber, fEndBeat );
|
||||
float fYEndPos = ArrowGetYPos( m_PlayerNumber, fYEndOffset );
|
||||
float fYStartOffset = ArrowGetYOffset( m_PlayerNumber, 0, fStartBeat );
|
||||
float fYStartPos = ArrowGetYPos( m_PlayerNumber, 0, fYStartOffset, m_iYReverseOffsetPixels );
|
||||
float fYEndOffset = ArrowGetYOffset( m_PlayerNumber, 0, fEndBeat );
|
||||
float fYEndPos = ArrowGetYPos( m_PlayerNumber, 0, fYEndOffset, m_iYReverseOffsetPixels );
|
||||
|
||||
// Something in OpenGL crashes if this is values are too large. Strange. -Chris
|
||||
fYStartPos = max( fYStartPos, -1000 );
|
||||
@@ -179,8 +183,8 @@ void NoteField::DrawAreaHighlight( const float fStartBeat, const float fEndBeat
|
||||
|
||||
void NoteField::DrawBPMText( const float fBeat, const float fBPM )
|
||||
{
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, fYOffset );
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, 0, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, 0, fYOffset, m_iYReverseOffsetPixels );
|
||||
|
||||
m_textMeasureNumber.SetHorizAlign( Actor::align_right );
|
||||
m_textMeasureNumber.SetDiffuse( RageColor(1,0,0,1) );
|
||||
@@ -192,8 +196,8 @@ void NoteField::DrawBPMText( const float fBeat, const float fBPM )
|
||||
|
||||
void NoteField::DrawFreezeText( const float fBeat, const float fSecs )
|
||||
{
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, fYOffset );
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, 0, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, 0, fYOffset, m_iYReverseOffsetPixels );
|
||||
|
||||
m_textMeasureNumber.SetHorizAlign( Actor::align_right );
|
||||
m_textMeasureNumber.SetDiffuse( RageColor(0.8f,0.8f,0,1) );
|
||||
@@ -205,8 +209,8 @@ void NoteField::DrawFreezeText( const float fBeat, const float fSecs )
|
||||
|
||||
void NoteField::DrawBGChangeText( const float fBeat, const CString sNewBGName )
|
||||
{
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, fYOffset );
|
||||
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, 0, fBeat );
|
||||
const float fYPos = ArrowGetYPos( m_PlayerNumber, 0, fYOffset, m_iYReverseOffsetPixels );
|
||||
|
||||
m_textMeasureNumber.SetHorizAlign( Actor::align_left );
|
||||
m_textMeasureNumber.SetDiffuse( RageColor(0,1,0,1) );
|
||||
@@ -225,8 +229,8 @@ void NoteField::DrawPrimitives()
|
||||
//
|
||||
// Adjust draw range depending on some effects
|
||||
//
|
||||
int iFirstPixelToDraw = m_iFirstPixelToDraw;
|
||||
int iLastPixelToDraw = m_iLastPixelToDraw;
|
||||
int iFirstPixelToDraw = m_iStartDrawingPixel;
|
||||
int iLastPixelToDraw = m_iEndDrawingPixel;
|
||||
|
||||
float fDrawScale = 1;
|
||||
fDrawScale *= 1 + 0.5f * fabsf( GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].m_fPerspectiveTilt );
|
||||
@@ -246,8 +250,8 @@ void NoteField::DrawPrimitives()
|
||||
float fFirstBeatToDraw = fSongBeat-4; // Adjust to balance of performance and showing enough notes.
|
||||
while( fFirstBeatToDraw<fSongBeat )
|
||||
{
|
||||
float fYOffset = ArrowGetYOffset(m_PlayerNumber, fFirstBeatToDraw);
|
||||
float fYPosWOReverse = ArrowGetYPosWithoutReverse(m_PlayerNumber, fYOffset );
|
||||
float fYOffset = ArrowGetYOffset(m_PlayerNumber, 0, fFirstBeatToDraw);
|
||||
float fYPosWOReverse = ArrowGetYPosWithoutReverse(m_PlayerNumber, 0, fYOffset );
|
||||
if( fYPosWOReverse < iFirstPixelToDraw ) // off screen
|
||||
fFirstBeatToDraw += 0.1f; // move toward fSongBeat
|
||||
else // on screen
|
||||
@@ -259,8 +263,8 @@ void NoteField::DrawPrimitives()
|
||||
float fLastBeatToDraw = fSongBeat+20; // worst case is 0.25x + boost. Adjust to balance of performance and showing enough notes.
|
||||
while( fLastBeatToDraw>fSongBeat )
|
||||
{
|
||||
float fYOffset = ArrowGetYOffset(m_PlayerNumber, fLastBeatToDraw);
|
||||
float fYPosWOReverse = ArrowGetYPosWithoutReverse(m_PlayerNumber, fYOffset );
|
||||
float fYOffset = ArrowGetYOffset(m_PlayerNumber, 0, fLastBeatToDraw);
|
||||
float fYPosWOReverse = ArrowGetYPosWithoutReverse(m_PlayerNumber, 0, fYOffset );
|
||||
if( fYPosWOReverse > iLastPixelToDraw ) // off screen
|
||||
fLastBeatToDraw -= 0.1f; // move toward fSongBeat
|
||||
else // on screen
|
||||
@@ -392,7 +396,7 @@ void NoteField::DrawPrimitives()
|
||||
if( m_fBeginMarker!=-1 && m_fEndMarker!=-1 )
|
||||
bIsInSelectionRange = m_fBeginMarker<=hn.fStartBeat && hn.fStartBeat<=m_fEndMarker && m_fBeginMarker<=hn.fEndBeat && hn.fEndBeat<=m_fEndMarker;
|
||||
|
||||
m_NoteDisplay[c].DrawHold( hn, bIsHoldingNote, fLife, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail );
|
||||
m_NoteDisplay[c].DrawHold( hn, bIsHoldingNote, fLife, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail, false, m_iYReverseOffsetPixels );
|
||||
}
|
||||
|
||||
|
||||
@@ -440,7 +444,7 @@ void NoteField::DrawPrimitives()
|
||||
bool bIsAddition = (tn == TAP_ADDITION);
|
||||
bool bIsMine = (tn == TAP_MINE);
|
||||
|
||||
m_NoteDisplay[c].DrawTap( c, NoteRowToBeat(i), bHoldNoteBeginsOnThisBeat, bIsAddition, bIsMine, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail );
|
||||
m_NoteDisplay[c].DrawTap( c, NoteRowToBeat(i), bHoldNoteBeginsOnThisBeat, bIsAddition, bIsMine, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail, 1, m_iYReverseOffsetPixels );
|
||||
}
|
||||
|
||||
g_NoteFieldMode[m_PlayerNumber].EndDrawTrack(c);
|
||||
|
||||
Reference in New Issue
Block a user