diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-09-05 19:15:47 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-09-11 15:19:17 +1000 |
commit | 37f3178d33ab77de064bcbf10b4b03ddb47cc979 (patch) | |
tree | 76e3b3ce2d8716577af98e2bbbc4a41021db5107 /source/core/StarNetCompatibility.hpp | |
parent | 90db1e0fbadaeb625691d3d0d13f5ae6ef057109 (diff) |
Network compatibility changes
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 |