separate NoteField from Player in preparation for "routine" mode
This commit is contained in:
+49
-43
@@ -53,7 +53,7 @@ static const float StepSearchDistanceForwards = 1.0f;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Player::Player()
|
PlayerMinus::PlayerMinus()
|
||||||
{
|
{
|
||||||
GRAY_ARROWS_Y_STANDARD.Refresh();
|
GRAY_ARROWS_Y_STANDARD.Refresh();
|
||||||
GRAY_ARROWS_Y_REVERSE.Refresh();
|
GRAY_ARROWS_Y_REVERSE.Refresh();
|
||||||
@@ -74,7 +74,6 @@ Player::Player()
|
|||||||
m_iOffsetSample = 0;
|
m_iOffsetSample = 0;
|
||||||
|
|
||||||
this->AddChild( &m_ArrowBackdrop );
|
this->AddChild( &m_ArrowBackdrop );
|
||||||
this->AddChild( &m_NoteField );
|
|
||||||
this->AddChild( &m_Judgment );
|
this->AddChild( &m_Judgment );
|
||||||
this->AddChild( &m_ProTimingDisplay );
|
this->AddChild( &m_ProTimingDisplay );
|
||||||
this->AddChild( &m_Combo );
|
this->AddChild( &m_Combo );
|
||||||
@@ -85,13 +84,13 @@ Player::Player()
|
|||||||
PlayerAI::InitFromDisk();
|
PlayerAI::InitFromDisk();
|
||||||
}
|
}
|
||||||
|
|
||||||
Player::~Player()
|
PlayerMinus::~PlayerMinus()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, CombinedLifeMeter* pCombinedLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pPrimaryScoreKeeper, ScoreKeeper* pSecondaryScoreKeeper )
|
void PlayerMinus::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, CombinedLifeMeter* pCombinedLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pPrimaryScoreKeeper, ScoreKeeper* pSecondaryScoreKeeper, NoteFieldPlus* pNoteField )
|
||||||
{
|
{
|
||||||
//LOG->Trace( "Player::Load()", );
|
//LOG->Trace( "PlayerMinus::Load()", );
|
||||||
|
|
||||||
m_PlayerNumber = pn;
|
m_PlayerNumber = pn;
|
||||||
m_pLifeMeter = pLM;
|
m_pLifeMeter = pLM;
|
||||||
@@ -100,6 +99,7 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, Combine
|
|||||||
m_pInventory = pInventory;
|
m_pInventory = pInventory;
|
||||||
m_pPrimaryScoreKeeper = pPrimaryScoreKeeper;
|
m_pPrimaryScoreKeeper = pPrimaryScoreKeeper;
|
||||||
m_pSecondaryScoreKeeper = pSecondaryScoreKeeper;
|
m_pSecondaryScoreKeeper = pSecondaryScoreKeeper;
|
||||||
|
m_pNoteField = pNoteField;
|
||||||
m_iRowLastCrossed = BeatToNoteRowNotRounded( GAMESTATE->m_fSongBeat ) - 1;
|
m_iRowLastCrossed = BeatToNoteRowNotRounded( GAMESTATE->m_fSongBeat ) - 1;
|
||||||
// m_iRowLastCrossed = -1;
|
// m_iRowLastCrossed = -1;
|
||||||
|
|
||||||
@@ -138,8 +138,8 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, Combine
|
|||||||
if( !BackdropName.empty() )
|
if( !BackdropName.empty() )
|
||||||
m_ArrowBackdrop.LoadFromAniDir( THEME->GetPathToB( BackdropName ) );
|
m_ArrowBackdrop.LoadFromAniDir( THEME->GetPathToB( BackdropName ) );
|
||||||
|
|
||||||
m_NoteField.SetY( GRAY_ARROWS_Y_STANDARD );
|
m_pNoteField->SetY( GRAY_ARROWS_Y_STANDARD );
|
||||||
m_NoteField.Load( (NoteData*)this, pn, iStartDrawingAtPixels, iStopDrawingAtPixels, GRAY_ARROWS_Y_REVERSE-GRAY_ARROWS_Y_STANDARD );
|
m_pNoteField->Load( (NoteData*)this, pn, iStartDrawingAtPixels, iStopDrawingAtPixels, GRAY_ARROWS_Y_REVERSE-GRAY_ARROWS_Y_STANDARD );
|
||||||
m_ArrowBackdrop.SetPlayer( pn );
|
m_ArrowBackdrop.SetPlayer( pn );
|
||||||
|
|
||||||
const bool bReverse = GAMESTATE->m_PlayerOptions[pn].GetReversePercentForColumn(0) == 1;
|
const bool bReverse = GAMESTATE->m_PlayerOptions[pn].GetReversePercentForColumn(0) == 1;
|
||||||
@@ -170,15 +170,16 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, Combine
|
|||||||
m_soundMineExplosion.Load( THEME->GetPathToS("Player explosion") );
|
m_soundMineExplosion.Load( THEME->GetPathToS("Player explosion") );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::Update( float fDeltaTime )
|
void PlayerMinus::Update( float fDeltaTime )
|
||||||
{
|
{
|
||||||
//LOG->Trace( "Player::Update(%f)", fDeltaTime );
|
//LOG->Trace( "PlayerMinus::Update(%f)", fDeltaTime );
|
||||||
|
|
||||||
if( GAMESTATE->m_pCurSong==NULL )
|
if( GAMESTATE->m_pCurSong==NULL )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const float fSongBeat = GAMESTATE->m_fSongBeat;
|
const float fSongBeat = GAMESTATE->m_fSongBeat;
|
||||||
|
|
||||||
|
m_pNoteField->Update( fDeltaTime );
|
||||||
|
|
||||||
//
|
//
|
||||||
// Update Y positions
|
// Update Y positions
|
||||||
@@ -192,11 +193,11 @@ void Player::Update( float fDeltaTime )
|
|||||||
m_ArrowBackdrop.SetY( fGrayYPos );
|
m_ArrowBackdrop.SetY( fGrayYPos );
|
||||||
|
|
||||||
// NoteField accounts for reverse on its own now.
|
// NoteField accounts for reverse on its own now.
|
||||||
// m_NoteField.SetY( fGrayYPos );
|
// m_pNoteField->SetY( fGrayYPos );
|
||||||
|
|
||||||
float fMiniPercent = GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].m_fEffects[PlayerOptions::EFFECT_MINI];
|
float fMiniPercent = GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].m_fEffects[PlayerOptions::EFFECT_MINI];
|
||||||
float fZoom = 1 - fMiniPercent*0.5f;
|
float fZoom = 1 - fMiniPercent*0.5f;
|
||||||
m_NoteField.SetZoom( fZoom );
|
m_pNoteField->SetZoom( fZoom );
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check for TapNote misses
|
// Check for TapNote misses
|
||||||
@@ -213,7 +214,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
float fLife = GetHoldNoteLife(i);
|
float fLife = GetHoldNoteLife(i);
|
||||||
int iHoldStartIndex = BeatToNoteRow(hn.fStartBeat);
|
int iHoldStartIndex = BeatToNoteRow(hn.fStartBeat);
|
||||||
|
|
||||||
m_NoteField.m_bIsHoldingHoldNote[i] = false; // set host flag so NoteField can do intelligent drawing
|
m_pNoteField->m_bIsHoldingHoldNote[i] = false; // set host flag so NoteField can do intelligent drawing
|
||||||
|
|
||||||
|
|
||||||
if( hns != HNS_NONE ) // if this HoldNote already has a result
|
if( hns != HNS_NONE ) // if this HoldNote already has a result
|
||||||
@@ -235,7 +236,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
bIsHoldingButton = true;
|
bIsHoldingButton = true;
|
||||||
|
|
||||||
// set hold flag so NoteField can do intelligent drawing
|
// set hold flag so NoteField can do intelligent drawing
|
||||||
m_NoteField.m_bIsHoldingHoldNote[i] = bIsHoldingButton && bSteppedOnTapNote;
|
m_pNoteField->m_bIsHoldingHoldNote[i] = bIsHoldingButton && bSteppedOnTapNote;
|
||||||
|
|
||||||
if( bSteppedOnTapNote ) // this note is not judged and we stepped on its head
|
if( bSteppedOnTapNote ) // this note is not judged and we stepped on its head
|
||||||
{
|
{
|
||||||
@@ -245,7 +246,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
// its HoldNote::fEndBeat. Otherwise, when HoldNotes are converted to the
|
// its HoldNote::fEndBeat. Otherwise, when HoldNotes are converted to the
|
||||||
// 4s representation, it disappears, which causes problems for the way we
|
// 4s representation, it disappears, which causes problems for the way we
|
||||||
// store HoldNote life (by index of the hold).
|
// store HoldNote life (by index of the hold).
|
||||||
m_NoteField.GetHoldNote(i).fStartBeat = min( fSongBeat, m_NoteField.GetHoldNote(i).fEndBeat -NoteRowToBeat(1) );
|
m_pNoteField->GetHoldNote(i).fStartBeat = min( fSongBeat, m_pNoteField->GetHoldNote(i).fEndBeat -NoteRowToBeat(1) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( bSteppedOnTapNote && bIsHoldingButton )
|
if( bSteppedOnTapNote && bIsHoldingButton )
|
||||||
@@ -253,7 +254,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
// Increase life
|
// Increase life
|
||||||
fLife = 1;
|
fLife = 1;
|
||||||
|
|
||||||
m_NoteField.HoldNote( hn.iTrack ); // update the "electric ghost" effect
|
m_pNoteField->HoldNote( hn.iTrack ); // update the "electric ghost" effect
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -280,7 +281,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
{
|
{
|
||||||
fLife = 1;
|
fLife = 1;
|
||||||
hns = HNS_OK;
|
hns = HNS_OK;
|
||||||
m_NoteField.TapNote( StyleI.col, TNS_PERFECT, true ); // bright ghost flash
|
m_pNoteField->TapNote( StyleI.col, TNS_PERFECT, true ); // bright ghost flash
|
||||||
}
|
}
|
||||||
|
|
||||||
if( hns != HNS_NONE )
|
if( hns != HNS_NONE )
|
||||||
@@ -296,8 +297,8 @@ void Player::Update( float fDeltaTime )
|
|||||||
m_ProTimingDisplay.SetJudgment( ms_error, TNS_MISS );
|
m_ProTimingDisplay.SetJudgment( ms_error, TNS_MISS );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_NoteField.SetHoldNoteLife(i, fLife); // update the NoteField display
|
m_pNoteField->SetHoldNoteLife(i, fLife); // update the NoteField display
|
||||||
m_NoteField.SetHoldNoteScore(i, hns); // update the NoteField display
|
m_pNoteField->SetHoldNoteScore(i, hns); // update the NoteField display
|
||||||
|
|
||||||
SetHoldNoteLife(i, fLife);
|
SetHoldNoteLife(i, fLife);
|
||||||
SetHoldNoteScore(i, hns);
|
SetHoldNoteScore(i, hns);
|
||||||
@@ -319,7 +320,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
// reload noteskin if it has changed
|
// reload noteskin if it has changed
|
||||||
if( m_sLastSeenNoteSkin != GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_sNoteSkin )
|
if( m_sLastSeenNoteSkin != GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_sNoteSkin )
|
||||||
{
|
{
|
||||||
m_NoteField.ReloadNoteSkin();
|
m_pNoteField->ReloadNoteSkin();
|
||||||
m_sLastSeenNoteSkin = GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_sNoteSkin;
|
m_sLastSeenNoteSkin = GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_sNoteSkin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -363,7 +364,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_NoteField.CopyRange( this, BeatToNoteRow(fStartBeat), BeatToNoteRow(fEndBeat), BeatToNoteRow(fStartBeat)-1 );
|
m_pNoteField->CopyRange( this, BeatToNoteRow(fStartBeat), BeatToNoteRow(fEndBeat), BeatToNoteRow(fStartBeat)-1 );
|
||||||
}
|
}
|
||||||
GAMESTATE->m_TransformsToApply[m_PlayerNumber].clear();
|
GAMESTATE->m_TransformsToApply[m_PlayerNumber].clear();
|
||||||
|
|
||||||
@@ -371,7 +372,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
ActorFrame::Update( fDeltaTime );
|
ActorFrame::Update( fDeltaTime );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::DrawPrimitives()
|
void PlayerMinus::DrawPrimitives()
|
||||||
{
|
{
|
||||||
// May have both players in doubles (for battle play); only draw primary player.
|
// May have both players in doubles (for battle play); only draw primary player.
|
||||||
if( GAMESTATE->GetCurrentStyleDef()->m_StyleType == StyleDef::ONE_PLAYER_TWO_CREDITS &&
|
if( GAMESTATE->GetCurrentStyleDef()->m_StyleType == StyleDef::ONE_PLAYER_TWO_CREDITS &&
|
||||||
@@ -401,7 +402,7 @@ void Player::DrawPrimitives()
|
|||||||
DISPLAY->LookAt(Eye, At, Up);
|
DISPLAY->LookAt(Eye, At, Up);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_NoteField.Draw();
|
m_pNoteField->Draw();
|
||||||
|
|
||||||
if( fTilt != 0 )
|
if( fTilt != 0 )
|
||||||
DISPLAY->ExitPerspective();
|
DISPLAY->ExitPerspective();
|
||||||
@@ -419,7 +420,7 @@ void Player::DrawPrimitives()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* It's OK for this function to search a little more than was requested. */
|
/* It's OK for this function to search a little more than was requested. */
|
||||||
int Player::GetClosestNoteDirectional( int col, float fBeat, float fMaxBeatsDistance, int iDirection )
|
int PlayerMinus::GetClosestNoteDirectional( int col, float fBeat, float fMaxBeatsDistance, int iDirection )
|
||||||
{
|
{
|
||||||
// look for the closest matching step
|
// look for the closest matching step
|
||||||
const int iIndexStartLookingAt = BeatToNoteRow( fBeat );
|
const int iIndexStartLookingAt = BeatToNoteRow( fBeat );
|
||||||
@@ -443,7 +444,7 @@ int Player::GetClosestNoteDirectional( int col, float fBeat, float fMaxBeatsDist
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Player::GetClosestNote( int col, float fBeat, float fMaxBeatsAhead, float fMaxBeatsBehind )
|
int PlayerMinus::GetClosestNote( int col, float fBeat, float fMaxBeatsAhead, float fMaxBeatsBehind )
|
||||||
{
|
{
|
||||||
int Fwd = GetClosestNoteDirectional(col, fBeat, fMaxBeatsAhead, 1);
|
int Fwd = GetClosestNoteDirectional(col, fBeat, fMaxBeatsAhead, 1);
|
||||||
int Back = GetClosestNoteDirectional(col, fBeat, fMaxBeatsBehind, -1);
|
int Back = GetClosestNoteDirectional(col, fBeat, fMaxBeatsBehind, -1);
|
||||||
@@ -461,12 +462,12 @@ int Player::GetClosestNote( int col, float fBeat, float fMaxBeatsAhead, float fM
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Player::Step( int col, RageTimer tm )
|
void PlayerMinus::Step( int col, RageTimer tm )
|
||||||
{
|
{
|
||||||
if( GAMESTATE->m_SongOptions.m_LifeType == SongOptions::LIFE_BATTERY && GAMESTATE->m_CurStageStats.bFailed[m_PlayerNumber] ) // Oni dead
|
if( GAMESTATE->m_SongOptions.m_LifeType == SongOptions::LIFE_BATTERY && GAMESTATE->m_CurStageStats.bFailed[m_PlayerNumber] ) // Oni dead
|
||||||
return; // do nothing
|
return; // do nothing
|
||||||
|
|
||||||
//LOG->Trace( "Player::HandlePlayerStep()" );
|
//LOG->Trace( "PlayerMinus::HandlePlayerStep()" );
|
||||||
|
|
||||||
ASSERT( col >= 0 && col <= GetNumTracks() );
|
ASSERT( col >= 0 && col <= GetNumTracks() );
|
||||||
|
|
||||||
@@ -519,7 +520,7 @@ void Player::Step( int col, RageTimer tm )
|
|||||||
{
|
{
|
||||||
m_soundMineExplosion.Play();
|
m_soundMineExplosion.Play();
|
||||||
score = TNS_MISS;
|
score = TNS_MISS;
|
||||||
m_NoteField.TapMine( col, TNS_MISS );
|
m_pNoteField->TapMine( col, TNS_MISS );
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -539,7 +540,7 @@ void Player::Step( int col, RageTimer tm )
|
|||||||
{
|
{
|
||||||
m_soundMineExplosion.Play();
|
m_soundMineExplosion.Play();
|
||||||
score = TNS_MISS;
|
score = TNS_MISS;
|
||||||
m_NoteField.TapMine( col, TNS_MISS );
|
m_pNoteField->TapMine( col, TNS_MISS );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PC_AUTOPLAY:
|
case PC_AUTOPLAY:
|
||||||
@@ -586,10 +587,10 @@ void Player::Step( int col, RageTimer tm )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( bGrayArrowStep )
|
if( bGrayArrowStep )
|
||||||
m_NoteField.Step( col );
|
m_pNoteField->Step( col );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::HandleAutosync(float fNoteOffset)
|
void PlayerMinus::HandleAutosync(float fNoteOffset)
|
||||||
{
|
{
|
||||||
if( !GAMESTATE->m_SongOptions.m_bAutoSync )
|
if( !GAMESTATE->m_SongOptions.m_bAutoSync )
|
||||||
return;
|
return;
|
||||||
@@ -611,9 +612,9 @@ void Player::HandleAutosync(float fNoteOffset)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Player::OnRowCompletelyJudged( int iIndexThatWasSteppedOn )
|
void PlayerMinus::OnRowCompletelyJudged( int iIndexThatWasSteppedOn )
|
||||||
{
|
{
|
||||||
LOG->Trace( "Player::OnRowCompletelyJudged" );
|
LOG->Trace( "PlayerMinus::OnRowCompletelyJudged" );
|
||||||
|
|
||||||
/* Find the minimum score of the row. This will never be TNS_NONE, since this
|
/* Find the minimum score of the row. This will never be TNS_NONE, since this
|
||||||
* function is only called when a row is completed. */
|
* function is only called when a row is completed. */
|
||||||
@@ -636,7 +637,7 @@ void Player::OnRowCompletelyJudged( int iIndexThatWasSteppedOn )
|
|||||||
// If the score is great or better, remove the note from the screen to
|
// If the score is great or better, remove the note from the screen to
|
||||||
// indicate success.
|
// indicate success.
|
||||||
if( score >= TNS_GREAT )
|
if( score >= TNS_GREAT )
|
||||||
m_NoteField.SetTapNote(c, iIndexThatWasSteppedOn, TAP_EMPTY);
|
m_pNoteField->SetTapNote(c, iIndexThatWasSteppedOn, TAP_EMPTY);
|
||||||
|
|
||||||
// show the ghost arrow for this column
|
// show the ghost arrow for this column
|
||||||
switch( score )
|
switch( score )
|
||||||
@@ -646,7 +647,7 @@ void Player::OnRowCompletelyJudged( int iIndexThatWasSteppedOn )
|
|||||||
case TNS_MARVELOUS:
|
case TNS_MARVELOUS:
|
||||||
{
|
{
|
||||||
bool bBright = GAMESTATE->m_CurStageStats.iCurCombo[m_PlayerNumber]>(int)BRIGHT_GHOST_COMBO_THRESHOLD;
|
bool bBright = GAMESTATE->m_CurStageStats.iCurCombo[m_PlayerNumber]>(int)BRIGHT_GHOST_COMBO_THRESHOLD;
|
||||||
m_NoteField.TapNote( c, score, bBright );
|
m_pNoteField->TapNote( c, score, bBright );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -659,7 +660,7 @@ void Player::OnRowCompletelyJudged( int iIndexThatWasSteppedOn )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds )
|
void PlayerMinus::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds )
|
||||||
{
|
{
|
||||||
//LOG->Trace( "Steps::UpdateTapNotesMissedOlderThan(%f)", fMissIfOlderThanThisBeat );
|
//LOG->Trace( "Steps::UpdateTapNotesMissedOlderThan(%f)", fMissIfOlderThanThisBeat );
|
||||||
const float fEarliestTime = GAMESTATE->m_fMusicSeconds - fMissIfOlderThanSeconds;
|
const float fEarliestTime = GAMESTATE->m_fMusicSeconds - fMissIfOlderThanSeconds;
|
||||||
@@ -731,7 +732,7 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Player::CrossedRow( int iNoteRow )
|
void PlayerMinus::CrossedRow( int iNoteRow )
|
||||||
{
|
{
|
||||||
// If we're doing random vanish, randomise notes on the fly.
|
// If we're doing random vanish, randomise notes on the fly.
|
||||||
if(GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].m_fAppearances[PlayerOptions::APPEARANCE_RANDOMVANISH]==1)
|
if(GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].m_fAppearances[PlayerOptions::APPEARANCE_RANDOMVANISH]==1)
|
||||||
@@ -748,7 +749,7 @@ void Player::CrossedRow( int iNoteRow )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::RandomiseNotes( int iNoteRow )
|
void PlayerMinus::RandomiseNotes( int iNoteRow )
|
||||||
{
|
{
|
||||||
int NewNoteRow = (int)(iNoteRow + 50 / GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fScrollSpeed); // change the row to look ahead from based upon their speed mod
|
int NewNoteRow = (int)(iNoteRow + 50 / GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fScrollSpeed); // change the row to look ahead from based upon their speed mod
|
||||||
// check to see if they're at the crossed row
|
// check to see if they're at the crossed row
|
||||||
@@ -774,11 +775,11 @@ void Player::RandomiseNotes( int iNoteRow )
|
|||||||
}
|
}
|
||||||
if(b_updatenotedata)
|
if(b_updatenotedata)
|
||||||
{
|
{
|
||||||
m_NoteField.CopyAll((NoteData*)this);
|
m_pNoteField->CopyAll((NoteData*)this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::HandleTapRowScore( unsigned row )
|
void PlayerMinus::HandleTapRowScore( unsigned row )
|
||||||
{
|
{
|
||||||
TapNoteScore scoreOfLastTap = LastTapNoteScore(row);
|
TapNoteScore scoreOfLastTap = LastTapNoteScore(row);
|
||||||
|
|
||||||
@@ -826,7 +827,7 @@ void Player::HandleTapRowScore( unsigned row )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Player::HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore )
|
void PlayerMinus::HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore )
|
||||||
{
|
{
|
||||||
bool NoCheating = true;
|
bool NoCheating = true;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@@ -857,12 +858,17 @@ void Player::HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float Player::GetMaxStepDistanceSeconds()
|
float PlayerMinus::GetMaxStepDistanceSeconds()
|
||||||
{
|
{
|
||||||
return GAMESTATE->m_SongOptions.m_fMusicRate * PREFSMAN->m_fJudgeWindowBooSeconds * PREFSMAN->m_fJudgeWindowScale;
|
return GAMESTATE->m_SongOptions.m_fMusicRate * PREFSMAN->m_fJudgeWindowBooSeconds * PREFSMAN->m_fJudgeWindowScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::FadeToFail()
|
void PlayerMinus::FadeToFail()
|
||||||
{
|
{
|
||||||
m_NoteField.FadeToFail();
|
m_pNoteField->FadeToFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::Load( PlayerNumber player_no, NoteData* pNoteData, LifeMeter* pLM, CombinedLifeMeter* pCombinedLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pPrimaryScoreKeeper, ScoreKeeper* pSecondaryScoreKeeper )
|
||||||
|
{
|
||||||
|
PlayerMinus::Load( player_no, pNoteData, pLM, pCombinedLM, pScore, pInventory, pPrimaryScoreKeeper, pSecondaryScoreKeeper, &m_NoteField );
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-5
@@ -37,16 +37,16 @@ class Inventory;
|
|||||||
#define SAMPLE_COUNT 16
|
#define SAMPLE_COUNT 16
|
||||||
|
|
||||||
|
|
||||||
class Player : public NoteDataWithScoring, public ActorFrame
|
class PlayerMinus : public NoteDataWithScoring, public ActorFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Player();
|
PlayerMinus();
|
||||||
|
~PlayerMinus();
|
||||||
|
|
||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
virtual void DrawPrimitives();
|
virtual void DrawPrimitives();
|
||||||
~Player();
|
|
||||||
|
|
||||||
void Load( PlayerNumber player_no, NoteData* pNoteData, LifeMeter* pLM, CombinedLifeMeter* pCombinedLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pPrimaryScoreKeeper, ScoreKeeper* pSecondaryScoreKeeper );
|
void Load( PlayerNumber player_no, NoteData* pNoteData, LifeMeter* pLM, CombinedLifeMeter* pCombinedLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pPrimaryScoreKeeper, ScoreKeeper* pSecondaryScoreKeeper, NoteFieldPlus* pNoteField );
|
||||||
void CrossedRow( int iNoteRow );
|
void CrossedRow( int iNoteRow );
|
||||||
void Step( int col, RageTimer tm );
|
void Step( int col, RageTimer tm );
|
||||||
void RandomiseNotes( int iNoteRow );
|
void RandomiseNotes( int iNoteRow );
|
||||||
@@ -71,7 +71,7 @@ protected:
|
|||||||
int m_iOffsetSample; //
|
int m_iOffsetSample; //
|
||||||
|
|
||||||
ArrowBackdrop m_ArrowBackdrop;
|
ArrowBackdrop m_ArrowBackdrop;
|
||||||
NoteFieldPlus m_NoteField;
|
NoteFieldPlus* m_pNoteField;
|
||||||
|
|
||||||
HoldJudgment m_HoldJudgment[MAX_NOTE_TRACKS];
|
HoldJudgment m_HoldJudgment[MAX_NOTE_TRACKS];
|
||||||
|
|
||||||
@@ -94,4 +94,14 @@ protected:
|
|||||||
RageSound m_soundMineExplosion;
|
RageSound m_soundMineExplosion;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Player : public PlayerMinus
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void Load( PlayerNumber player_no, NoteData* pNoteData, LifeMeter* pLM, CombinedLifeMeter* pCombinedLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pPrimaryScoreKeeper, ScoreKeeper* pSecondaryScoreKeeper );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
NoteFieldPlus m_NoteField;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user