fix FadeToFail
do FadeToFail for LIFE_TIME
This commit is contained in:
@@ -169,9 +169,19 @@ void NoteField::Update( float fDeltaTime )
|
||||
cur->m_ReceptorArrowRow.Update( fDeltaTime );
|
||||
cur->m_GhostArrowRow.Update( fDeltaTime );
|
||||
|
||||
cur->m_ReceptorArrowRow.Update( fDeltaTime );
|
||||
|
||||
if( m_fPercentFadeToFail >= 0 )
|
||||
m_fPercentFadeToFail = min( m_fPercentFadeToFail + fDeltaTime/1.5f, 1 ); // take 1.5 seconds to totally fade
|
||||
|
||||
|
||||
// Update fade to failed
|
||||
FOREACHM( CString, NoteDisplayCols*, m_NoteDisplays, iter )
|
||||
{
|
||||
iter->second->m_ReceptorArrowRow.SetFadeToFailPercent( m_fPercentFadeToFail );
|
||||
}
|
||||
|
||||
|
||||
RefreshBeatToNoteSkin();
|
||||
|
||||
/*
|
||||
|
||||
@@ -273,7 +273,7 @@ public:
|
||||
bool m_bSmoothLines;
|
||||
CString m_sSoundDrivers;
|
||||
int m_iSoundWriteAhead;
|
||||
CString m_iSoundDevice;
|
||||
CString m_iSoundDevice;
|
||||
float m_fSoundVolume;
|
||||
int m_iSoundResampleQuality;
|
||||
CString m_sInputDrivers;
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
ReceptorArrowRow::ReceptorArrowRow()
|
||||
{
|
||||
m_iNumCols = 0;
|
||||
m_pPlayerState = NULL;
|
||||
m_fYReverseOffsetPixels = 0;
|
||||
m_fFadeToFailPercent = 0;
|
||||
}
|
||||
|
||||
void ReceptorArrowRow::Load( const PlayerState* pPlayerState, float fYReverseOffset )
|
||||
@@ -37,7 +40,10 @@ void ReceptorArrowRow::Update( float fDeltaTime )
|
||||
for( int c=0; c<m_iNumCols; c++ )
|
||||
{
|
||||
m_ReceptorArrow[c].Update( fDeltaTime );
|
||||
m_ReceptorArrow[c].SetBaseAlpha( 1 - m_pPlayerState->m_CurrentPlayerOptions.m_fDark );
|
||||
|
||||
// m_fDark==1 or m_fFadeToFailPercent==1 should make fBaseAlpha==0
|
||||
float fBaseAlpha = (1 - m_pPlayerState->m_CurrentPlayerOptions.m_fDark) * (1 - m_fFadeToFailPercent);
|
||||
m_ReceptorArrow[c].SetBaseAlpha( fBaseAlpha );
|
||||
|
||||
// set arrow XYZ
|
||||
const float fX = ArrowEffects::GetXPos( m_pPlayerState, c, 0 );
|
||||
|
||||
@@ -24,10 +24,13 @@ public:
|
||||
void Step( int iCol, TapNoteScore score );
|
||||
void SetPressed( int iCol );
|
||||
|
||||
void SetFadeToFailPercent( float fFadeToFailPercent ) { m_fFadeToFailPercent = fFadeToFailPercent; }
|
||||
|
||||
protected:
|
||||
int m_iNumCols;
|
||||
const PlayerState* m_pPlayerState;
|
||||
float m_fYReverseOffsetPixels;
|
||||
float m_fFadeToFailPercent;
|
||||
|
||||
ReceptorArrow m_ReceptorArrow[MAX_NOTE_TRACKS];
|
||||
};
|
||||
|
||||
@@ -1411,7 +1411,7 @@ void ScreenGameplay::Update( float fDeltaTime )
|
||||
{
|
||||
case STATE_DANCING:
|
||||
/* Set STATSMAN->m_CurStageStats.bFailed for failed players. In, FAIL_IMMEDIATE, send
|
||||
* SM_BeginFailed if all players failed, and kill dead Oni players. */
|
||||
* SM_BeginFailed if all players failed, and kill dead Oni players. */
|
||||
FOREACH_EnabledPlayer( pn )
|
||||
{
|
||||
SongOptions::FailType ft = GAMESTATE->GetPlayerFailType(pn);
|
||||
@@ -1436,8 +1436,18 @@ void ScreenGameplay::Update( float fDeltaTime )
|
||||
LOG->Trace("Player %d failed", (int)pn);
|
||||
STATSMAN->m_CurStageStats.m_player[pn].bFailed = true; // fail
|
||||
|
||||
if( lt == SongOptions::LIFE_BATTERY &&
|
||||
ft == SongOptions::FAIL_IMMEDIATE )
|
||||
//
|
||||
// Check for and do Oni die.
|
||||
//
|
||||
bool bAllowOniDie = false;
|
||||
switch( lt )
|
||||
{
|
||||
case SongOptions::LIFE_BATTERY:
|
||||
case SongOptions::LIFE_TIME:
|
||||
bAllowOniDie = true;
|
||||
break;
|
||||
}
|
||||
if( bAllowOniDie && ft == SongOptions::FAIL_IMMEDIATE )
|
||||
{
|
||||
if( !STATSMAN->m_CurStageStats.AllFailedEarlier() ) // if not the last one to fail
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user