aboutsummaryrefslogtreecommitdiff
path: root/src/client/window/inventory_window.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/window/inventory_window.hh')
-rw-r--r--src/client/window/inventory_window.hh40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/client/window/inventory_window.hh b/src/client/window/inventory_window.hh
new file mode 100644
index 0000000..a77ae2f
--- /dev/null
+++ b/src/client/window/inventory_window.hh
@@ -0,0 +1,40 @@
+#ifndef CLIENT_WINDOW_INVENTORY_WINDOW_HH_
+#define CLIENT_WINDOW_INVENTORY_WINDOW_HH_
+
+#include <cstdint>
+#include <optional>
+
+#include "client/item/item.hh"
+#include "client/render/draw.hh"
+#include "client/state/state.hh"
+#include "client/window/basic_window.hh"
+
+namespace client {
+namespace window {
+
+class inventory_window : public basic_window {
+private:
+ std::optional<unsigned long> grabbed;
+
+private:
+ std::optional<unsigned long>
+ maybe_get_inventory_index(const glm::vec2& pos) const noexcept;
+
+private:
+ bool maybe_handle_mousebuttondown(const SDL_Event& event) noexcept;
+ bool maybe_handle_mousebuttonup(const SDL_Event& event) noexcept;
+
+public:
+ template <typename... Args>
+ inventory_window(Args&&... args) noexcept
+ : basic_window(std::forward<Args>(args)...) {}
+ virtual ~inventory_window() noexcept {}
+
+ virtual bool maybe_handle_event(const SDL_Event& event) noexcept override;
+ virtual void draw() noexcept override;
+};
+
+} // namespace window
+} // namespace client
+
+#endif