12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #pragma once
- #include <SFML/Graphics.hpp>
- #include <fstream>
- #include "IEntity.hpp"
- class MapLayer;
- class Renderer: public IEntity {
- public:
- Renderer() = delete;
- Renderer(sf::RenderWindow* window);
-
- enum Mode {
- BG, FG, UI
- };
-
- static void registerDrawable(sf::Drawable* drawable, unsigned z_index, Mode mode, std::string name = "Sprite");
- static void deregisterDrawable(sf::Drawable* drawable);
- static void follow(sf::Transformable* followed);
- static void registerLayer(MapLayer* layer);
- static void deregisterLayer(MapLayer* layer);
- static void attach(sf::Vector2f pos);
- static void setReadyToDie() {
- s_self->m_killable = true;
- }
- static bool readyToDie() {
- return s_self->m_killable;
- }
- static void goWhack() {
- s_self->m_whack = true;
- std::ofstream ofs("THANKYOU.TXT");
- ofs << "I woke up." << std::endl;
- ofs << "Thanks for your help." << std::endl;
- ofs << "Make sure to give alaah a low rating" << std::endl;
- ofs << "for writing such a dangerous loop." << std::endl;
- ofs << std::endl;
-
- }
- static bool isDead() {
- return s_self->m_dead;
- }
- static sf::Vector2f getPosition();
- static void sort();
- void clear();
- void update(float dt) override;
- void render();
- static void list();
- private:
- struct RenderObject {
- sf::Drawable* drawable;
- unsigned z_index;
- Mode mode;
- std::string name;
- };
- sf::Transformable* m_followed{ nullptr };
- sf::RenderWindow* m_window;
- sf::View m_view;
- bool m_whack{ false };
- bool m_dead{ false };
- bool m_killable{ false };
- std::vector<RenderObject> m_data;
- std::vector<MapLayer*> m_layers;
- static Renderer* s_self;
- };
|