aboutsummaryrefslogtreecommitdiff
path: root/src/game/statusline_subscriber_adapter.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/statusline_subscriber_adapter.hpp')
-rw-r--r--src/game/statusline_subscriber_adapter.hpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/game/statusline_subscriber_adapter.hpp b/src/game/statusline_subscriber_adapter.hpp
new file mode 100644
index 0000000..d53ae04
--- /dev/null
+++ b/src/game/statusline_subscriber_adapter.hpp
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "interfaces/statusline.hpp"
+#include "interfaces/statusline_subscriber_adapter.hpp"
+#include "interfaces/subscriber.hpp"
+
+#include <memory>
+#include <string>
+#include <vector>
+
+template <typename Context>
+class StatusLineSubscriberAdapter : public ISubscriber<Context>
+{
+public:
+ StatusLineSubscriberAdapter(
+ std::shared_ptr<IStatusManager> status_manager,
+ std::string (*format_func)(std::size_t section_index, const Context &context),
+ const std::vector<StatusLineSection> &sections
+ ) noexcept;
+
+ void update(const Context &context) noexcept override;
+
+private:
+ std::shared_ptr<IStatusManager> _status_manager;
+
+ std::string (*_format_func)(std::size_t section_index, const Context &context);
+ std::vector<StatusLineSection> _sections;
+};
+
+#include "statusline_subscriber_adapter.tpp"