Add two new noteskin metrics.
This properly resolves bug tracker issue 190.
This commit is contained in:
@@ -10,6 +10,11 @@ StepMania 5.0 Preview 2 | 20110???
|
|||||||
|
|
||||||
2011/06/13
|
2011/06/13
|
||||||
----------
|
----------
|
||||||
|
* [NoteDisplay] Add two new metrics.
|
||||||
|
* DrawRollHeadForTapsOnSameRow: bool, similar to DrawHoldHeadForTapsOnSameRow
|
||||||
|
* TapHoldRollOnRowMeansHold: bool, true means hold and false means roll
|
||||||
|
* No noteskins should require updating, as these were placed in common/common
|
||||||
|
for ease of use. [Wolfman2000]
|
||||||
* [LifeMeterBattery] Added DangerThreshold metric. [AJ]
|
* [LifeMeterBattery] Added DangerThreshold metric. [AJ]
|
||||||
* [LifeMeterBattery] Added some important metrics. [AJ]
|
* [LifeMeterBattery] Added some important metrics. [AJ]
|
||||||
* MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life.
|
* MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life.
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
[NoteDisplay]
|
[NoteDisplay]
|
||||||
DrawHoldHeadForTapsOnSameRow=1
|
DrawHoldHeadForTapsOnSameRow=1
|
||||||
|
DrawRollHeadForTapsOnSameRow=1
|
||||||
|
TapHoldRollOnRowMeansHold=1
|
||||||
AnimationIsBeatBased=1
|
AnimationIsBeatBased=1
|
||||||
TapNoteAnimationLength=1
|
TapNoteAnimationLength=1
|
||||||
TapMineAnimationLength=1
|
TapMineAnimationLength=1
|
||||||
|
|||||||
+46
-1
@@ -46,6 +46,8 @@ static const NoteType MAX_DISPLAY_NOTE_TYPE = (NoteType)7;
|
|||||||
struct NoteMetricCache_t
|
struct NoteMetricCache_t
|
||||||
{
|
{
|
||||||
bool m_bDrawHoldHeadForTapsOnSameRow;
|
bool m_bDrawHoldHeadForTapsOnSameRow;
|
||||||
|
bool m_bDrawRollHeadForTapsOnSameRow;
|
||||||
|
bool m_bTapHoldRollOnRowMeansHold;
|
||||||
float m_fAnimationLength[NUM_NotePart];
|
float m_fAnimationLength[NUM_NotePart];
|
||||||
bool m_bAnimationIsVivid[NUM_NotePart];
|
bool m_bAnimationIsVivid[NUM_NotePart];
|
||||||
RageVector2 m_fAdditionTextureCoordOffset[NUM_NotePart];
|
RageVector2 m_fAdditionTextureCoordOffset[NUM_NotePart];
|
||||||
@@ -69,6 +71,8 @@ struct NoteMetricCache_t
|
|||||||
void NoteMetricCache_t::Load( const RString &sButton )
|
void NoteMetricCache_t::Load( const RString &sButton )
|
||||||
{
|
{
|
||||||
m_bDrawHoldHeadForTapsOnSameRow = NOTESKIN->GetMetricB(sButton,"DrawHoldHeadForTapsOnSameRow");
|
m_bDrawHoldHeadForTapsOnSameRow = NOTESKIN->GetMetricB(sButton,"DrawHoldHeadForTapsOnSameRow");
|
||||||
|
m_bDrawRollHeadForTapsOnSameRow = NOTESKIN->GetMetricB(sButton,"DrawRollHeadForTapsOnSameRow");
|
||||||
|
m_bTapHoldRollOnRowMeansHold = NOTESKIN->GetMetricB(sButton,"TapHoldRollOnRowMeansHold");
|
||||||
FOREACH_NotePart( p )
|
FOREACH_NotePart( p )
|
||||||
{
|
{
|
||||||
const RString &s = NotePartToString(p);
|
const RString &s = NotePartToString(p);
|
||||||
@@ -271,6 +275,11 @@ bool NoteDisplay::DrawHoldHeadForTapsOnSameRow() const
|
|||||||
return cache->m_bDrawHoldHeadForTapsOnSameRow;
|
return cache->m_bDrawHoldHeadForTapsOnSameRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NoteDisplay::DrawRollHeadForTapsOnSameRow() const
|
||||||
|
{
|
||||||
|
return cache->m_bDrawRollHeadForTapsOnSameRow;
|
||||||
|
}
|
||||||
|
|
||||||
void NoteDisplay::Update( float fDeltaTime )
|
void NoteDisplay::Update( float fDeltaTime )
|
||||||
{
|
{
|
||||||
/* This function is static: it's called once per game loop, not once per
|
/* This function is static: it's called once per game loop, not once per
|
||||||
@@ -718,7 +727,13 @@ void NoteDisplay::DrawActor( const TapNote& tn, Actor* pActor, NotePart part, in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NoteDisplay::DrawTap( const TapNote& tn, int iCol, float fBeat, bool bOnSameRowAsHoldStart, bool bIsAddition, float fPercentFadeToFail, float fReverseOffsetPixels, float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar )
|
void NoteDisplay::DrawTap(const TapNote& tn, int iCol, float fBeat,
|
||||||
|
bool bOnSameRowAsHoldStart, bool bOnSameRowAsRollStart,
|
||||||
|
bool bIsAddition, float fPercentFadeToFail,
|
||||||
|
float fReverseOffsetPixels,
|
||||||
|
float fDrawDistanceAfterTargetsPixels,
|
||||||
|
float fDrawDistanceBeforeTargetsPixels,
|
||||||
|
float fFadeInPercentOfDrawFar)
|
||||||
{
|
{
|
||||||
Actor* pActor = NULL;
|
Actor* pActor = NULL;
|
||||||
NotePart part = NotePart_Tap;
|
NotePart part = NotePart_Tap;
|
||||||
@@ -738,10 +753,40 @@ void NoteDisplay::DrawTap( const TapNote& tn, int iCol, float fBeat, bool bOnSam
|
|||||||
pActor = GetTapActor( m_TapFake, NotePart_Fake, fBeat );
|
pActor = GetTapActor( m_TapFake, NotePart_Fake, fBeat );
|
||||||
part = NotePart_Fake;
|
part = NotePart_Fake;
|
||||||
}
|
}
|
||||||
|
// TODO: Simplify all of the below.
|
||||||
|
else if (bOnSameRowAsHoldStart && bOnSameRowAsRollStart)
|
||||||
|
{
|
||||||
|
if (cache->m_bDrawHoldHeadForTapsOnSameRow && cache->m_bDrawRollHeadForTapsOnSameRow)
|
||||||
|
{
|
||||||
|
if (cache->m_bTapHoldRollOnRowMeansHold) // another new metric?
|
||||||
|
{
|
||||||
|
pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, false, false );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, true, false );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (cache->m_bDrawHoldHeadForTapsOnSameRow)
|
||||||
|
{
|
||||||
|
pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, false, false );
|
||||||
|
}
|
||||||
|
else if (cache->m_bDrawRollHeadForTapsOnSameRow)
|
||||||
|
{
|
||||||
|
pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, true, false );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else if( bOnSameRowAsHoldStart && cache->m_bDrawHoldHeadForTapsOnSameRow )
|
else if( bOnSameRowAsHoldStart && cache->m_bDrawHoldHeadForTapsOnSameRow )
|
||||||
{
|
{
|
||||||
pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, false, false );
|
pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, false, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if( bOnSameRowAsRollStart && cache->m_bDrawRollHeadForTapsOnSameRow )
|
||||||
|
{
|
||||||
|
pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, true, false );
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pActor = GetTapActor( m_TapNote, NotePart_Tap, fBeat );
|
pActor = GetTapActor( m_TapNote, NotePart_Tap, fBeat );
|
||||||
|
|||||||
+22
-2
@@ -80,14 +80,34 @@ public:
|
|||||||
|
|
||||||
static void Update( float fDeltaTime );
|
static void Update( float fDeltaTime );
|
||||||
|
|
||||||
void DrawTap( const TapNote& tn, int iCol, float fBeat, bool bOnSameRowAsHoldStart, bool bIsAddition,
|
/**
|
||||||
float fPercentFadeToFail, float fReverseOffsetPixels, float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar );
|
* @brief Draw the TapNote onto the NoteField.
|
||||||
|
* @param tn the TapNote in question.
|
||||||
|
* @param iCol the column.
|
||||||
|
* @param float fBeat the beat to draw them on.
|
||||||
|
* @param bOnSameRowAsHoldStart a flag to see if a hold is on the same beat.
|
||||||
|
* @param bOnSameRowAsRollStart a flag to see if a roll is on the same beat.
|
||||||
|
* @param bIsAddition a flag to see if this note was added via mods.
|
||||||
|
* @param fPercentFadeToFail at what point do the notes fade on failure?
|
||||||
|
* @param fReverseOffsetPixels How are the notes adjusted on Reverse?
|
||||||
|
* @param fDrawDistanceAfterTargetsPixels how much to draw after the receptors.
|
||||||
|
* @param fDrawDistanceBeforeTargetsPixels how much ot draw before the receptors.
|
||||||
|
* @param fFadeInPercentOfDrawFar when to start fading in. */
|
||||||
|
void DrawTap(const TapNote& tn, int iCol, float fBeat,
|
||||||
|
bool bOnSameRowAsHoldStart, bool bOnSameRowAsRollBeat,
|
||||||
|
bool bIsAddition, float fPercentFadeToFail,
|
||||||
|
float fReverseOffsetPixels,
|
||||||
|
float fDrawDistanceAfterTargetsPixels,
|
||||||
|
float fDrawDistanceBeforeTargetsPixels,
|
||||||
|
float fFadeInPercentOfDrawFar );
|
||||||
void DrawHold( const TapNote& tn, int iCol, int iRow, bool bIsBeingHeld, const HoldNoteResult &Result,
|
void DrawHold( const TapNote& tn, int iCol, int iRow, bool bIsBeingHeld, const HoldNoteResult &Result,
|
||||||
bool bIsAddition, float fPercentFadeToFail, float fReverseOffsetPixels, float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels,
|
bool bIsAddition, float fPercentFadeToFail, float fReverseOffsetPixels, float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels,
|
||||||
float fDrawDistanceBeforeTargetsPixels2, float fFadeInPercentOfDrawFar );
|
float fDrawDistanceBeforeTargetsPixels2, float fFadeInPercentOfDrawFar );
|
||||||
|
|
||||||
bool DrawHoldHeadForTapsOnSameRow() const;
|
bool DrawHoldHeadForTapsOnSameRow() const;
|
||||||
|
|
||||||
|
bool DrawRollHeadForTapsOnSameRow() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void SetActiveFrame( float fNoteBeat, Actor &actorToSet, float fAnimationLength, bool bVivid );
|
void SetActiveFrame( float fNoteBeat, Actor &actorToSet, float fAnimationLength, bool bVivid );
|
||||||
Actor *GetTapActor( NoteColorActor &nca, NotePart part, float fNoteBeat );
|
Actor *GetTapActor( NoteColorActor &nca, NotePart part, float fNoteBeat );
|
||||||
|
|||||||
+21
-2
@@ -1260,7 +1260,9 @@ void NoteField::DrawPrimitives()
|
|||||||
{
|
{
|
||||||
for( int c2=0; c2<m_pNoteData->GetNumTracks(); c2++ )
|
for( int c2=0; c2<m_pNoteData->GetNumTracks(); c2++ )
|
||||||
{
|
{
|
||||||
if( m_pNoteData->GetTapNote(c2, q).type == TapNote::hold_head)
|
const TapNote &tmp = m_pNoteData->GetTapNote(c2, q);
|
||||||
|
if(tmp.type == TapNote::hold_head &&
|
||||||
|
tmp.subType == TapNote::hold_head_hold)
|
||||||
{
|
{
|
||||||
bHoldNoteBeginsOnThisBeat = true;
|
bHoldNoteBeginsOnThisBeat = true;
|
||||||
break;
|
break;
|
||||||
@@ -1268,6 +1270,22 @@ void NoteField::DrawPrimitives()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// do the same for a roll.
|
||||||
|
bool bRollNoteBeginsOnThisBeat = false;
|
||||||
|
if (m_pCurDisplay->display[c].DrawRollHeadForTapsOnSameRow() )
|
||||||
|
{
|
||||||
|
for( int c2=0; c2<m_pNoteData->GetNumTracks(); c2++ )
|
||||||
|
{
|
||||||
|
const TapNote &tmp = m_pNoteData->GetTapNote(c2, q);
|
||||||
|
if(tmp.type == TapNote::hold_head &&
|
||||||
|
tmp.subType == TapNote::hold_head_roll)
|
||||||
|
{
|
||||||
|
bRollNoteBeginsOnThisBeat = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool bIsInSelectionRange = false;
|
bool bIsInSelectionRange = false;
|
||||||
if( m_iBeginMarker!=-1 && m_iEndMarker!=-1 )
|
if( m_iBeginMarker!=-1 && m_iEndMarker!=-1 )
|
||||||
bIsInSelectionRange = m_iBeginMarker<=q && q<m_iEndMarker;
|
bIsInSelectionRange = m_iBeginMarker<=q && q<m_iEndMarker;
|
||||||
@@ -1276,7 +1294,8 @@ 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, NoteRowToVisibleBeat(m_pPlayerState, q), bHoldNoteBeginsOnThisBeat,
|
displayCols->display[c].DrawTap(tn, c, NoteRowToVisibleBeat(m_pPlayerState, q),
|
||||||
|
bHoldNoteBeginsOnThisBeat, bRollNoteBeginsOnThisBeat,
|
||||||
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 );
|
||||||
|
|||||||
Reference in New Issue
Block a user