mirror of
https://github.com/FunKey-Project/RetroFE.git
synced 2025-12-12 17:58:53 +01:00
Improved menu scrolling. It's difficult to find a balance between smooth
scrolling and art loading times.
This commit is contained in:
parent
872c13c391
commit
9d9ed51c58
@ -485,7 +485,7 @@ void ScrollingList::update(float dt)
|
||||
|
||||
Component *c = components_.at(cindex);
|
||||
|
||||
if(c && (scrollRequested || scrollChanged))
|
||||
if(c && readyToScroll && (scrollRequested || scrollChanged))
|
||||
{
|
||||
unsigned int nextI = 0;
|
||||
if(currentScrollDirection_ == ScrollDirectionBack)
|
||||
|
||||
@ -145,6 +145,18 @@ void Page::onNewItemSelected()
|
||||
}
|
||||
|
||||
|
||||
void Page::highlightLoadArt()
|
||||
{
|
||||
selectedItem_ = activeMenu_->getSelectedItem();
|
||||
|
||||
for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
|
||||
{
|
||||
(*it)->setNewItemSelected();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void Page::pushMenu(ScrollingList *s)
|
||||
{
|
||||
menus_.push_back(s);
|
||||
|
||||
@ -44,6 +44,7 @@ public:
|
||||
virtual ~Page();
|
||||
void DeInitialize();
|
||||
virtual void onNewItemSelected();
|
||||
void highlightLoadArt();
|
||||
bool pushCollection(CollectionInfo *collection);
|
||||
bool popCollection();
|
||||
void enterMenu();
|
||||
|
||||
@ -378,36 +378,35 @@ void RetroFE::run()
|
||||
}
|
||||
break;
|
||||
|
||||
case RETROFE_HIGHLIGHT_REQUEST:
|
||||
currentPage_->highlightExit();
|
||||
case RETROFE_HIGHLIGHT_MENU_IDLE:
|
||||
currentPage_->setScrolling(Page::ScrollDirectionIdle);
|
||||
if (currentPage_->isIdle())
|
||||
{
|
||||
state = RETROFE_HIGHLIGHT_REQUEST;
|
||||
}
|
||||
break;
|
||||
|
||||
case RETROFE_HIGHLIGHT_REQUEST:
|
||||
currentPage_->setScrolling(Page::ScrollDirectionIdle);
|
||||
currentPage_->highlightExit();
|
||||
state = RETROFE_HIGHLIGHT_EXIT;
|
||||
break;
|
||||
|
||||
case RETROFE_HIGHLIGHT_EXIT:
|
||||
if (processUserInput(currentPage_) == RETROFE_HIGHLIGHT_REQUEST)
|
||||
{
|
||||
state = RETROFE_HIGHLIGHT_REQUEST;
|
||||
state = RETROFE_HIGHLIGHT_MENU_IDLE;
|
||||
}
|
||||
else if ((currentPage_->isGraphicsIdle() && currentPage_->isMenuScrolling()) ||
|
||||
(currentPage_->isIdle()))
|
||||
else if (currentPage_->isIdle())
|
||||
{
|
||||
currentPage_->onNewItemSelected();
|
||||
currentPage_->highlightLoadArt();
|
||||
state = RETROFE_HIGHLIGHT_LOAD_ART;
|
||||
}
|
||||
break;
|
||||
|
||||
case RETROFE_HIGHLIGHT_LOAD_ART:
|
||||
if (processUserInput(currentPage_) == RETROFE_HIGHLIGHT_REQUEST)
|
||||
{
|
||||
state = RETROFE_HIGHLIGHT_REQUEST;
|
||||
}
|
||||
else if ((currentPage_->isGraphicsIdle() && currentPage_->isMenuScrolling()) ||
|
||||
(currentPage_->isIdle()))
|
||||
{
|
||||
currentPage_->highlightEnter();
|
||||
state = RETROFE_HIGHLIGHT_ENTER;
|
||||
}
|
||||
currentPage_->highlightEnter();
|
||||
state = RETROFE_HIGHLIGHT_ENTER;
|
||||
break;
|
||||
|
||||
case RETROFE_HIGHLIGHT_ENTER:
|
||||
@ -415,7 +414,7 @@ void RetroFE::run()
|
||||
{
|
||||
state = RETROFE_HIGHLIGHT_REQUEST;
|
||||
}
|
||||
else if (currentPage_->isGraphicsIdle())
|
||||
else if (currentPage_->isIdle())
|
||||
{
|
||||
state = RETROFE_IDLE;
|
||||
}
|
||||
|
||||
@ -63,6 +63,7 @@ private:
|
||||
RETROFE_HIGHLIGHT_EXIT,
|
||||
RETROFE_HIGHLIGHT_LOAD_ART,
|
||||
RETROFE_HIGHLIGHT_ENTER,
|
||||
RETROFE_HIGHLIGHT_MENU_IDLE,
|
||||
RETROFE_NEXT_PAGE_REQUEST,
|
||||
RETROFE_NEXT_PAGE_MENU_EXIT,
|
||||
RETROFE_NEXT_PAGE_MENU_LOAD_ART,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user