Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarNetCompatibility.hpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-09-05 19:15:47 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2024-09-11 15:19:17 +1000
commit37f3178d33ab77de064bcbf10b4b03ddb47cc979 (patch)
tree76e3b3ce2d8716577af98e2bbbc4a41021db5107 /source/core/StarNetCompatibility.hpp
parent90db1e0fbadaeb625691d3d0d13f5ae6ef057109 (diff)
Network compatibility changes
Diffstat (limited to 'source/core/StarNetCompatibility.hpp')
-rw-r--r--source/core/StarNetCompatibility.hpp41
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