summaryrefslogtreecommitdiffhomepage
path: root/main/floormat-main.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'main/floormat-main.hpp')
-rw-r--r--main/floormat-main.hpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/main/floormat-main.hpp b/main/floormat-main.hpp
new file mode 100644
index 00000000..5f0635cc
--- /dev/null
+++ b/main/floormat-main.hpp
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "floormat.hpp"
+#include <Magnum/Math/Vector2.h>
+
+struct SDL_Window;
+
+namespace floormat {
+
+struct floormat_app;
+struct tile_shader;
+struct world;
+
+struct floormat_main
+{
+ floormat_main() noexcept;
+ virtual ~floormat_main() noexcept;
+
+ fm_DECLARE_DELETED_COPY_ASSIGNMENT(floormat_main);
+ fm_DECLARE_DEPRECATED_MOVE_ASSIGNMENT(floormat_main);
+
+ virtual void quit(int status) = 0;
+
+ virtual Magnum::Math::Vector2<int> window_size() const noexcept = 0;
+ virtual float smoothed_dt() const noexcept = 0;
+ virtual tile_shader& shader() noexcept = 0;
+ virtual void register_debug_callback() noexcept = 0;
+
+ virtual world& world() noexcept = 0;
+ virtual SDL_Window* window() noexcept = 0;
+
+ static floormat_main* create(floormat_app& app, const fm_options& options);
+};
+
+} // namespace floormat