Use NoteFieldPositioning.
ArrowGetXPos should probably be XOffset, now.
This commit is contained in:
@@ -67,21 +67,23 @@ float ArrowGetYOffset( PlayerNumber pn, float fNoteBeat )
|
|||||||
|
|
||||||
float ArrowGetXPos( PlayerNumber pn, int iColNum, float fYPos )
|
float ArrowGetXPos( PlayerNumber pn, int iColNum, float fYPos )
|
||||||
{
|
{
|
||||||
float fPixelOffsetFromCenter = GAMESTATE->GetCurrentStyleDef()->m_ColumnInfo[pn][iColNum].fXOffset;
|
float fPixelOffsetFromCenter = 0;
|
||||||
|
|
||||||
const float* fEffects = GAMESTATE->m_CurrentPlayerOptions[pn].m_fEffects;
|
const float* fEffects = GAMESTATE->m_CurrentPlayerOptions[pn].m_fEffects;
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_TORNADO] > 0 )
|
if( fEffects[PlayerOptions::EFFECT_TORNADO] > 0 )
|
||||||
{
|
{
|
||||||
const StyleDef* pStyleDef = GAMESTATE->GetCurrentStyleDef();
|
|
||||||
float fMinX, fMaxX;
|
float fMinX, fMaxX;
|
||||||
pStyleDef->GetMinAndMaxColX( pn, fMinX, fMaxX );
|
GAMESTATE->GetCurrentStyleDef()->GetMinAndMaxColX( pn, fMinX, fMaxX );
|
||||||
|
|
||||||
float fPositionBetween = SCALE( fPixelOffsetFromCenter, fMinX, fMaxX, -1, 1 );
|
float fRealPixelOffset = GAMESTATE->GetCurrentStyleDef()->m_ColumnInfo[pn][iColNum].fXOffset;
|
||||||
|
float fPositionBetween = SCALE( fRealPixelOffset, fMinX, fMaxX, -1, 1 );
|
||||||
float fRads = acosf( fPositionBetween );
|
float fRads = acosf( fPositionBetween );
|
||||||
fRads += fYPos * 6 / SCREEN_HEIGHT;
|
fRads += fYPos * 6 / SCREEN_HEIGHT;
|
||||||
|
|
||||||
fPixelOffsetFromCenter = SCALE( cosf(fRads), -1, 1, fMinX, fMaxX );
|
float fAdjustedPixelOffset = SCALE( cosf(fRads), -1, 1, fMinX, fMaxX );
|
||||||
|
|
||||||
|
fPixelOffsetFromCenter = fAdjustedPixelOffset - fRealPixelOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_DRUNK] > 0 )
|
if( fEffects[PlayerOptions::EFFECT_DRUNK] > 0 )
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "NoteSkinManager.h"
|
#include "NoteSkinManager.h"
|
||||||
#include "GameState.h"
|
#include "GameState.h"
|
||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
|
#include "NoteFieldPositioning.h"
|
||||||
|
|
||||||
|
|
||||||
GhostArrowRow::GhostArrowRow()
|
GhostArrowRow::GhostArrowRow()
|
||||||
@@ -61,6 +62,8 @@ void GhostArrowRow::DrawPrimitives()
|
|||||||
{
|
{
|
||||||
for( int c=0; c<m_iNumCols; c++ )
|
for( int c=0; c<m_iNumCols; c++ )
|
||||||
{
|
{
|
||||||
|
GAMESTATE->m_Position[m_PlayerNumber]->BeginDrawTrack(c);
|
||||||
|
|
||||||
float fX = ArrowGetXPos( m_PlayerNumber, c, 0 );
|
float fX = ArrowGetXPos( m_PlayerNumber, c, 0 );
|
||||||
m_GhostArrowRow[c].SetX( fX );
|
m_GhostArrowRow[c].SetX( fX );
|
||||||
m_GhostArrowRowBright[c].SetX( fX );
|
m_GhostArrowRowBright[c].SetX( fX );
|
||||||
@@ -69,6 +72,8 @@ void GhostArrowRow::DrawPrimitives()
|
|||||||
m_GhostArrowRow[c].Draw();
|
m_GhostArrowRow[c].Draw();
|
||||||
m_GhostArrowRowBright[c].Draw();
|
m_GhostArrowRowBright[c].Draw();
|
||||||
m_HoldGhostArrowRow[c].Draw();
|
m_HoldGhostArrowRow[c].Draw();
|
||||||
|
|
||||||
|
GAMESTATE->m_Position[m_PlayerNumber]->EndDrawTrack(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "NoteSkinManager.h"
|
#include "NoteSkinManager.h"
|
||||||
#include "GameState.h"
|
#include "GameState.h"
|
||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
|
#include "NoteFieldPositioning.h"
|
||||||
|
|
||||||
|
|
||||||
GrayArrowRow::GrayArrowRow()
|
GrayArrowRow::GrayArrowRow()
|
||||||
@@ -58,12 +59,14 @@ void GrayArrowRow::DrawPrimitives()
|
|||||||
{
|
{
|
||||||
for( int c=0; c<m_iNumCols; c++ )
|
for( int c=0; c<m_iNumCols; c++ )
|
||||||
{
|
{
|
||||||
|
GAMESTATE->m_Position[m_PlayerNumber]->BeginDrawTrack(c);
|
||||||
|
|
||||||
// set arrow X
|
// set arrow X
|
||||||
float fX = ArrowGetXPos( m_PlayerNumber, c, 0 );
|
float fX = ArrowGetXPos( m_PlayerNumber, c, 0 );
|
||||||
m_GrayArrow[c].SetX( fX );
|
m_GrayArrow[c].SetX( fX );
|
||||||
|
|
||||||
|
|
||||||
m_GrayArrow[c].Draw();
|
m_GrayArrow[c].Draw();
|
||||||
|
|
||||||
|
GAMESTATE->m_Position[m_PlayerNumber]->EndDrawTrack(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "RageDisplay.h"
|
#include "RageDisplay.h"
|
||||||
|
#include "NoteFieldPositioning.h"
|
||||||
|
|
||||||
|
|
||||||
const float HOLD_NOTE_BITS_PER_BEAT = 6;
|
const float HOLD_NOTE_BITS_PER_BEAT = 6;
|
||||||
@@ -335,6 +336,8 @@ void NoteField::DrawPrimitives()
|
|||||||
|
|
||||||
for( int c=0; c<GetNumTracks(); c++ ) // for each arrow column
|
for( int c=0; c<GetNumTracks(); c++ ) // for each arrow column
|
||||||
{
|
{
|
||||||
|
GAMESTATE->m_Position[m_PlayerNumber]->BeginDrawTrack(c);
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
// Draw all HoldNotes in this column (so that they appear under the tap notes)
|
// Draw all HoldNotes in this column (so that they appear under the tap notes)
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
@@ -400,6 +403,8 @@ void NoteField::DrawPrimitives()
|
|||||||
|
|
||||||
m_NoteDisplay[c].DrawTap( c, NoteRowToBeat(i), bHoldNoteBeginsOnThisBeat, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail );
|
m_NoteDisplay[c].DrawTap( c, NoteRowToBeat(i), bHoldNoteBeginsOnThisBeat, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GAMESTATE->m_Position[m_PlayerNumber]->EndDrawTrack(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user