Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,8 @@ RetroFE/xcode/retrofe.xcodeproj/project.xcworkspace/xcuserdata/aiden.xcuserdatad
!RetroFE/ThirdPartyMac/libminizip.dylib
!RetroFE/ThirdPartyMac/libusb-1.0.0.dylib
RetroFE/Source/autogen/versioning.h
RetroFE/Source/build/
CMakeFiles/
CMakeCache.txt
cmake_install.cmake
Makefile
133 changes: 99 additions & 34 deletions RetroFE/Source/RetroFE.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ RetroFE::RetroFE(Configuration& c)
: initialized(false), initializeError(false), initializeThread(NULL), config_(c), db_(NULL), metadb_(NULL),
input_(config_), currentPage_(NULL), keyInputDisable_(0), currentTime_(0), lastLaunchReturnTime_(0),
keyLastTime_(0), keyDelayTime_(.3f), reboot_(false), kioskLock_(false), paused_(false), buildInfo_(false),
collectionInfo_(false), gameInfo_(false)
collectionInfo_(false), gameInfo_(false), pendingScrollState_(RETROFE_IDLE)
{
menuMode_ = false;
attractMode_ = false;
Expand Down Expand Up @@ -764,7 +764,15 @@ bool RetroFE::run()

case RETROFE_GAMEINFO_EXIT:
currentPage_->gameInfoExit();
state = RETROFE_PLAYLIST_ENTER;
if (pendingScrollState_ != RETROFE_IDLE)
{
state = pendingScrollState_;
pendingScrollState_ = RETROFE_IDLE;
}
else
{
state = RETROFE_PLAYLIST_ENTER;
}
break;

case RETROFE_COLLECTIONINFO_ENTER:
Expand All @@ -774,7 +782,15 @@ bool RetroFE::run()

case RETROFE_COLLECIONINFO_EXIT:
currentPage_->collectionInfoExit();
state = RETROFE_PLAYLIST_ENTER;
if (pendingScrollState_ != RETROFE_IDLE)
{
state = pendingScrollState_;
pendingScrollState_ = RETROFE_IDLE;
}
else
{
state = RETROFE_PLAYLIST_ENTER;
}
break;

case RETROFE_BUILDINFO_ENTER:
Expand All @@ -784,7 +800,15 @@ bool RetroFE::run()

case RETROFE_BUILDINFO_EXIT:
currentPage_->buildInfoExit();
state = RETROFE_PLAYLIST_ENTER;
if (pendingScrollState_ != RETROFE_IDLE)
{
state = pendingScrollState_;
pendingScrollState_ = RETROFE_IDLE;
}
else
{
state = RETROFE_PLAYLIST_ENTER;
}
break;

case RETROFE_PLAYLIST_NEXT:
Expand Down Expand Up @@ -899,7 +923,7 @@ bool RetroFE::run()
}
break;
}
resetInfoToggle();
(void)resetInfoToggle();
state = RETROFE_QUICKLIST_PAGE_REQUEST;
break;
case RETROFE_SETTINGS_REQUEST:
Expand Down Expand Up @@ -968,7 +992,7 @@ bool RetroFE::run()
}
break;
}
resetInfoToggle();
(void)resetInfoToggle();
state = RETROFE_SETTINGS_PAGE_REQUEST;
break;
case RETROFE_PLAYLIST_PREV_CYCLE:
Expand Down Expand Up @@ -2345,7 +2369,7 @@ bool RetroFE::run()
// hide toggle before attract mode
if (buildInfo_ || collectionInfo_ || gameInfo_)
{
resetInfoToggle();
(void)resetInfoToggle();
}
else
{
Expand Down Expand Up @@ -2556,7 +2580,12 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
attract_.reset();
if (infoExitOnScroll)
{
resetInfoToggle();
RETROFE_STATE exitState = resetInfoToggle();
if (exitState != RETROFE_IDLE)
{
pendingScrollState_ = RETROFE_SCROLL_PLAYLIST_FORWARD;
return exitState;
}
}
return RETROFE_SCROLL_PLAYLIST_FORWARD;
}
Expand All @@ -2567,7 +2596,12 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
attract_.reset();
if (infoExitOnScroll)
{
resetInfoToggle();
RETROFE_STATE exitState = resetInfoToggle();
if (exitState != RETROFE_IDLE)
{
pendingScrollState_ = RETROFE_SCROLL_PLAYLIST_BACK;
return exitState;
}
}
return RETROFE_SCROLL_PLAYLIST_BACK;
}
Expand All @@ -2582,7 +2616,12 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
attract_.reset();
if (infoExitOnScroll)
{
resetInfoToggle();
RETROFE_STATE exitState = resetInfoToggle();
if (exitState != RETROFE_IDLE)
{
pendingScrollState_ = RETROFE_SCROLL_FORWARD;
return exitState;
}
}
return RETROFE_SCROLL_FORWARD;
}
Expand All @@ -2595,7 +2634,12 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
attract_.reset();
if (infoExitOnScroll)
{
resetInfoToggle();
RETROFE_STATE exitState = resetInfoToggle();
if (exitState != RETROFE_IDLE)
{
pendingScrollState_ = RETROFE_SCROLL_BACK;
return exitState;
}
}
return RETROFE_SCROLL_BACK;
}
Expand All @@ -2612,7 +2656,12 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
attract_.reset();
if (infoExitOnScroll)
{
resetInfoToggle();
RETROFE_STATE exitState = resetInfoToggle();
if (exitState != RETROFE_IDLE)
{
pendingScrollState_ = RETROFE_SCROLL_PLAYLIST_FORWARD;
return exitState;
}
}
return RETROFE_SCROLL_PLAYLIST_FORWARD;
}
Expand All @@ -2623,7 +2672,12 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
attract_.reset();
if (infoExitOnScroll)
{
resetInfoToggle();
RETROFE_STATE exitState = resetInfoToggle();
if (exitState != RETROFE_IDLE)
{
pendingScrollState_ = RETROFE_SCROLL_PLAYLIST_BACK;
return exitState;
}
}
return RETROFE_SCROLL_PLAYLIST_BACK;
}
Expand All @@ -2638,7 +2692,12 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
attract_.reset();
if (infoExitOnScroll)
{
resetInfoToggle();
RETROFE_STATE exitState = resetInfoToggle();
if (exitState != RETROFE_IDLE)
{
pendingScrollState_ = RETROFE_SCROLL_FORWARD;
return exitState;
}
}
return RETROFE_SCROLL_FORWARD;
}
Expand All @@ -2651,7 +2710,12 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
attract_.reset();
if (infoExitOnScroll)
{
resetInfoToggle();
RETROFE_STATE exitState = resetInfoToggle();
if (exitState != RETROFE_IDLE)
{
pendingScrollState_ = RETROFE_SCROLL_BACK;
return exitState;
}
}
return RETROFE_SCROLL_BACK;
}
Expand Down Expand Up @@ -2709,7 +2773,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
}
input_.resetStates();
keyLastTime_ = currentTime_;
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
if (collectionCycle_.size())
{
Expand Down Expand Up @@ -2738,7 +2802,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
}
input_.resetStates();
keyLastTime_ = currentTime_;
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
if (collectionCycle_.size())
{
Expand Down Expand Up @@ -2769,7 +2833,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
{
if (!isStandalonePlaylist(currentPage_->getPlaylistName()))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
keyLastTime_ = currentTime_;
return RETROFE_PLAYLIST_NEXT_CYCLE;
Expand All @@ -2779,15 +2843,15 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
{
if (!isStandalonePlaylist(currentPage_->getPlaylistName()))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
keyLastTime_ = currentTime_;
return RETROFE_PLAYLIST_PREV_CYCLE;
}
}
else if (!kioskLock_ && input_.keystate(UserInput::KeyCodeBack))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
if (back(exit) || exit)
{
Expand All @@ -2814,7 +2878,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
(input_.keystate(UserInput::KeyCodeCollectionLeft) &&
(!page->isHorizontalScroll() || !input_.keystate(UserInput::KeyCodeLeft)))))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
bool backOnCollection = false;
config_.getProperty(OPTION_BACKONCOLLECTION, backOnCollection);
Expand All @@ -2829,7 +2893,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
(input_.keystate(UserInput::KeyCodeCollectionRight) &&
(!page->isHorizontalScroll() || !input_.keystate(UserInput::KeyCodeRight)))))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
bool backOnCollection = false;
config_.getProperty(OPTION_BACKONCOLLECTION, backOnCollection);
Expand All @@ -2841,23 +2905,23 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)

