From c8a12bac13becbf86329a0a808bd93f32ee4f22c Mon Sep 17 00:00:00 2001 From: Pieter Hulshoff Date: Thu, 23 Apr 2020 15:57:15 +0200 Subject: [PATCH] Added attractModePlaylistCollectionNumber to switch playlists after a certain number of collection changes in Attract Mode. --- RetroFE/Source/RetroFE.cpp | 59 +++++++++++++++++++++++++++++--------- RetroFE/Source/RetroFE.h | 1 + RetroFE/Source/Version.cpp | 2 +- 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index 6025f6d..b759a3e 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -71,8 +71,9 @@ RetroFE::RetroFE( Configuration &c ) , keyDelayTime_(.3f) , reboot_(false) { - menuMode_ = false; - attractMode_ = false; + menuMode_ = false; + attractMode_ = false; + attractModePlaylistCollectionNumber_ = 0; } @@ -734,20 +735,35 @@ bool RetroFE::run( ) if (rememberMenu && lastMenuPlaylists_.find( currentPage_->getCollectionName( ) ) != lastMenuPlaylists_.end( )) { - currentPage_->selectPlaylist( lastMenuPlaylists_[currentPage_->getCollectionName( )] ); // Switch to last playlist + currentPage_->selectPlaylist( lastMenuPlaylists_[currentPage_->getCollectionName( )] ); // Switch to last playlist + currentPage_->setScrollOffsetIndex( lastMenuOffsets_[currentPage_->getCollectionName( )] ); } else { currentPage_->selectPlaylist( autoPlaylist ); } - if ( rememberMenu && lastMenuOffsets_.find( currentPage_->getCollectionName( ) ) != lastMenuOffsets_.end( ) ) - { - currentPage_->setScrollOffsetIndex( lastMenuOffsets_[currentPage_->getCollectionName( )] ); - } - - currentPage_->onNewItemSelected( ); state = RETROFE_COLLECTION_DOWN_MENU_ENTER; + currentPage_->onNewItemSelected( ); + + if ( attractMode_ ) // Check playlist change in attract mode + { + attractModePlaylistCollectionNumber_ += 1; + int attractModePlaylistCollectionNumber = 0; + config_.getProperty( "attractModePlaylistCollectionNumber", attractModePlaylistCollectionNumber ); + // Check if playlist should be changed + if ( attractModePlaylistCollectionNumber_ > 0 && attractModePlaylistCollectionNumber_ >= attractModePlaylistCollectionNumber ) + { + attractModePlaylistCollectionNumber_ = 0; + currentPage_->nextPlaylist( ); + std::string attractModeSkipPlaylist = ""; + config_.getProperty( "attractModeSkipPlaylist", attractModeSkipPlaylist ); + if (currentPage_->getPlaylistName( ) == attractModeSkipPlaylist) + currentPage_->nextPlaylist( ); + state = RETROFE_PLAYLIST_REQUEST; + } + } + } break; @@ -763,9 +779,14 @@ bool RetroFE::run( ) case RETROFE_COLLECTION_DOWN_ENTER: if ( currentPage_->isIdle( ) ) { - currentPage_->setScrolling(Page::ScrollDirectionForward); - currentPage_->scroll(true); - currentPage_->updateScrollPeriod( ); + int attractModePlaylistCollectionNumber = 0; + config_.getProperty( "attractModePlaylistCollectionNumber", attractModePlaylistCollectionNumber ); + if (!( attractMode_ && attractModePlaylistCollectionNumber > 0 && attractModePlaylistCollectionNumber_ == 0 )) + { + currentPage_->setScrolling(Page::ScrollDirectionForward); + currentPage_->scroll(true); + currentPage_->updateScrollPeriod( ); + } state = RETROFE_COLLECTION_DOWN_SCROLL; } break; @@ -1346,14 +1367,24 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput( Page *page ) (input_.keystate(UserInput::KeyCodeCollectionLeft) && (!page->isHorizontalScroll( ) || !input_.keystate(UserInput::KeyCodeLeft)))) { attract_.reset( ); - state = RETROFE_COLLECTION_UP_REQUEST; + bool backOnCollection = false; + config_.getProperty( "backOnCollection", backOnCollection ); + if ( page->getMenuDepth( ) == 1 || !backOnCollection ) + state = RETROFE_COLLECTION_UP_REQUEST; + else + state = RETROFE_BACK_REQUEST; } else if ((input_.keystate(UserInput::KeyCodeCollectionDown) && ( page->isHorizontalScroll( ) || !input_.keystate(UserInput::KeyCodeDown))) || (input_.keystate(UserInput::KeyCodeCollectionRight) && (!page->isHorizontalScroll( ) || !input_.keystate(UserInput::KeyCodeRight)))) { attract_.reset( ); - state = RETROFE_COLLECTION_DOWN_REQUEST; + bool backOnCollection = false; + config_.getProperty( "backOnCollection", backOnCollection ); + if ( page->getMenuDepth( ) == 1 || !backOnCollection ) + state = RETROFE_COLLECTION_DOWN_REQUEST; + else + state = RETROFE_BACK_REQUEST; } else if (input_.keystate(UserInput::KeyCodePageUp)) diff --git a/RetroFE/Source/RetroFE.h b/RetroFE/Source/RetroFE.h index 33b0e3f..fac2af7 100644 --- a/RetroFE/Source/RetroFE.h +++ b/RetroFE/Source/RetroFE.h @@ -134,6 +134,7 @@ private: AttractMode attract_; bool menuMode_; bool attractMode_; + int attractModePlaylistCollectionNumber_; bool reboot_; std::map lastMenuOffsets_; diff --git a/RetroFE/Source/Version.cpp b/RetroFE/Source/Version.cpp index 9f77dd6..3d4632e 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 = "34"; +std::string retrofe_version_build = "35"; std::string Version::getString( )