diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index edbbe56..ba4a9f9 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -773,20 +773,61 @@ void RetroFE::run( ) else { currentPage_->setScrolling(Page::ScrollDirectionIdle); // Stop scrolling + nextPageItem_ = currentPage_->getSelectedItem( ); if ( currentPage_->getSelectedItem( )->leaf ) // Current selection is a game { - state = RETROFE_BACK_MENU_ENTER; + state = RETROFE_HIGHLIGHT_REQUEST; } else // Current selection is a menu { - nextPageItem_ = currentPage_->getSelectedItem( ); - state = RETROFE_NEXT_PAGE_REQUEST; + state = RETROFE_COLLECTION_HIGHLIGHT_EXIT; } } } break; + // Start onHighlightExit animation + case RETROFE_COLLECTION_HIGHLIGHT_REQUEST: + currentPage_->highlightExit( ); + state = RETROFE_COLLECTION_HIGHLIGHT_EXIT; + break; + + // Wait for onHighlightExit animation to finish; load art + case RETROFE_COLLECTION_HIGHLIGHT_EXIT: + if (currentPage_->isIdle( )) + { + currentPage_->highlightLoadArt( ); + state = RETROFE_COLLECTION_HIGHLIGHT_LOAD_ART; + } + break; + + // Start onHighlightEnter animation + case RETROFE_COLLECTION_HIGHLIGHT_LOAD_ART: + currentPage_->highlightEnter( ); + state = RETROFE_COLLECTION_HIGHLIGHT_ENTER; + break; + + // Wait for onHighlightEnter animation to finish + case RETROFE_COLLECTION_HIGHLIGHT_ENTER: + if (currentPage_->isIdle( )) + { + RETROFE_STATE state_tmp = processUserInput( currentPage_ ); + if ( state_tmp == RETROFE_COLLECTION_UP_REQUEST ) + { + state = RETROFE_COLLECTION_UP_REQUEST; + } + else if ( state_tmp == RETROFE_COLLECTION_DOWN_REQUEST ) + { + state = RETROFE_COLLECTION_DOWN_REQUEST; + } + else + { + state = RETROFE_NEXT_PAGE_REQUEST; + } + } + break; + // Start exit animation case RETROFE_COLLECTION_DOWN_REQUEST: if ( !pages_.empty( ) && currentPage_->getMenuDepth( ) == 1) // Inside a collection with a different layout @@ -889,14 +930,14 @@ void RetroFE::run( ) else { currentPage_->setScrolling(Page::ScrollDirectionIdle); // Stop scrolling + nextPageItem_ = currentPage_->getSelectedItem( ); if ( currentPage_->getSelectedItem( )->leaf ) // Current selection is a game { - state = RETROFE_BACK_MENU_ENTER; + state = RETROFE_HIGHLIGHT_REQUEST; } else // Current selection is a menu { - nextPageItem_ = currentPage_->getSelectedItem( ); - state = RETROFE_NEXT_PAGE_REQUEST; + state = RETROFE_COLLECTION_HIGHLIGHT_EXIT; } } } diff --git a/RetroFE/Source/RetroFE.h b/RetroFE/Source/RetroFE.h index b214df8..ad9928e 100644 --- a/RetroFE/Source/RetroFE.h +++ b/RetroFE/Source/RetroFE.h @@ -83,6 +83,10 @@ private: RETROFE_COLLECTION_UP_MENU_ENTER, RETROFE_COLLECTION_UP_ENTER, RETROFE_COLLECTION_UP_SCROLL, + RETROFE_COLLECTION_HIGHLIGHT_REQUEST, + RETROFE_COLLECTION_HIGHLIGHT_EXIT, + RETROFE_COLLECTION_HIGHLIGHT_LOAD_ART, + RETROFE_COLLECTION_HIGHLIGHT_ENTER, RETROFE_COLLECTION_DOWN_REQUEST, RETROFE_COLLECTION_DOWN_EXIT, RETROFE_COLLECTION_DOWN_MENU_ENTER, diff --git a/RetroFE/Source/Version.cpp b/RetroFE/Source/Version.cpp index aaf8ec6..e233708 100644 --- a/RetroFE/Source/Version.cpp +++ b/RetroFE/Source/Version.cpp @@ -21,7 +21,7 @@ std::string retrofe_version_major = "0"; std::string retrofe_version_minor = "9"; -std::string retrofe_version_build = "9"; +std::string retrofe_version_build = "10"; std::string Version::getString( )