diff --git a/RetroFE/Source/Execute/AttractMode.cpp b/RetroFE/Source/Execute/AttractMode.cpp index 0371275..42f20a6 100644 --- a/RetroFE/Source/Execute/AttractMode.cpp +++ b/RetroFE/Source/Execute/AttractMode.cpp @@ -24,6 +24,7 @@ AttractMode::AttractMode() , isActive_(false) , isSet_(false) , elapsedTime_(0) + , elapsedPlaylistTime_(0) , activeTime_(0) { } @@ -34,21 +35,23 @@ void AttractMode::reset( bool set ) isActive_ = false; isSet_ = set; activeTime_ = 0; + if (!set) + elapsedPlaylistTime_ = 0; } -void AttractMode::update(float dt, Page &page) +bool AttractMode::update(float dt, Page &page) { - elapsedTime_ += dt; + + elapsedTime_ += dt; + elapsedPlaylistTime_ += dt; + + // Check if it's time to switch playlists + if (!isActive_ && elapsedPlaylistTime_ > idlePlaylistTime && idlePlaylistTime > 0) + return true; + // enable attract mode when idling for the expected time. Disable if idle time is set to 0. - if(!isActive_ && (elapsedTime_ > idleTime && idleTime > 0)) - { - isActive_ = true; - isSet_ = true; - elapsedTime_ = 0; - activeTime_ = ((float)((1000+rand()) % 5000)) / 1000; - } - if(!isActive_ && isSet_ && elapsedTime_ > idleNextTime && idleNextTime > 0) + if(!isActive_ && ((elapsedTime_ > idleTime && idleTime > 0) || (isSet_ && elapsedTime_ > idleNextTime && idleNextTime > 0))) { isActive_ = true; isSet_ = true; @@ -72,6 +75,9 @@ void AttractMode::update(float dt, Page &page) isActive_ = false; } } + + return false; + } diff --git a/RetroFE/Source/Execute/AttractMode.h b/RetroFE/Source/Execute/AttractMode.h index 82ce41d..e11afa7 100644 --- a/RetroFE/Source/Execute/AttractMode.h +++ b/RetroFE/Source/Execute/AttractMode.h @@ -22,9 +22,10 @@ class AttractMode public: AttractMode(); void reset( bool set = false ); - void update(float dt, Page &page); + bool update(float dt, Page &page); float idleTime; float idleNextTime; + float idlePlaylistTime; bool isActive(); bool isSet(); @@ -32,6 +33,6 @@ private: bool isActive_; bool isSet_; float elapsedTime_; + float elapsedPlaylistTime_; float activeTime_; - }; diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index 5adff97..7cd70c8 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -301,18 +301,21 @@ void RetroFE::run( ) return; } - int attractModeTime = 0; - int attractModeNextTime = 0; + int attractModeTime = 0; + int attractModeNextTime = 0; + int attractModePlaylistTime = 0; std::string firstCollection = "Main"; - bool running = true; - RETROFE_STATE state = RETROFE_NEW; + bool running = true; + RETROFE_STATE state = RETROFE_NEW; config_.getProperty( "attractModeTime", attractModeTime ); config_.getProperty( "attractModeNextTime", attractModeNextTime ); + config_.getProperty( "attractModePlaylistTime", attractModePlaylistTime ); config_.getProperty( "firstCollection", firstCollection ); - attract_.idleTime = static_cast(attractModeTime); - attract_.idleNextTime = static_cast(attractModeNextTime); + attract_.idleTime = static_cast(attractModeTime); + attract_.idleNextTime = static_cast(attractModeNextTime); + attract_.idlePlaylistTime = static_cast(attractModePlaylistTime); int initializeStatus = 0; @@ -888,7 +891,12 @@ void RetroFE::run( ) { if (!splashMode) { - attract_.update( deltaTime, *currentPage_ ); + if (attract_.update( deltaTime, *currentPage_ )) + { + attract_.reset( ); + currentPage_->nextPlaylist( ); + state = RETROFE_PLAYLIST_REQUEST; + } } if ( menuMode_ ) { diff --git a/RetroFE/Source/Version.cpp b/RetroFE/Source/Version.cpp index 67eb7a4..ee098cd 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 = "8"; -std::string retrofe_version_build = "27"; +std::string retrofe_version_build = "28"; std::string Version::getString( )