added attractModeCollectionTime and attractModeSkipCollection parameters to allow switching collections in attract mode.

This commit is contained in:
Pieter Hulshoff 2019-11-02 14:42:52 +01:00
parent fc52b94ce0
commit fe7f9a77de
4 changed files with 72 additions and 33 deletions

View File

@ -25,6 +25,7 @@ AttractMode::AttractMode()
, isSet_(false)
, elapsedTime_(0)
, elapsedPlaylistTime_(0)
, elapsedCollectionTime_(0)
, activeTime_(0)
{
}
@ -36,20 +37,35 @@ void AttractMode::reset( bool set )
isSet_ = set;
activeTime_ = 0;
if (!set)
elapsedPlaylistTime_ = 0;
{
elapsedPlaylistTime_ = 0;
elapsedCollectionTime_ = 0;
}
}
bool AttractMode::update(float dt, Page &page)
int AttractMode::update(float dt, Page &page)
{
elapsedTime_ += dt;
elapsedPlaylistTime_ += dt;
elapsedTime_ += dt;
elapsedPlaylistTime_ += dt;
elapsedCollectionTime_ += dt;
// Check if it's time to switch playlists
if (!isActive_ && elapsedPlaylistTime_ > idlePlaylistTime && idlePlaylistTime > 0)
{
elapsedTime_ = 0;
elapsedPlaylistTime_ = 0;
return true;
return 1;
}
// Check if it's time to switch collections
if (!isActive_ && elapsedCollectionTime_ > idleCollectionTime && idleCollectionTime > 0)
{
elapsedTime_ = 0;
elapsedPlaylistTime_ = 0;
elapsedCollectionTime_ = 0;
return 2;
}
@ -81,7 +97,7 @@ bool AttractMode::update(float dt, Page &page)
}
}
return false;
return 0;
}

View File

@ -22,10 +22,11 @@ class AttractMode
public:
AttractMode();
void reset( bool set = false );
bool update(float dt, Page &page);
int update(float dt, Page &page);
float idleTime;
float idleNextTime;
float idlePlaylistTime;
float idleCollectionTime;
bool isActive();
bool isSet();
@ -34,5 +35,6 @@ private:
bool isSet_;
float elapsedTime_;
float elapsedPlaylistTime_;
float elapsedCollectionTime_;
float activeTime_;
};

View File

@ -302,21 +302,24 @@ void RetroFE::run( )
return;
}
int attractModeTime = 0;
int attractModeNextTime = 0;
int attractModePlaylistTime = 0;
std::string firstCollection = "Main";
bool running = true;
RETROFE_STATE state = RETROFE_NEW;
int attractModeTime = 0;
int attractModeNextTime = 0;
int attractModePlaylistTime = 0;
int attractModeCollectionTime = 0;
std::string firstCollection = "Main";
bool running = true;
RETROFE_STATE state = RETROFE_NEW;
config_.getProperty( "attractModeTime", attractModeTime );
config_.getProperty( "attractModeNextTime", attractModeNextTime );
config_.getProperty( "attractModePlaylistTime", attractModePlaylistTime );
config_.getProperty( "attractModeCollectionTime", attractModeCollectionTime );
config_.getProperty( "firstCollection", firstCollection );
attract_.idleTime = static_cast<float>(attractModeTime);
attract_.idleNextTime = static_cast<float>(attractModeNextTime);
attract_.idlePlaylistTime = static_cast<float>(attractModePlaylistTime);
attract_.idleTime = static_cast<float>(attractModeTime);
attract_.idleNextTime = static_cast<float>(attractModeNextTime);
attract_.idlePlaylistTime = static_cast<float>(attractModePlaylistTime);
attract_.idleCollectionTime = static_cast<float>(attractModeCollectionTime);
int initializeStatus = 0;
@ -761,28 +764,40 @@ void RetroFE::run( )
case RETROFE_COLLECTION_UP_SCROLL:
if ( currentPage_->isMenuIdle( ) )
{
RETROFE_STATE state_tmp = processUserInput( currentPage_ );
if ( state_tmp == RETROFE_COLLECTION_UP_REQUEST )
std::string attractModeSkipCollection = "";
config_.getProperty( "attractModeSkipCollection", attractModeSkipCollection );
// Check if we need to skip this collection in attract mode or if we can select it
if ( attractMode_ && currentPage_->getSelectedItem( )->name == attractModeSkipCollection )
{
state = RETROFE_COLLECTION_UP_REQUEST;
}
else if ( state_tmp == RETROFE_COLLECTION_DOWN_REQUEST )
{
state = RETROFE_COLLECTION_DOWN_REQUEST;
currentPage_->setScrolling(Page::ScrollDirectionForward);
currentPage_->scroll(true);
currentPage_->updateScrollPeriod( );
}
else
{
currentPage_->setScrolling(Page::ScrollDirectionIdle); // Stop scrolling
nextPageItem_ = currentPage_->getSelectedItem( );
bool enterOnCollection = true;
config_.getProperty( "enterOnCollection", enterOnCollection );
if ( currentPage_->getSelectedItem( )->leaf || !enterOnCollection ) // Current selection is a game or enterOnCollection is not set
RETROFE_STATE state_tmp = processUserInput( currentPage_ );
if ( state_tmp == RETROFE_COLLECTION_UP_REQUEST )
{
state = RETROFE_HIGHLIGHT_REQUEST;
state = RETROFE_COLLECTION_UP_REQUEST;
}
else // Current selection is a menu
else if ( state_tmp == RETROFE_COLLECTION_DOWN_REQUEST )
{
state = RETROFE_COLLECTION_HIGHLIGHT_EXIT;
state = RETROFE_COLLECTION_DOWN_REQUEST;
}
else
{
currentPage_->setScrolling(Page::ScrollDirectionIdle); // Stop scrolling
nextPageItem_ = currentPage_->getSelectedItem( );
bool enterOnCollection = true;
config_.getProperty( "enterOnCollection", enterOnCollection );
if ( currentPage_->getSelectedItem( )->leaf || !enterOnCollection ) // Current selection is a game or enterOnCollection is not set
{
state = RETROFE_HIGHLIGHT_REQUEST;
}
else // Current selection is a menu
{
state = RETROFE_COLLECTION_HIGHLIGHT_EXIT;
}
}
}
}
@ -1178,7 +1193,8 @@ void RetroFE::run( )
{
if (!splashMode)
{
if (attract_.update( deltaTime, *currentPage_ ))
int attractReturn = attract_.update( deltaTime, *currentPage_ );
if (attractReturn == 1) // Change playlist
{
attract_.reset( attract_.isSet( ) );
currentPage_->nextPlaylist( );
@ -1188,6 +1204,11 @@ void RetroFE::run( )
currentPage_->nextPlaylist( );
state = RETROFE_PLAYLIST_REQUEST;
}
if (attractReturn == 2) // Change collection
{
attract_.reset( attract_.isSet( ) );
state = RETROFE_COLLECTION_UP_REQUEST;
}
}
if ( menuMode_ )
{

View File

@ -21,7 +21,7 @@
std::string retrofe_version_major = "0";
std::string retrofe_version_minor = "9";
std::string retrofe_version_build = "11";
std::string retrofe_version_build = "12";
std::string Version::getString( )