void ViewController::reloadAll() { std::map<SystemData*, FileData*> cursorMap; for(auto it = mGameListViews.begin(); it != mGameListViews.end(); it++) { cursorMap[it->first] = it->second->getCursor(); } mGameListViews.clear(); for(auto it = cursorMap.begin(); it != cursorMap.end(); it++) { it->first->loadTheme(); getGameListView(it->first)->setCursor(it->second); } mSystemListView.reset(); getSystemListView(); // update mCurrentView since the pointers changed if(mState.viewing == GAME_LIST) { mCurrentView = getGameListView(mState.getSystem()); }else if(mState.viewing == SYSTEM_SELECT) { mSystemListView->goToSystem(mState.getSystem(), false); mCurrentView = mSystemListView; }else{ goToSystemView(SystemData::sSystemVector.front()); } updateHelpPrompts(); }
void ViewController::goToGameList(SystemData* system) { if(mState.viewing == SYSTEM_SELECT) { // move system list auto sysList = getSystemListView(); float offX = sysList->getPosition().x(); int sysId = getSystemId(system); sysList->setPosition(sysId * (float)Renderer::getScreenWidth(), sysList->getPosition().y()); offX = sysList->getPosition().x() - offX; mCamera.translation().x() -= offX; } mState.viewing = GAME_LIST; mState.system = system; if (mCurrentView) { mCurrentView->onHide(); } mCurrentView = getGameListView(system); if (mCurrentView) { mCurrentView->onShow(); } playViewTransition(); }
void ViewController::render(const Eigen::Affine3f& parentTrans) { Eigen::Affine3f trans = mCamera * parentTrans; // camera position, position + size Eigen::Vector3f viewStart = trans.inverse().translation(); Eigen::Vector3f viewEnd = trans.inverse() * Eigen::Vector3f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight(), 0); // draw systemview getSystemListView()->render(trans); // draw gamelists for(auto it = mGameListViews.begin(); it != mGameListViews.end(); it++) { // clipping Eigen::Vector3f guiStart = it->second->getPosition(); Eigen::Vector3f guiEnd = it->second->getPosition() + Eigen::Vector3f(it->second->getSize().x(), it->second->getSize().y(), 0); if(guiEnd.x() >= viewStart.x() && guiEnd.y() >= viewStart.y() && guiStart.x() <= viewEnd.x() && guiStart.y() <= viewEnd.y()) it->second->render(trans); } if(mWindow->peekGui() == this) mWindow->renderHelpPromptsEarly(); // fade out if(mFadeOpacity) { Renderer::setMatrix(parentTrans); Renderer::drawRect(0, 0, Renderer::getScreenWidth(), Renderer::getScreenHeight(), 0x00000000 | (unsigned char)(mFadeOpacity * 255)); } }
void ViewController::goToSystemView(SystemData* system) { mState.viewing = SYSTEM_SELECT; mState.system = system; auto systemList = getSystemListView(); systemList->setPosition(getSystemId(system) * (float)Renderer::getScreenWidth(), systemList->getPosition().y()); systemList->goToSystem(system, false); mCurrentView = systemList; playViewTransition(); }
void ViewController::goToSystemView(SystemData* system) { // Tell any current view it's about to be hidden if (mCurrentView) { mCurrentView->onHide(); } mState.viewing = SYSTEM_SELECT; mState.system = system; auto systemList = getSystemListView(); systemList->setPosition(getSystemId(system) * (float)Renderer::getScreenWidth(), systemList->getPosition().y()); systemList->goToSystem(system, false); mCurrentView = systemList; playViewTransition(); }