33 lines
885 B
C++
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
|