diff --git a/RetroFE/Source/Execute/AttractMode.cpp b/RetroFE/Source/Execute/AttractMode.cpp index 44e827b..0371275 100644 --- a/RetroFE/Source/Execute/AttractMode.cpp +++ b/RetroFE/Source/Execute/AttractMode.cpp @@ -28,11 +28,11 @@ AttractMode::AttractMode() { } -void AttractMode::reset() +void AttractMode::reset( bool set ) { elapsedTime_ = 0; isActive_ = false; - isSet_ = false; + isSet_ = set; activeTime_ = 0; } @@ -41,7 +41,14 @@ void AttractMode::update(float dt, Page &page) elapsedTime_ += dt; // enable attract mode when idling for the expected time. Disable if idle time is set to 0. - if(!isActive_ && ((elapsedTime_ > idleTime && idleTime > 0) || (isSet_ && elapsedTime_ > idleNextTime && idleNextTime > 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) { isActive_ = true; isSet_ = true; @@ -72,3 +79,9 @@ bool AttractMode::isActive() { return isActive_; } + + +bool AttractMode::isSet() +{ + return isSet_; +} diff --git a/RetroFE/Source/Execute/AttractMode.h b/RetroFE/Source/Execute/AttractMode.h index f5c0ddf..82ce41d 100644 --- a/RetroFE/Source/Execute/AttractMode.h +++ b/RetroFE/Source/Execute/AttractMode.h @@ -21,11 +21,12 @@ class AttractMode { public: AttractMode(); - void reset(); + void reset( bool set = false ); void update(float dt, Page &page); float idleTime; float idleNextTime; bool isActive(); + bool isSet(); private: bool isActive_; diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index 62d4c25..5adff97 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -1141,7 +1141,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput( Page *page ) page->resetScrollPeriod( ); if (page->isMenuScrolling( )) { - attract_.reset( ); + attract_.reset( attract_.isSet( ) ); state = RETROFE_HIGHLIGHT_REQUEST; } }