void World::buildScene() { for (std::size_t i = 0; i < LayerCount; ++i) { SceneNode::Ptr layer(new SceneNode()); mSceneLayers[i] = layer.get(); mSceneGraph.attachChild(std::move(layer)); } sf::Texture& texture = mTextures.get(Textures::ID::Desert); sf::IntRect textureRect(mWorldBounds); texture.setRepeated(true); std::unique_ptr<SpriteNode> backgroundSprite(new SpriteNode(texture, textureRect)); backgroundSprite->setPosition(mWorldBounds.left, mWorldBounds.top); mSceneLayers[Layer::Background]->attachChild(std::move(backgroundSprite)); std::unique_ptr<Aircraft> leader(new Aircraft(Aircraft::Type::Eagle, mTextures)); mPlayerAircraft = leader.get(); mPlayerAircraft->setPosition(mSpawnPosition); mPlayerAircraft->setVelocity(0.f, mScrollSpeed); mSceneLayers[Layer::Air]->attachChild(std::move(leader)); std::unique_ptr<Aircraft> leftEscort(new Aircraft(Aircraft::Type::Raptor, mTextures)); leftEscort->setPosition(-80.f, 50.f); mPlayerAircraft->attachChild(std::move(leftEscort)); std::unique_ptr<Aircraft> rightEscort(new Aircraft(Aircraft::Type::Raptor, mTextures)); rightEscort->setPosition(80.f, 50.f); mPlayerAircraft->attachChild(std::move(rightEscort)); }
void World::buildScene() { // Initialize the different layers for (std::size_t i = 0; i < Layer::count; i++) { SceneNode::Ptr layer(new SceneNode()); sceneLayers[i] = layer.get(); sceneGraph.attachChild(std::move(layer)); } // Prepare the title background sf::Texture &texture = textures.get(Textures::Desert); sf::IntRect textureRect(worldBounds); texture.setRepeated(true); // Add the background sprite to the scene std::unique_ptr<SpriteNode> backgroundSprite(new SpriteNode(texture, textureRect)); backgroundSprite->setPosition(worldBounds.left, worldBounds.top); sceneLayers[Background]->attachChild(std::move(backgroundSprite)); // Add player's aircraft std::unique_ptr<Aircraft> leader(new Aircraft(Aircraft::Eagle, textures)); playerAircraft = leader.get(); playerAircraft->setPosition(spawnPosition); playerAircraft->setVelocity(40.f, scrollSpeed); sceneLayers[Air]->attachChild(std::move(leader)); // Add two escorting aircrafts, placed relatively to the main plane std::unique_ptr<Aircraft> leftEscort(new Aircraft(Aircraft::Raptor, textures)); leftEscort->setPosition(-80.f, 50.f); playerAircraft->attachChild(std::move(leftEscort)); std::unique_ptr<Aircraft> rightEscort(new Aircraft(Aircraft::Raptor, textures)); rightEscort->setPosition(80.f, 50.f); playerAircraft->attachChild(std::move(rightEscort)); }