#pragma once #include #include #include #include #include #include #include #include #include namespace Game::Window { class Window { public: Window(); DISABLE_COPY_AND_MOVE(Window) ~Window(); bool init(int width, int height, const std::string& title); void run(); void setTargetFPS(int fps) { mTargetFPS = fps; } int getTargetFPS() { return mTargetFPS; } Renderer::Renderer* getRenderer() { return &mRenderer; } private: SDL_Window* mWindow; Renderer::Renderer mRenderer; Game::GameManager mGameManager; std::jthread mGameThread; bool mRunning; int mTargetFPS = 60; }; }