Exemplo n.º 1
0
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();
}
Exemplo n.º 2
0
float PlayerShip::getLocalTimeMultiplier() const {
	if(getShipHealth() <= 0.f) {
		return 2.f;
	} else {
		return getTimeMultiplier(getPosition());
	}
}