void Controller::loadMedia() { for(unsigned int i = 0; i < Textures::NumTextures; i++) mTextures.push_back(sf::Texture()); createBackgroundTexture(); std::vector<std::string> fileNames; // fileNames.push_back("media/textures/grassDepth.png"); // fileNames.push_back("media/textures/grassDepth.png"); fileNames.push_back("media/textures/dog.png"); fileNames.push_back("media/textures/sheep.png"); fileNames.push_back("media/textures/grass.png"); // fileNames.push_back("media/textures/obstacle1.png"); fileNames.push_back("media/textures/wall.png"); fileNames.push_back("media/textures/corner.png"); fileNames.push_back("media/textures/exit.png"); int index = 0; for(std::string s : fileNames) { sf::Texture t; if(!t.loadFromFile(s)) throw std::runtime_error("Failed to load file: " + s); mTextures.at(index) = t; index ++; } mTextures.at(Textures::GameBackground) = createBackgroundTexture(); // // mTextures.at(Controller::Textures::MenuBackground).setRepeated(true); // mTextures.at(Controller::Textures::GameBackground).setRepeated(true); fileNames.clear(); fileNames.push_back("media/fonts/Sansation.ttf"); fileNames.push_back("media/fonts/AlphaSmoke.TTF"); fileNames.push_back("media/fonts/KingthingsSheepishly.ttf"); for(std::string s : fileNames) { sf::Font f; if(!f.loadFromFile(s)) throw std::runtime_error("Failed to load file: " + s); mFonts.push_back(f); } }
bool VideoLayerAndroid::drawGL() { // Lazily allocated the textures. if (!m_createdTexture) { m_backgroundTextureId = createBackgroundTexture(); m_spinnerOuterTextureId = createSpinnerOuterTexture(); m_spinnerInnerTextureId = createSpinnerInnerTexture(); m_posterTextureId = createPosterTexture(); m_createdTexture = true; } SkRect rect = SkRect::MakeSize(getSize()); GLfloat surfaceMatrix[16]; SkRect innerRect = SkRect(buttonRect); if (innerRect.contains(rect)) innerRect = rect; innerRect.offset((rect.width() - IMAGESIZE) / 2 , (rect.height() - IMAGESIZE) / 2); // Draw the poster image, the progressing image or the Video depending // on the player's state. if (m_playerState == PREPARING) { // Show the progressing animation, with two rotating circles // SSG if (m_surfaceTexture.get() && (m_surfaceTexture->getTimestamp() > 0)) { m_surfaceTexture->getTransformMatrix(surfaceMatrix); GLuint textureId = TilesManager::instance()->videoLayerManager()->getTextureId(uniqueId()); TilesManager::instance()->shader()->drawVideoLayerQuad(m_drawTransform, surfaceMatrix, rect, textureId); TilesManager::instance()->videoLayerManager()->updateMatrix(uniqueId(), surfaceMatrix); } else { TilesManager::instance()->shader()->drawLayerQuad(m_drawTransform, rect, m_backgroundTextureId, 1, true); } TransformationMatrix addReverseRotation; TransformationMatrix addRotation = m_drawTransform; addRotation.translate(innerRect.fLeft, innerRect.fTop); addRotation.translate(IMAGESIZE / 2, IMAGESIZE / 2); addReverseRotation = addRotation; addRotation.rotate(m_rotateDegree); addRotation.translate(-IMAGESIZE / 2, -IMAGESIZE / 2); SkRect size = SkRect::MakeWH(innerRect.width(), innerRect.height()); TilesManager::instance()->shader()->drawLayerQuad(addRotation, size, m_spinnerOuterTextureId, 1, true); addReverseRotation.rotate(-m_rotateDegree); addReverseRotation.translate(-IMAGESIZE / 2, -IMAGESIZE / 2); TilesManager::instance()->shader()->drawLayerQuad(addReverseRotation, size, m_spinnerInnerTextureId, 1, true); m_rotateDegree += ROTATESTEP; } else if (m_playerState == PLAYING && m_surfaceTexture.get()) { // Show the real video. m_surfaceTexture->updateTexImage(); m_surfaceTexture->getTransformMatrix(surfaceMatrix); GLuint textureId = TilesManager::instance()->videoLayerManager()->getTextureId(uniqueId()); TilesManager::instance()->shader()->drawVideoLayerQuad(m_drawTransform, surfaceMatrix, rect, textureId); TilesManager::instance()->videoLayerManager()->updateMatrix(uniqueId(), surfaceMatrix); } else { GLuint textureId = TilesManager::instance()->videoLayerManager()->getTextureId(uniqueId()); GLfloat* matrix = TilesManager::instance()->videoLayerManager()->getMatrix(uniqueId()); if (textureId && matrix) { // Show the screen shot for each video. TilesManager::instance()->shader()->drawVideoLayerQuad(m_drawTransform, matrix, rect, textureId); } else { // Show the static poster b/c there is no screen shot available. TilesManager::instance()->shader()->drawLayerQuad(m_drawTransform, rect, m_backgroundTextureId, 1, true); TilesManager::instance()->shader()->drawLayerQuad(m_drawTransform, innerRect, m_posterTextureId, 1, true); } } return drawChildrenGL(); }