#pragma once #include class Bitmap; struct SDL_Window; struct SDL_Renderer; struct SDL_Texture; class Window { public: Window(const char* title, int width, int height, int scale); ~Window(); void update(); void draw(Bitmap&); bool shouldClose() const { return !m_isRunning; } void onMouseDown(std::function callback) { m_mouseDown = callback; } void onMouseUp(std::function callback) { m_mouseUp = callback; } void onMouseMove(std::function callback) { m_mouseMove = callback; } void onKeyDown(std::function callback) { m_keyDown = callback; } void onKeyUp(std::function callback) { m_keyUp = callback; } private: bool m_isRunning; int m_width, m_height, m_scale; SDL_Window* m_window; SDL_Renderer* m_renderer; SDL_Texture* m_texture; std::function m_mouseDown; std::function m_mouseUp; std::function m_mouseMove; std::function m_keyDown; std::function m_keyUp; };