From 1686a01b6ae7467e71eac247078248de4a3b3423 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 13 Dec 2021 23:47:30 +0000 Subject: Refactor to start splitting out UI components --- ui/window.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 ui/window.h (limited to 'ui/window.h') diff --git a/ui/window.h b/ui/window.h new file mode 100644 index 0000000..f6279e2 --- /dev/null +++ b/ui/window.h @@ -0,0 +1,38 @@ +#ifndef DISPLAY_INCLUDED_H +#define DISPLAY_INCLUDED_H + +#include "chronology.hpp" +#include "collection.hpp" +#include "inputHandler.h" // IWYU pragma: keep +#include "ptr.hpp" +#include +#include +#include +#include + +class GameState; + +class Window { +public: + Window(int width, int height, const std::string & title); + virtual ~Window() = default; + + NO_COPY(Window); + NO_MOVE(Window); + + void Clear(float r, float g, float b, float a) const; + void SwapBuffers() const; + virtual void tick(TickDuration elapsed) = 0; + virtual void Refresh(const GameState *) const = 0; + bool handleInput(const SDL_Event & e); + +protected: + using GL_Context = std::remove_pointer_t; + using SDL_WindowPtr = wrapped_ptrt; + using SDL_GLContextPtr = wrapped_ptrt; + SDL_WindowPtr m_window; + SDL_GLContextPtr m_glContext; + Collection inputStack; +}; + +#endif -- cgit v1.2.3