Player loops are handled.

This commit is contained in:
Jason Felds
2013-05-01 21:48:22 -04:00
parent c759c4770f
commit cfd75da986
+26 -27
View File
@@ -533,8 +533,7 @@ void Player::Init(
}
m_vbFretIsDown.resize( GAMESTATE->GetCurrentStyle()->m_iColsPerPlayer );
FOREACH( bool, m_vbFretIsDown, b )
*b = false;
std::fill_n(m_vbFretIsDown.begin(), m_vbFretIsDown.size(), false);
m_fActiveRandomAttackStart = -1.0f;
}
@@ -1098,11 +1097,11 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
int iFirstTrackWithMaxEndRow = -1;
TapNote::SubType subType = TapNote::SubType_Invalid;
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
int iTrack = trtn->iTrack;
ASSERT( iStartRow == trtn->iRow );
TapNote &tn = *trtn->pTN;
int iTrack = trtn.iTrack;
ASSERT( iStartRow == trtn.iRow );
TapNote &tn = *trtn.pTN;
int iEndRow = iStartRow + tn.iDuration;
if( subType == TapNote::SubType_Invalid )
subType = tn.subType;
@@ -1123,15 +1122,15 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
//LOG->Trace( ssprintf("first track with max end row = %i",iFirstTrackWithMaxEndRow) );
//LOG->Trace( ssprintf("max end row - start row (in beats) = %f",NoteRowToBeat(iMaxEndRow)-NoteRowToBeat(iStartRow)) );
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
TapNote &tn = *trtn->pTN;
TapNote &tn = *trtn.pTN;
// set hold flags so NoteField can do intelligent drawing
tn.HoldResult.bHeld = false;
tn.HoldResult.bActive = false;
int iRow = trtn->iRow;
int iRow = trtn.iRow;
//LOG->Trace( ssprintf("this row: %i",iRow) );
// If the song beat is in the range of this hold:
@@ -1164,9 +1163,9 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
bool bSteppedOnHead = true;
bool bHeadJudged = true;
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
TapNote &tn = *trtn->pTN;
TapNote &tn = *trtn.pTN;
TapNoteScore tns = tn.result.tns;
//LOG->Trace( ssprintf("[C++] tap note score: %s",StringConversion::ToString(tns).c_str()) );
@@ -1204,9 +1203,9 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
}
bool bIsHoldingButton = true;
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
int iTrack = trtn->iTrack;
int iTrack = trtn.iTrack;
// TODO: Remove use of PlayerNumber.
PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
@@ -1237,13 +1236,13 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
* Update iLastHeldRow. Do this even if we're a little beyond the end
* of the hold note, to make sure iLastHeldRow is clamped to iEndRow
* if the hold note is held all the way. */
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
TapNote &tn = *trtn->pTN;
TapNote &tn = *trtn.pTN;
int iEndRow = iStartRow + tn.iDuration;
//LOG->Trace(ssprintf("trying for min between iSongRow (%i) and iEndRow (%i) (duration %i)",iSongRow,iEndRow,tn.iDuration));
trtn->pTN->HoldResult.iLastHeldRow = min( iSongRow, iEndRow );
tn.HoldResult.iLastHeldRow = min( iSongRow, iEndRow );
}
}
@@ -1253,9 +1252,9 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
switch( subType )
{
case TapNote::hold_head_hold:
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
TapNote &tn = *trtn->pTN;
TapNote &tn = *trtn.pTN;
// set hold flag so NoteField can do intelligent drawing
tn.HoldResult.bHeld = bIsHoldingButton && bInitiatedNote;
@@ -1292,9 +1291,9 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
}
break;
case TapNote::hold_head_roll:
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
TapNote &tn = *trtn->pTN;
TapNote &tn = *trtn.pTN;
tn.HoldResult.bHeld = true;
tn.HoldResult.bActive = bInitiatedNote;
}
@@ -1366,10 +1365,10 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
//LOG->Trace("(hold checkpoints are allowed and enabled.)");
int iCheckpointsHit = 0;
int iCheckpointsMissed = 0;
FOREACH( TrackRowTapNote, vTN, v )
for (TrackRowTapNote const &v : vTN)
{
iCheckpointsHit += v->pTN->HoldResult.iCheckpointsHit;
iCheckpointsMissed += v->pTN->HoldResult.iCheckpointsMissed;
iCheckpointsHit += v.pTN->HoldResult.iCheckpointsHit;
iCheckpointsMissed += v.pTN->HoldResult.iCheckpointsMissed;
}
bLetGoOfHoldNote = iCheckpointsMissed > 0 || iCheckpointsHit == 0;
@@ -1407,9 +1406,9 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->m_iCurCombo>(int)BRIGHT_GHOST_COMBO_THRESHOLD;
if( m_pNoteField )
{
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
int iTrack = trtn->iTrack;
int iTrack = trtn.iTrack;
m_pNoteField->DidHoldNote( iTrack, HNS_Held, bBright ); // bright ghost flash
}
}
@@ -1432,9 +1431,9 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
float fLifeFraction = fLife / MAX_HOLD_LIFE;
FOREACH( TrackRowTapNote, vTN, trtn )
for (TrackRowTapNote const &trtn : vTN)
{
TapNote &tn = *trtn->pTN;
TapNote &tn = *trtn.pTN;
tn.HoldResult.fLife = fLife;
tn.HoldResult.hns = hns;
// Stop the playing keysound for the hold note.