Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
OptionsManager.h
Go to the documentation of this file.
1#pragma once
3
4// use plain enum with bit ops (C++14)
5enum class OptionFlags : uint64_t
6{
7 None = 0,
8 ShowDebugInfo = 1u << 0,
9 ShowBoundingBox = 1u << 1,
10 LogToFile = 1u << 2,
11 ShowMessages = 1u << 3,
12 // ajouter d'autres flags...
13};
14
16 return static_cast<OptionFlags>(static_cast<uint64_t>(a) | static_cast<uint64_t>(b));
17}
19 return static_cast<OptionFlags>(static_cast<uint64_t>(a) & static_cast<uint64_t>(b));
20}
21inline OptionFlags& operator|=(OptionFlags& a, OptionFlags b) { a = a | b; return a; }
22inline OptionFlags& operator&=(OptionFlags& a, OptionFlags b) { a = static_cast<OptionFlags>(static_cast<uint64_t>(a) & static_cast<uint64_t>(b)); return a; }
23
24
26{
27public:
29 {
30 name = "OptionsManager";
31 Set(OptionFlags::ShowDebugInfo); // default option
32 SYSTEM_LOG << "OptionsManager created and Initialized\n";
33 }
35 {
36 SYSTEM_LOG << "OptionsManager destroyed\n";
37 }
38
40 {
42 return instance;
43 }
44 static OptionsManager& Get() { return GetInstance(); }
45
46 // Flags manipulation
47 void Set(OptionFlags f) { flags_ |= f; }
50 {
51 if (IsSet(f)) {
52 Clear(f);
53 }
54 else {
55 Set(f);
56 }
57 }
58 bool IsSet(OptionFlags f) const { return (flags_ & f) != OptionFlags::None; }
59
60
61private:
62 string name;
64};
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
OptionFlags operator|(OptionFlags a, OptionFlags b)
OptionFlags operator&(OptionFlags a, OptionFlags b)
OptionFlags & operator&=(OptionFlags &a, OptionFlags b)
OptionFlags & operator|=(OptionFlags &a, OptionFlags b)
OptionFlags
void Clear(OptionFlags f)
bool IsSet(OptionFlags f) const
void Set(OptionFlags f)
virtual ~OptionsManager()
OptionFlags flags_
void Toggle(OptionFlags f)
static OptionsManager & Get()
static OptionsManager & GetInstance()
#define SYSTEM_LOG