void Engine::Graphics::update() { rt.clear(); updateCam(); rt.setView(camera); auto& entities = getEntities(); for (auto e : entities) { Common::Point point; if (e.hasComponent<GamePosition>()) { auto& pos = e.getComponent<GamePosition>(); point = pos.point; } if (e.hasComponent<Movable>()) { auto& pos = e.getComponent<Movable>(); point = pos.position; } auto& drawable = e.getComponent<Drawable>(); drawable.sprite.setPosition(sf::Vector2f{ point.x * TILESIZE, point.y * TILESIZE }); rt.draw(drawable.sprite); } rt.display(); auto tmngr = Game::Game::getGameInstance()->timeManager; if (tmngr->isOutatime()) { auto color = sf::Color::Black; if (tmngr->getTimeMultiplier() > 0) { color = sf::Color(0x0000FF00); } if (tmngr->getTimeMultiplier() < 0) { color = sf::Color(0x00FF0000); } float intensity = std::abs(tmngr->getTimeMultiplier()) * 0.35f; ppShader.setParameter("glowColor", color); ppShader.setParameter("intensity", intensity); window.draw(ppSprite, &ppShader); } else { window.draw(ppSprite); } for (auto& t : texts) { window.draw(t); } texts.clear(); window.display(); }
float PlayerShip::getLocalTimeMultiplier() const { if(getShipHealth() <= 0.f) { return 2.f; } else { return getTimeMultiplier(getPosition()); } }