From 058f03e495414ca1aa2db4df72e5c6197d1acbb6 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 12 Dec 2011 21:27:32 -0500 Subject: [PATCH] Allow versus oni graceful failure. --- Docs/Changelog_sm5.txt | 2 ++ src/Player.cpp | 4 ++-- src/ScreenGameplay.cpp | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 493c5dc371..06c2e0177a 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -11,6 +11,8 @@ StepMania 5.0 $next | 20111xxx 2011/12/12 ---------- * [ScreenEdit] Add the GAMESTATE:InStepEditor LUA binding. [Wolfman2000] +* [Player, ScreenGameplay] Allow failing on Oni without crashing. This one + took awhile. [Wolfman2000] 2011/12/11 ---------- diff --git a/src/Player.cpp b/src/Player.cpp index a02c11ceac..97a62e2f91 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -799,7 +799,7 @@ void Player::Update( float fDeltaTime ) //LOG->Trace( "Player::Update(%f)", fDeltaTime ); - if( GAMESTATE->m_pCurSong==NULL ) + if( GAMESTATE->m_pCurSong==NULL || IsOniDead() ) return; ActorFrame::Update( fDeltaTime ); @@ -1520,7 +1520,7 @@ void Player::DrawPrimitives() DISPLAY->LoadMenuPerspective( 45, SCREEN_WIDTH, SCREEN_HEIGHT, SCALE(fSkew,0.f,1.f,this->GetX(),SCREEN_CENTER_X), fCenterY ); - if( m_pNoteField ) + if( m_pNoteField && !IsOniDead() ) { float fOriginalY = m_pNoteField->GetY(); diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index 6e71bf91fe..c955135844 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -1682,7 +1682,9 @@ void ScreenGameplay::Update( float fDeltaTime ) // kill them! SOUND->PlayOnceFromDir( THEME->GetPathS(m_sName,"oni die") ); pi->ShowOniGameOver(); + int tracks = pi->m_NoteData.GetNumTracks(); pi->m_NoteData.Init(); // remove all notes and scoring + pi->m_NoteData.SetNumTracks(tracks); // reset the number of tracks. pi->m_pPlayer->FadeToFail(); // tell the NoteField to fade to white } }