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);
|
Component *c = components_.at(cindex);
|
||||||
|
|
||||||
if(c && (scrollRequested || scrollChanged))
|
if(c && readyToScroll && (scrollRequested || scrollChanged))
|
||||||
{
|
{
|
||||||
unsigned int nextI = 0;
|
unsigned int nextI = 0;
|
||||||
if(currentScrollDirection_ == ScrollDirectionBack)
|
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)
|
void Page::pushMenu(ScrollingList *s)
|
||||||
{
|
{
|
||||||
menus_.push_back(s);
|
menus_.push_back(s);
|
||||||
|
|||||||
@ -44,6 +44,7 @@ public:
|
|||||||
virtual ~Page();
|
virtual ~Page();
|
||||||
void DeInitialize();
|
void DeInitialize();
|
||||||
virtual void onNewItemSelected();
|
virtual void onNewItemSelected();
|
||||||
|
void highlightLoadArt();
|
||||||
bool pushCollection(CollectionInfo *collection);
|
bool pushCollection(CollectionInfo *collection);
|
||||||
bool popCollection();
|
bool popCollection();
|
||||||
void enterMenu();
|
void enterMenu();
|
||||||
|
|||||||
@ -378,36 +378,35 @@ void RetroFE::run()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RETROFE_HIGHLIGHT_REQUEST:
|
case RETROFE_HIGHLIGHT_MENU_IDLE:
|
||||||
currentPage_->highlightExit();
|
|
||||||
currentPage_->setScrolling(Page::ScrollDirectionIdle);
|
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;
|
state = RETROFE_HIGHLIGHT_EXIT;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RETROFE_HIGHLIGHT_EXIT:
|
case RETROFE_HIGHLIGHT_EXIT:
|
||||||
if (processUserInput(currentPage_) == RETROFE_HIGHLIGHT_REQUEST)
|
if (processUserInput(currentPage_) == RETROFE_HIGHLIGHT_REQUEST)
|
||||||
{
|
{
|
||||||
state = RETROFE_HIGHLIGHT_REQUEST;
|
state = RETROFE_HIGHLIGHT_MENU_IDLE;
|
||||||
}
|
}
|
||||||
else if ((currentPage_->isGraphicsIdle() && currentPage_->isMenuScrolling()) ||
|
else if (currentPage_->isIdle())
|
||||||
(currentPage_->isIdle()))
|
|
||||||
{
|
{
|
||||||
currentPage_->onNewItemSelected();
|
currentPage_->highlightLoadArt();
|
||||||
state = RETROFE_HIGHLIGHT_LOAD_ART;
|
state = RETROFE_HIGHLIGHT_LOAD_ART;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RETROFE_HIGHLIGHT_LOAD_ART:
|
case RETROFE_HIGHLIGHT_LOAD_ART:
|
||||||
if (processUserInput(currentPage_) == RETROFE_HIGHLIGHT_REQUEST)
|
currentPage_->highlightEnter();
|
||||||
{
|
state = RETROFE_HIGHLIGHT_ENTER;
|
||||||
state = RETROFE_HIGHLIGHT_REQUEST;
|
|
||||||
}
|
|
||||||
else if ((currentPage_->isGraphicsIdle() && currentPage_->isMenuScrolling()) ||
|
|
||||||
(currentPage_->isIdle()))
|
|
||||||
{
|
|
||||||
currentPage_->highlightEnter();
|
|
||||||
state = RETROFE_HIGHLIGHT_ENTER;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RETROFE_HIGHLIGHT_ENTER:
|
case RETROFE_HIGHLIGHT_ENTER:
|
||||||
@ -415,7 +414,7 @@ void RetroFE::run()
|
|||||||
{
|
{
|
||||||
state = RETROFE_HIGHLIGHT_REQUEST;
|
state = RETROFE_HIGHLIGHT_REQUEST;
|
||||||
}
|
}
|
||||||
else if (currentPage_->isGraphicsIdle())
|
else if (currentPage_->isIdle())
|
||||||
{
|
{
|
||||||
state = RETROFE_IDLE;
|
state = RETROFE_IDLE;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,6 +63,7 @@ private:
|
|||||||
RETROFE_HIGHLIGHT_EXIT,
|
RETROFE_HIGHLIGHT_EXIT,
|
||||||
RETROFE_HIGHLIGHT_LOAD_ART,
|
RETROFE_HIGHLIGHT_LOAD_ART,
|
||||||
RETROFE_HIGHLIGHT_ENTER,
|
RETROFE_HIGHLIGHT_ENTER,
|
||||||
|
RETROFE_HIGHLIGHT_MENU_IDLE,
|
||||||
RETROFE_NEXT_PAGE_REQUEST,
|
RETROFE_NEXT_PAGE_REQUEST,
|
||||||
RETROFE_NEXT_PAGE_MENU_EXIT,
|
RETROFE_NEXT_PAGE_MENU_EXIT,
|
||||||
RETROFE_NEXT_PAGE_MENU_LOAD_ART,
|
RETROFE_NEXT_PAGE_MENU_LOAD_ART,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user