else if (!kioskLock_ && input_.keystate(UserInput::KeyCodePageUp))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
page->pageScroll(Page::ScrollDirectionBack);
state = RETROFE_MENUJUMP_REQUEST;
}

else if (!kioskLock_ && input_.keystate(UserInput::KeyCodePageDown))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
page->pageScroll(Page::ScrollDirectionForward);
state = RETROFE_MENUJUMP_REQUEST;
}

else if (input_.keystate(UserInput::KeyCodeLetterUp))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
if (currentPage_->getPlaylistName() != "lastplayed")
{
Expand All @@ -2881,7 +2945,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)

else if (input_.keystate(UserInput::KeyCodeLetterDown))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
if (currentPage_->getPlaylistName() != "lastplayed")
{
Expand Down Expand Up @@ -2919,7 +2983,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
(input_.keystate(UserInput::KeyCodePlaylistDown) && page->isHorizontalScroll()) ||
(input_.keystate(UserInput::KeyCodePlaylistRight) && !page->isHorizontalScroll())))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
state = RETROFE_PLAYLIST_NEXT;
}
Expand All @@ -2928,7 +2992,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)
(input_.keystate(UserInput::KeyCodePlaylistUp) && page->isHorizontalScroll()) ||
(input_.keystate(UserInput::KeyCodePlaylistLeft) && !page->isHorizontalScroll())))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
state = RETROFE_PLAYLIST_PREV;
}
Expand Down Expand Up @@ -3106,7 +3170,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)

