Renderer.hpp 715 B

1234567891011121314151617181920212223242526272829303132333435
  1. #pragma once
  2. #include <SFML/Graphics.hpp>
  3. #include "IEntity.hpp"
  4. class Renderer: public IEntity {
  5. public:
  6. Renderer() = delete;
  7. Renderer(sf::RenderWindow* window);
  8. enum Mode {
  9. BG, FG, UI
  10. };
  11. void registerDrawable(sf::Drawable* drawable, unsigned z_index, Mode mode);
  12. void deregisterDrawable(sf::Drawable* drawable);
  13. void setFocus(int focus);
  14. int getFocus() const;
  15. int getPosition() const;
  16. void sort();
  17. void clear();
  18. void update(float delta) override;
  19. void render();
  20. private:
  21. struct RenderObject {
  22. sf::Drawable* drawable;
  23. unsigned z_index;
  24. Mode mode;
  25. };
  26. sf::RenderWindow* m_window;
  27. sf::View m_view;
  28. int m_focus;
  29. std::vector<RenderObject> m_data;
  30. };