#pragma once #include #include "../math/types.hpp" #include "../resources/resource.hpp" #include "../resources/texture.hpp" #include "../callback.hpp" namespace hibis { class Renderer { public: Renderer(LoggerCallback logger) : mLogger(logger) {} // Draw virtual void clearScreen(Color col) = 0; virtual void renderCurrent() = 0; virtual void drawText(Resource* resource, std::string text, IntVec2 pos, Color color) = 0; virtual void drawTexture(Texture* resource, float scale, IntVec2 pos) = 0; // Pre and Post draw virtual void preDraw() = 0; virtual void postDraw() = 0; // Update virtual void update() = 0; // Util virtual void setWindowTitle(std::string title) = 0; bool mKeepOpen = true; protected: LoggerCallback mLogger; }; }