Added support for attract mode playlist switch using attractModePlaylistTime configuration option.

This commit is contained in:
Pieter Hulshoff 2019-04-15 22:09:29 +02:00
parent 801434188b
commit 8876c0989e
4 changed files with 35 additions and 20 deletions

View File

@ -24,6 +24,7 @@ AttractMode::AttractMode()
, isActive_(false) , isActive_(false)
, isSet_(false) , isSet_(false)
, elapsedTime_(0) , elapsedTime_(0)
, elapsedPlaylistTime_(0)
, activeTime_(0) , activeTime_(0)
{ {
} }
@ -34,21 +35,23 @@ void AttractMode::reset( bool set )
isActive_ = false; isActive_ = false;
isSet_ = set; isSet_ = set;
activeTime_ = 0; 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. // enable attract mode when idling for the expected time. Disable if idle time is set to 0.
if(!isActive_ && (elapsedTime_ > idleTime && idleTime > 0)) if(!isActive_ && ((elapsedTime_ > idleTime && idleTime > 0) || (isSet_ && elapsedTime_ > idleNextTime && idleNextTime > 0)))
{
isActive_ = true;
isSet_ = true;
elapsedTime_ = 0;
activeTime_ = ((float)((1000+rand()) % 5000)) / 1000;
}
if(!isActive_ && isSet_ && elapsedTime_ > idleNextTime && idleNextTime > 0)
{ {
isActive_ = true; isActive_ = true;
isSet_ = true; isSet_ = true;
@ -72,6 +75,9 @@ void AttractMode::update(float dt, Page &page)
isActive_ = false; isActive_ = false;
} }
} }
return false;
} }

View File

@ -22,9 +22,10 @@ class AttractMode
public: public:
AttractMode(); AttractMode();
void reset( bool set = false ); void reset( bool set = false );
void update(float dt, Page &page); bool update(float dt, Page &page);
float idleTime; float idleTime;
float idleNextTime; float idleNextTime;
float idlePlaylistTime;
bool isActive(); bool isActive();
bool isSet(); bool isSet();
@ -32,6 +33,6 @@ private:
bool isActive_; bool isActive_;
bool isSet_; bool isSet_;
float elapsedTime_; float elapsedTime_;
float elapsedPlaylistTime_;
float activeTime_; float activeTime_;
}; };

View File

@ -301,18 +301,21 @@ void RetroFE::run( )
return; return;
} }
int attractModeTime = 0; int attractModeTime = 0;
int attractModeNextTime = 0; int attractModeNextTime = 0;
int attractModePlaylistTime = 0;
std::string firstCollection = "Main"; std::string firstCollection = "Main";
bool running = true; bool running = true;
RETROFE_STATE state = RETROFE_NEW; RETROFE_STATE state = RETROFE_NEW;
config_.getProperty( "attractModeTime", attractModeTime ); config_.getProperty( "attractModeTime", attractModeTime );
config_.getProperty( "attractModeNextTime", attractModeNextTime ); config_.getProperty( "attractModeNextTime", attractModeNextTime );
config_.getProperty( "attractModePlaylistTime", attractModePlaylistTime );
config_.getProperty( "firstCollection", firstCollection ); config_.getProperty( "firstCollection", firstCollection );
attract_.idleTime = static_cast<float>(attractModeTime); attract_.idleTime = static_cast<float>(attractModeTime);
attract_.idleNextTime = static_cast<float>(attractModeNextTime); attract_.idleNextTime = static_cast<float>(attractModeNextTime);
attract_.idlePlaylistTime = static_cast<float>(attractModePlaylistTime);
int initializeStatus = 0; int initializeStatus = 0;
@ -888,7 +891,12 @@ void RetroFE::run( )
{ {
if (!splashMode) if (!splashMode)
{ {
attract_.update( deltaTime, *currentPage_ ); if (attract_.update( deltaTime, *currentPage_ ))
{
attract_.reset( );
currentPage_->nextPlaylist( );
state = RETROFE_PLAYLIST_REQUEST;
}
} }
if ( menuMode_ ) if ( menuMode_ )
{ {

View File

@ -21,7 +21,7 @@
std::string retrofe_version_major = "0"; std::string retrofe_version_major = "0";
std::string retrofe_version_minor = "8"; std::string retrofe_version_minor = "8";
std::string retrofe_version_build = "27"; std::string retrofe_version_build = "28";
std::string Version::getString( ) std::string Version::getString( )