#pragma once // TODO : fix this ugly shit #include "Buffer.hpp" #include "Graphics.hpp" #include "Keycodes.hpp" namespace tp { class Window { class Context; public: struct Event { enum Type { KEY, MOUSE, }; }; struct Events { Vec2F mPointer; const Vec2F& getPos() const; bool isPressed() const; bool isReleased() const; bool isDown() const; halnf getScrollY() const; bool isEvent() const; private: friend Window; Buffer mQueu; Context* mContext; }; private: Window(int width, int height, const char* title); ~Window(); public: static Window* createWindow(int width, int height, const char* title); static void destroyWindow(Window* window); public: void draw(); void processEvents(); [[nodiscard]] bool shouldClose() const; auto getContext() -> Context*; Graphics::Canvas& getCanvas(); const Events& getEvents(); private: Context* mContext; Graphics mGraphics; Events mEvents; }; }