else if (input_.keystate(UserInput::KeyCodeSelect) && !currentPage_->isMenuScrolling())
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
nextPageItem_ = page->getSelectedItem();
if (nextPageItem_)
Expand Down Expand Up @@ -3163,7 +3227,7 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput(Page* page)

else if (!kioskLock_ && input_.keystate(UserInput::KeyCodeSaveFirstPlaylist))
{
resetInfoToggle();
(void)resetInfoToggle();
attract_.reset();
if (page->getMenuDepth() == 1)
{
Expand Down Expand Up @@ -3479,23 +3543,24 @@ std::string RetroFE::getLayoutFileName()
return layoutName;
}

void RetroFE::resetInfoToggle()
RetroFE::RETROFE_STATE RetroFE::resetInfoToggle()
{
if (gameInfo_)
{
currentPage_->gameInfoExit();
gameInfo_ = false;
return RETROFE_GAMEINFO_EXIT;
}
else if (collectionInfo_)
{
currentPage_->collectionInfoExit();
collectionInfo_ = false;
return RETROFE_COLLECIONINFO_EXIT;
}
else if (buildInfo_)
{
currentPage_->buildInfoExit();
buildInfo_ = false;
return RETROFE_BUILDINFO_EXIT;
}
return RETROFE_IDLE;
}

MetadataDatabase* RetroFE::getMetaDb() {
Expand Down
3 changes: 2 additions & 1 deletion RetroFE/Source/RetroFE.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ class RetroFE
CollectionInfo *getMenuCollection( const std::string& collectionName );
void saveRetroFEState( ) const;
std::string getLayoutFileName();
void resetInfoToggle();
RETROFE_STATE resetInfoToggle();

Configuration &config_;
DB *db_;
Expand All @@ -195,6 +195,7 @@ class RetroFE
bool buildInfo_;
bool collectionInfo_;
bool gameInfo_;
RETROFE_STATE pendingScrollState_;
std::string firstPlaylist_;
std::map<std::string, bool> lkupAttractModeSkipPlaylist_;
std::map<std::string, size_t> lastMenuOffsets_;
Expand Down