From 606e554f6cec3761482b55e7296d27bd0d22fabf Mon Sep 17 00:00:00 2001 From: Brett Date: Tue, 17 Jan 2023 10:33:27 -0500 Subject: [PATCH] Cleanup window and add more useful functions --- include/blt/window/window.h | 48 +++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/include/blt/window/window.h b/include/blt/window/window.h index 5b013e4..c097a1b 100644 --- a/include/blt/window/window.h +++ b/include/blt/window/window.h @@ -11,41 +11,59 @@ #include #ifndef BLT_MAP_FUNC -#include -#define BLT_MAP_FUNC std::unordered_map + #include + #define BLT_MAP_FUNC std::unordered_map #endif -#define KEY_MAP BLT_MAP_FUNC +#define KEY_MAP BLT_MAP_FUNC namespace blt { class window { protected: - bool windowOpen = true; - std::vector> renderFunctions; + bool m_windowOpen = true; + int m_width, m_height; + + std::vector> renderFunctions{}; + std::vector> keyListeners{}; + std::vector> mouseListeners{}; + + KEY_MAP keysDown{}; + KEY_MAP mouseDown{}; public: window() = default; + window(int width, int height) { + m_width = width; + m_height = height; + } virtual void createWindow() = 0; virtual void startMainLoop() = 0; virtual void destroyWindow() = 0; virtual ~window() = 0; - virtual bool setResizeable(bool resizeEnabled) = 0; - virtual bool setWindowSize(int width, int height) = 0; - virtual int getWidth() = 0; - virtual int getHeight() = 0; + virtual inline bool setResizeable(bool resizeEnabled) = 0; + virtual inline bool setWindowSize(int width, int height) = 0; + [[nodiscard]] inline int getWidth() const {return m_width;}; + [[nodiscard]] inline int getHeight() const {return m_height;}; - virtual bool isWindowOpen() {return windowOpen;}; - virtual void registerLoopFunction(std::function func) { + [[nodiscard]] virtual inline bool isWindowOpen() const {return m_windowOpen;}; + virtual inline void closeWindow(){ + m_windowOpen = false; + } + virtual inline void registerLoopFunction(std::function func) { renderFunctions.push_back(func); } - virtual bool isKeyDown(int key) = 0; - virtual bool isMouseDown(int button) = 0; + virtual inline bool isKeyDown(int key) const { return keysDown.at(key); } + virtual inline bool isMouseDown(int button) const {return mouseDown.at(button);}; // Function signature is window pointer to this, key press, pressed/released (true/false) - virtual void registerKeyListener(std::function listener) = 0; + virtual inline void registerKeyListener(std::function listener) { + keyListeners.push_back(listener); + } // Function signature is window pointer to this, mouse button press, pressed/released (true/false) - virtual void registerMouseListener(std::function listener) = 0; + virtual inline void registerMouseListener(std::function listener) { + mouseListeners.push_back(listener); + } }; }