diff options
Diffstat (limited to 'source/core/StarNetCompatibility.hpp')
-rw-r--r-- | source/core/StarNetCompatibility.hpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/source/core/StarNetCompatibility.hpp b/source/core/StarNetCompatibility.hpp new file mode 100644 index 0000000..730546e --- /dev/null +++ b/source/core/StarNetCompatibility.hpp @@ -0,0 +1,41 @@ +#pragma once +#include "StarDataStream.hpp" + +namespace Star { + + +enum class NetCompatibilityFilter { + None = 0, + Old = 1, + New = 2 +}; + +struct NetCompatibilityRules { + NetCompatibilityRules() = default; + NetCompatibilityRules(uint64_t) = delete; + NetCompatibilityRules(bool legacy); + + bool checkFilter(NetCompatibilityFilter const& filter) const; + + bool isLegacy = false; +}; + +inline NetCompatibilityRules::NetCompatibilityRules(bool legacy) : isLegacy(legacy) {} + +inline bool NetCompatibilityRules::checkFilter(NetCompatibilityFilter const& filter) const { + if (filter == NetCompatibilityFilter::None) + return true; + else if (isLegacy) + return filter == NetCompatibilityFilter::Old; + else + return filter == NetCompatibilityFilter::New; +} + +template <> +struct hash<NetCompatibilityRules> { + size_t operator()(NetCompatibilityRules const& s) const { + return s.isLegacy; + } +}; + +}
\ No newline at end of file |