#ifndef CLIENT_WINDOW_BUTTON_WINDOW_HH_ #define CLIENT_WINDOW_BUTTON_WINDOW_HH_ #include #include #include "client/input.hh" #include "client/render/render.hh" #include "client/window/basic_window.hh" namespace client { namespace window { class button_window : public basic_window { protected: std::string name; std::function callback; bool is_pressed; private: void handle_mousebuttondown(const SDL_Event& event) noexcept; void handle_mousebuttonup(const SDL_Event& event) noexcept; const glm::vec3& get_draw_colour() noexcept; public: template button_window(const std::string_view n, const decltype(callback)& c, Args&&... args) noexcept : basic_window(std::forward(args)...), name(n), callback(c), is_pressed(false) {} virtual ~button_window() noexcept {} virtual bool maybe_handle_event(const SDL_Event& event) noexcept override; virtual void draw() noexcept override; }; } // namespace window } // namespace client #endif