void UI_Main::refreshScreen( unsigned int time, int clientState, int serverState, bool demoPaused, unsigned int demoTime, bool backGround, bool showCursor ) { setRefreshState( time, clientState, serverState, demoPaused, demoTime, backGround ); // postponed showing of the stacked document, we need to set the refresh state first if( showNavigationStack ) { navigator->showStack( true ); showNavigationStack = false; } // update necessary modules if( serverBrowser ) serverBrowser->updateFrame(); if( demos ) demos->UpdateFrame(); if( ircchannels ) ircchannels->UpdateFrame(); // TODO: handle the intervalled functions in AS somehow, // taking care that they are not called when menu is hidden. // i may need to make the interface public.. BindFrame( asmodule ); // run incremental garbage collection asmodule->garbageCollectOneStep(); if( showCursor ) { rocketModule->showCursor(); } else { rocketModule->hideCursor(); } if( !menuVisible ) { return; } if( !navigator->hasDocuments() ) { // no documents on stack, release the key dest showUI( false ); return; } // rocket update+render rocketModule->update(); rocketModule->render(); // mark the top stack document as viwed for history tracking navigator->markTopAsViewed(); // stuff we need to render without using rocket customRender(); }
void UI_Main::refreshScreen( unsigned int time, int clientState, int serverState, bool demoPlaying, const char *demoName, bool demoPaused, unsigned int demoTime, bool backGround, bool showCursor ) { int i; UI_Navigation::iterator it, it_next; refreshState.time = time; refreshState.clientState = clientState; refreshState.serverState = serverState; refreshState.drawBackground = backGround; if( demoPlaying && !demoInfo.getPlaying() ) { demoInfo.setName( demoName ); } demoInfo.setTime( demoTime ); demoInfo.setPaused( demoPaused ); demoInfo.setPlaying( demoPlaying ); // postponed showing of the stacked document, we need to set the refresh state first if( showNavigationStack ) { UI_Navigation &navigation = navigations[UI_CONTEXT_MAIN]; NavigationStack *navigator = navigation.front(); navigator->showStack( true ); showNavigationStack = false; } // update necessary modules if( serverBrowser ) serverBrowser->updateFrame(); if( demos ) demos->UpdateFrame(); if( ircchannels ) ircchannels->UpdateFrame(); if( clientState == CA_ACTIVE && invalidateAjaxCache ) { gameajax->FlushCache(); invalidateAjaxCache = false; } // TODO: handle the intervalled functions in AS somehow, // taking care that they are not called when menu is hidden. // i may need to make the interface public.. BindFrame( asmodule ); // run incremental garbage collection asmodule->garbageCollectOneStep(); for( i = 0; i < UI_NUM_CONTEXTS; i++ ) { UI_Navigation &navigation = navigations[i]; NavigationStack *navigator = navigation.front(); // free empty navigation stacks for( it = navigation.begin(); it != navigation.end(); it = it_next ) { it_next = it; it_next++; NavigationStack *stack = *it; if( stack != navigator && stack->empty() ) { __delete__( stack ); navigation.erase( it ); } } } // handle main menu context if( menuVisible ) { NavigationStack *navigator = navigations[UI_CONTEXT_MAIN].front(); if( !navigator->hasDocuments() ) { // no documents on stack, release the key dest showUI( false ); } else { if( showCursor ) { rocketModule->hideCursor( UI_CONTEXT_MAIN, 0, RocketModule::HIDECURSOR_REFRESH ); gamepadCursorMove(); } else { rocketModule->hideCursor( UI_CONTEXT_MAIN, RocketModule::HIDECURSOR_REFRESH, 0 ); } } } // rocket update+render rocketModule->update(); if( quickMenuVisible ) { rocketModule->render( UI_CONTEXT_QUICK ); } if( menuVisible ) { rocketModule->render( UI_CONTEXT_MAIN ); } // mark the top stack document as viwed for history tracking for( i = 0; i < UI_NUM_CONTEXTS; i++ ) { UI_Navigation &navigation = navigations[i]; for( it = navigation.begin(); it != navigation.end(); ++it ) { (*it)->markTopAsViewed(); } } // stuff we need to render without using rocket customRender(); }