Fixed layer animations for non-menu items.

This commit is contained in:
Pieter Hulshoff
2016-06-24 11:00:29 +02:00
parent 62e9f7eaa3
commit 5bc67f72fb
2 changed files with 40 additions and 96 deletions

View File

@@ -57,15 +57,11 @@ void Page::DeInitialize()
it = menus_.begin(); it = menus_.begin();
} }
for(unsigned int i = 0; i < sizeof(LayerComponents)/sizeof(LayerComponents[0]); ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
delete *it; delete *it;
} }
LayerComponents.clear();
LayerComponents[i].clear();
}
if(loadSoundChunk_) if(loadSoundChunk_)
@@ -141,13 +137,10 @@ void Page::onNewItemSelected()
menu->setNewItemSelected(); menu->setNewItemSelected();
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->setNewItemSelected(); (*it)->setNewItemSelected();
} }
}
} }
@@ -171,19 +164,15 @@ bool Page::addComponent(Component *c)
{ {
bool retVal = false; bool retVal = false;
unsigned int layer = c->baseViewInfo.Layer; if(c->baseViewInfo.Layer < NUM_LAYERS)
if(layer < NUM_LAYERS)
{ {
LayerComponents[layer].push_back(c); LayerComponents.push_back(c);
retVal = true; retVal = true;
} }
else else
{ {
std::stringstream ss; std::stringstream ss;
ss << "Component layer too large Layer: " << layer; ss << "Component layer too large Layer: " << c->baseViewInfo.Layer;
Logger::write(Logger::ZONE_ERROR, "Page", ss.str()); Logger::write(Logger::ZONE_ERROR, "Page", ss.str());
} }
@@ -211,13 +200,10 @@ bool Page::isIdle()
{ {
bool idle = isMenuIdle(); bool idle = isMenuIdle();
for(unsigned int i = 0; i < NUM_LAYERS && idle; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end() && idle; ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end() && idle; ++it)
{ {
idle = (*it)->isIdle(); idle = (*it)->isIdle();
} }
}
return idle; return idle;
} }
@@ -237,13 +223,10 @@ void Page::start()
loadSoundChunk_->play(); loadSoundChunk_->play();
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->triggerEvent( "enter" ); (*it)->triggerEvent( "enter" );
} }
}
} }
@@ -261,13 +244,10 @@ void Page::stop()
unloadSoundChunk_->play(); unloadSoundChunk_->play();
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->triggerEvent( "exit" ); (*it)->triggerEvent( "exit" );
} }
}
} }
@@ -326,13 +306,10 @@ void Page::playlistChange()
activeMenu_->setPlaylist(playlist_->first); activeMenu_->setPlaylist(playlist_->first);
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->setPlaylist(playlist_->first); (*it)->setPlaylist(playlist_->first);
} }
}
} }
@@ -348,13 +325,10 @@ void Page::highlightEnter()
menu->triggerHighlightEnterEvent( menuDepth_ - 1 ); menu->triggerHighlightEnterEvent( menuDepth_ - 1 );
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->triggerEvent( "highlightEnter", menuDepth_ - 1 ); (*it)->triggerEvent( "highlightEnter", menuDepth_ - 1 );
} }
}
} }
@@ -370,13 +344,10 @@ void Page::highlightExit()
menu->triggerHighlightExitEvent( menuDepth_ - 1 ); menu->triggerHighlightExitEvent( menuDepth_ - 1 );
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->triggerEvent( "highlightExit", menuDepth_ - 1 ); (*it)->triggerEvent( "highlightExit", menuDepth_ - 1 );
} }
}
} }
@@ -494,13 +465,10 @@ bool Page::pushCollection(CollectionInfo *collection)
menuDepth_++; menuDepth_++;
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->collectionName = collection->name; (*it)->collectionName = collection->name;
} }
}
return true; return true;
} }
@@ -526,13 +494,10 @@ bool Page::popCollection()
menuDepth_--; menuDepth_--;
activeMenu_ = menus_[menuDepth_ - 1]; activeMenu_ = menus_[menuDepth_ - 1];
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->collectionName = info->collection->name; (*it)->collectionName = info->collection->name;
} }
}
return true; return true;
} }
@@ -548,13 +513,10 @@ void Page::enterMenu()
menu->triggerMenuEnterEvent( menuDepth_ - 1 ); menu->triggerMenuEnterEvent( menuDepth_ - 1 );
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->triggerEvent( "menuEnter", menuDepth_ - 1 ); (*it)->triggerEvent( "menuEnter", menuDepth_ - 1 );
} }
}
return; return;
} }
@@ -570,13 +532,10 @@ void Page::exitMenu()
menu->triggerMenuExitEvent( menuDepth_ - 1 ); menu->triggerMenuExitEvent( menuDepth_ - 1 );
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->triggerEvent( "menuExit", menuDepth_ - 1 ); (*it)->triggerEvent( "menuExit", menuDepth_ - 1 );
} }
}
return; return;
} }
@@ -651,13 +610,10 @@ void Page::update(float dt)
textStatusComponent_->setText(status); textStatusComponent_->setText(status);
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
if(*it) (*it)->update(dt); if(*it) (*it)->update(dt);
} }
}
// many nodes still have handles on the collection info. We need to delete // many nodes still have handles on the collection info. We need to delete
// them once everything is done using them // them once everything is done using them
@@ -690,7 +646,7 @@ void Page::draw()
{ {
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(unsigned int i = 0; i < NUM_LAYERS; ++i)
{ {
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{ {
if(*it && (*it)->baseViewInfo.Layer == i) (*it)->draw(); if(*it && (*it)->baseViewInfo.Layer == i) (*it)->draw();
} }
@@ -760,13 +716,10 @@ void Page::freeGraphicsMemory()
if(highlightSoundChunk_) highlightSoundChunk_->free(); if(highlightSoundChunk_) highlightSoundChunk_->free();
if(selectSoundChunk_) selectSoundChunk_->free(); if(selectSoundChunk_) selectSoundChunk_->free();
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->freeGraphicsMemory(); (*it)->freeGraphicsMemory();
} }
}
} }
void Page::allocateGraphicsMemory() void Page::allocateGraphicsMemory()
@@ -785,13 +738,10 @@ void Page::allocateGraphicsMemory()
if(highlightSoundChunk_) highlightSoundChunk_->allocate(); if(highlightSoundChunk_) highlightSoundChunk_->allocate();
if(selectSoundChunk_) selectSoundChunk_->allocate(); if(selectSoundChunk_) selectSoundChunk_->allocate();
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->allocateGraphicsMemory(); (*it)->allocateGraphicsMemory();
} }
}
Logger::write(Logger::ZONE_DEBUG, "Page", "Allocate graphics memory complete"); Logger::write(Logger::ZONE_DEBUG, "Page", "Allocate graphics memory complete");
} }
@@ -802,13 +752,10 @@ void Page::launchEnter()
activeMenu_->launchEnter(); activeMenu_->launchEnter();
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->launchEnter(); (*it)->launchEnter();
} }
}
} }
void Page::launchExit() void Page::launchExit()
@@ -818,13 +765,10 @@ void Page::launchExit()
activeMenu_->launchExit(); activeMenu_->launchExit();
} }
for(unsigned int i = 0; i < NUM_LAYERS; ++i) for(std::vector<Component *>::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it)
{
for(std::vector<Component *>::iterator it = LayerComponents[i].begin(); it != LayerComponents[i].end(); ++it)
{ {
(*it)->launchExit(); (*it)->launchExit();
} }
}
} }

View File

@@ -115,7 +115,7 @@ private:
CollectionVector_T deleteCollections_; CollectionVector_T deleteCollections_;
static const unsigned int NUM_LAYERS = 20; static const unsigned int NUM_LAYERS = 20;
std::vector<Component *> LayerComponents[NUM_LAYERS]; std::vector<Component *> LayerComponents;
std::list<ScrollingList *> deleteMenuList_; std::list<ScrollingList *> deleteMenuList_;
std::list<CollectionInfo *> deleteCollectionList_; std::list<CollectionInfo *> deleteCollectionList_;