Exteor/include/xtr/xtrServices.h
2024-06-07 20:30:06 +03:00

33 lines
885 B
C++

#pragma once
namespace xtr {
#pragma warning( push )
#pragma warning( disable : 26440 ) // Don't warn about noexcept in base class
//! Base class for message manager
struct MessageManager {
virtual ~MessageManager() noexcept = default;
virtual uint32_t ShowMessage(CString /*text*/, uint32_t /*type*/) { return 0; }
virtual uint32_t ShowMessage(uint32_t /*messageID*/, uint32_t /*type*/) { return 0; }
};
#pragma warning( pop )
//! Enivroment Exteor configuration - !Global state!
class Global final {
std::unique_ptr<MessageManager> messager{ std::make_unique<MessageManager>() };
private:
Global() = default;
public:
[[nodiscard]] static Global& Instance() noexcept;
[[nodiscard]] static MessageManager& Msg() noexcept {
return *Instance().messager;
}
void SetMessageManager(std::unique_ptr<MessageManager> newMessager) noexcept;
};
} // namespace xtr