#include "UI.hpp" #include #include #include #include #include #include #include #include void UI::DrawUIOnRenderWindow(std::shared_ptr context) { sf::Sprite spriteRender; spriteRender.setTexture(this->mUIRender.getTexture()); spriteRender.setPosition(0.0f, 0.0f); spriteRender.setScale(1.0f, 1.0f); context->draw(spriteRender); } CockpitUI::CockpitUI() : UI() { sf::ContextSettings sViewSettings; sViewSettings.depthBits = 0; sViewSettings.stencilBits = 0; sViewSettings.antialiasingLevel = 8; sViewSettings.sRgbCapable = true; if (!mUIRender.create(1280, 720, sViewSettings)) throw std::runtime_error("Texture renderer creation failure"); mUIRender.setSmooth(true); mUIRender.setRepeated(false); mStaticCockpitTexture.setSrgb(true); if (!mStaticCockpitTexture.loadFromFile("cockpit_ui_empty_rescaled.png", sf::IntRect(0, 0, 1280, 780))) throw std::runtime_error("Unable to load texture datas"); } void CockpitUI::Update() { } void CockpitUI::Draw(std::shared_ptr context) { sf::BlendMode sBM = sf::BlendNone; sf::RenderStates sRS(sBM); // Clear the UI screen mUIRender.clear(sf::Color::Transparent); // Draw the static board sf::Sprite staticBoardSprite(mStaticCockpitTexture); mUIRender.draw(staticBoardSprite, sRS); // Draw the radar display sf::CircleShape radar(95, 8); radar.setRotation(22.5f); radar.setPosition(sf::Vector2f(838,378)); radar.setFillColor(sf::Color::Yellow); mUIRender.draw(radar, sRS); // Do the final texture render mUIRender.display(); // OnScreen rendering DrawUIOnRenderWindow(context); } WorldUI::WorldUI(std::shared_ptr engineInstance) : UI(), mWorld3D(engineInstance) { sf::ContextSettings sViewSettings; sViewSettings.depthBits = 0; sViewSettings.stencilBits = 0; sViewSettings.antialiasingLevel = 8; sViewSettings.sRgbCapable = true; if (!mUIRender.create(1280, 324, sViewSettings)) // Only the upper of the screen is renderer as the UI hide whats left. throw std::runtime_error("Texture renderer creation failure"); mUIRender.setSmooth(true); mUIRender.setRepeated(false); mUIRender.clear(sf::Color::Black); mUIRender.display(); } void WorldUI::Update() { } void WorldUI::Draw(std::shared_ptr context) { sf::BlendMode sBM = sf::BlendNone; sf::RenderStates sRS(sBM); // Clear the UI screen mUIRender.clear(sf::Color::Transparent); // Draw the 3D view mWorld3D->Draw(mUIRender); // Do the final texture render mUIRender.display(); // OnScreen rendering DrawUIOnRenderWindow(context); }