From baf325752df9c8e94fa2daa7385b861c0893277e Mon Sep 17 00:00:00 2001 From: EnderdracheLP Date: Sun, 29 Dec 2024 17:37:34 +0100 Subject: [PATCH 1/5] Add SupportedVersionRange, bump version --- .../Abstractions/IServerInstance.cs | 3 +- .../BeatTogether.Core.csproj | 2 +- .../BinaryBufferReaderExtensions.cs | 3 ++ .../BinaryBufferWriterExtensions.cs | 7 +++-- .../Models/VersionRange.cs | 30 +++++++++++++++++++ .../ServerMessaging/ServerAutobusMessage.cs | 9 ++++-- 6 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 BeatTogether.Core.ServerMessaging/Models/VersionRange.cs diff --git a/BeatTogether.Core.ServerMessaging/Abstractions/IServerInstance.cs b/BeatTogether.Core.ServerMessaging/Abstractions/IServerInstance.cs index 3ec73aa..40ebeb0 100644 --- a/BeatTogether.Core.ServerMessaging/Abstractions/IServerInstance.cs +++ b/BeatTogether.Core.ServerMessaging/Abstractions/IServerInstance.cs @@ -29,6 +29,7 @@ public interface IServerInstance public bool AllowChroma { get; set; } public bool AllowME { get; set; } public bool AllowNE { get; set; } - } + public VersionRange SuportedVersionRange { get; set; } + } } diff --git a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj index 5603ede..7bfb8f1 100644 --- a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj +++ b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj @@ -4,7 +4,7 @@ net6.0 enable enable - 1.1.0 + 1.2.0 icon.png BeatTogether BeatTogether diff --git a/BeatTogether.Core.ServerMessaging/Extensions/BinaryBufferReaderExtensions.cs b/BeatTogether.Core.ServerMessaging/Extensions/BinaryBufferReaderExtensions.cs index d42f8cf..d94c672 100644 --- a/BeatTogether.Core.ServerMessaging/Extensions/BinaryBufferReaderExtensions.cs +++ b/BeatTogether.Core.ServerMessaging/Extensions/BinaryBufferReaderExtensions.cs @@ -50,6 +50,9 @@ public static Server ReadServer(this ref BinaryBufferReader bufferReader) server.AllowME = bufferReader.ReadBool(); server.AllowNE = bufferReader.ReadBool(); + server.SupportedVersionRange.MinVersion = bufferReader.ReadUTF16String(); + server.SupportedVersionRange.MaxVersion = bufferReader.ReadUTF16String(); + return server; } } diff --git a/BeatTogether.Core.ServerMessaging/Extensions/BinaryBufferWriterExtensions.cs b/BeatTogether.Core.ServerMessaging/Extensions/BinaryBufferWriterExtensions.cs index febefdb..3eb7999 100644 --- a/BeatTogether.Core.ServerMessaging/Extensions/BinaryBufferWriterExtensions.cs +++ b/BeatTogether.Core.ServerMessaging/Extensions/BinaryBufferWriterExtensions.cs @@ -48,6 +48,9 @@ public static void WriteServer(this ref BinaryBufferWriter bufferWriter, Server bufferWriter.WriteBool(server.AllowChroma); bufferWriter.WriteBool(server.AllowME); bufferWriter.WriteBool(server.AllowNE); - } - } + + bufferWriter.WriteUTF16String(server.SupportedVersionRange.MinVersion); + bufferWriter.WriteUTF16String(server.SupportedVersionRange.MaxVersion); + } + } } diff --git a/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs b/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs new file mode 100644 index 0000000..92188aa --- /dev/null +++ b/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BeatTogether.Core.Models +{ + public class VersionRange + { + public string MinVersion { get; set; } = string.Empty; + public string MaxVersion { get; set; } = new Version(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue).ToString(); + + public static VersionRange? FindVersionRange(List versionRanges, string version) + { + foreach (var range in versionRanges) + if (VersionRangeSatisfies(range, version)) + return range; + return null; + } + + public static bool VersionRangeSatisfies(VersionRange range, string version) + { + var minVersion = Version.Parse(range.MinVersion); + var maxVersion = Version.Parse(range.MaxVersion); + var parsedVersion = Version.Parse(version); + return parsedVersion >= minVersion && parsedVersion <= maxVersion; + } + } +} diff --git a/BeatTogether.Core.ServerMessaging/ServerMessaging/ServerAutobusMessage.cs b/BeatTogether.Core.ServerMessaging/ServerMessaging/ServerAutobusMessage.cs index 17e7206..ca7f483 100644 --- a/BeatTogether.Core.ServerMessaging/ServerMessaging/ServerAutobusMessage.cs +++ b/BeatTogether.Core.ServerMessaging/ServerMessaging/ServerAutobusMessage.cs @@ -32,8 +32,10 @@ public Server(IServerInstance instance) AllowChroma = instance.AllowChroma; AllowME = instance.AllowME; AllowNE = instance.AllowNE; - } - public Server() { } + + SupportedVersionRange = instance.SuportedVersionRange; + } + public Server() { } public string ServerName { get; set; } = string.Empty; public string Secret { get; set; } = string.Empty; @@ -58,5 +60,6 @@ public Server() { } public bool AllowChroma { get; set; } public bool AllowME { get ; set ; } public bool AllowNE { get; set; } - } + public VersionRange SupportedVersionRange { get; set; } = new(); + } } From 35e1bd3f05a307b09c87188cdeacca1d539e907d Mon Sep 17 00:00:00 2001 From: EnderdracheLP Date: Sun, 29 Dec 2024 18:06:01 +0100 Subject: [PATCH 2/5] Add dev branch to workflow, add dev to version --- .github/workflows/nuget.yml | 1 + BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml index b00c21b..e921f11 100644 --- a/.github/workflows/nuget.yml +++ b/.github/workflows/nuget.yml @@ -4,6 +4,7 @@ on: branches: - master - Net6.0 + - dev jobs: nuget-1: diff --git a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj index 7bfb8f1..cc60f45 100644 --- a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj +++ b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj @@ -4,7 +4,7 @@ net6.0 enable enable - 1.2.0 + 1.2.0-dev.1 icon.png BeatTogether BeatTogether From 2bc6db5a1325334f9969aa62a6a022ed9fc0b448 Mon Sep 17 00:00:00 2001 From: EnderdracheLP Date: Sun, 29 Dec 2024 18:46:19 +0100 Subject: [PATCH 3/5] Fix Typo in SupportedVersionRange --- .../Abstractions/IServerInstance.cs | 2 +- BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj | 2 +- .../ServerMessaging/ServerAutobusMessage.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/BeatTogether.Core.ServerMessaging/Abstractions/IServerInstance.cs b/BeatTogether.Core.ServerMessaging/Abstractions/IServerInstance.cs index 40ebeb0..b537324 100644 --- a/BeatTogether.Core.ServerMessaging/Abstractions/IServerInstance.cs +++ b/BeatTogether.Core.ServerMessaging/Abstractions/IServerInstance.cs @@ -29,7 +29,7 @@ public interface IServerInstance public bool AllowChroma { get; set; } public bool AllowME { get; set; } public bool AllowNE { get; set; } - public VersionRange SuportedVersionRange { get; set; } + public VersionRange SupportedVersionRange { get; set; } } } diff --git a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj index cc60f45..efb1ee8 100644 --- a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj +++ b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj @@ -4,7 +4,7 @@ net6.0 enable enable - 1.2.0-dev.1 + 1.2.0-dev.2 icon.png BeatTogether BeatTogether diff --git a/BeatTogether.Core.ServerMessaging/ServerMessaging/ServerAutobusMessage.cs b/BeatTogether.Core.ServerMessaging/ServerMessaging/ServerAutobusMessage.cs index ca7f483..4582690 100644 --- a/BeatTogether.Core.ServerMessaging/ServerMessaging/ServerAutobusMessage.cs +++ b/BeatTogether.Core.ServerMessaging/ServerMessaging/ServerAutobusMessage.cs @@ -33,7 +33,7 @@ public Server(IServerInstance instance) AllowME = instance.AllowME; AllowNE = instance.AllowNE; - SupportedVersionRange = instance.SuportedVersionRange; + SupportedVersionRange = instance.SupportedVersionRange; } public Server() { } From bdf6a5a535455a9337d8c7ddcaf753a039c29cbb Mon Sep 17 00:00:00 2001 From: EnderdracheLP Date: Sun, 29 Dec 2024 22:29:34 +0100 Subject: [PATCH 4/5] Add function overloads --- .../BeatTogether.Core.csproj | 2 +- .../Models/VersionRange.cs | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj index efb1ee8..26f5309 100644 --- a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj +++ b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj @@ -4,7 +4,7 @@ net6.0 enable enable - 1.2.0-dev.2 + 1.2.0-dev.3 icon.png BeatTogether BeatTogether diff --git a/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs b/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs index 92188aa..152465d 100644 --- a/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs +++ b/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs @@ -11,7 +11,7 @@ public class VersionRange public string MinVersion { get; set; } = string.Empty; public string MaxVersion { get; set; } = new Version(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue).ToString(); - public static VersionRange? FindVersionRange(List versionRanges, string version) + public static VersionRange? FindVersionRange(List versionRanges, Version version) { foreach (var range in versionRanges) if (VersionRangeSatisfies(range, version)) @@ -19,12 +19,20 @@ public class VersionRange return null; } - public static bool VersionRangeSatisfies(VersionRange range, string version) + public static VersionRange? FindVersionRange(List versionRanges, string version) + { + return FindVersionRange(versionRanges, version); + } + public static bool VersionRangeSatisfies(VersionRange range, Version version) { var minVersion = Version.Parse(range.MinVersion); var maxVersion = Version.Parse(range.MaxVersion); - var parsedVersion = Version.Parse(version); - return parsedVersion >= minVersion && parsedVersion <= maxVersion; + return version >= minVersion && version <= maxVersion; + } + + public static bool VersionRangeSatisfies(VersionRange range, string version) + { + return VersionRangeSatisfies(range, Version.Parse(version)); } } } From d7931cb823debf65b128ad86dac145e77413b890 Mon Sep 17 00:00:00 2001 From: EnderdracheLP Date: Sun, 12 Jan 2025 15:56:11 +0100 Subject: [PATCH 5/5] Expand VersionRange class, add VersionRange to public server selection --- .../Abstractions/ILayer2.cs | 4 +++- .../BeatTogether.Core.csproj | 2 +- .../Models/VersionRange.cs | 18 +++++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/BeatTogether.Core.ServerMessaging/Abstractions/ILayer2.cs b/BeatTogether.Core.ServerMessaging/Abstractions/ILayer2.cs index 37ba779..ec0da5f 100644 --- a/BeatTogether.Core.ServerMessaging/Abstractions/ILayer2.cs +++ b/BeatTogether.Core.ServerMessaging/Abstractions/ILayer2.cs @@ -1,4 +1,5 @@ using BeatTogether.Core.Enums; +using BeatTogether.Core.Models; namespace BeatTogether.Core.Abstractions { @@ -24,6 +25,7 @@ public interface ILayer2 //Layer 1 calls these to control layer 2 GameplayServerControlSettings serverControlSettings, BeatmapDifficultyMask difficultyMask, GameplayModifiersMask modifiersMask, - string songPackMasks); + string songPackMasks, + VersionRange versionRange); } } diff --git a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj index 26f5309..7bfb8f1 100644 --- a/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj +++ b/BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj @@ -4,7 +4,7 @@ net6.0 enable enable - 1.2.0-dev.3 + 1.2.0 icon.png BeatTogether BeatTogether diff --git a/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs b/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs index 152465d..384e42b 100644 --- a/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs +++ b/BeatTogether.Core.ServerMessaging/Models/VersionRange.cs @@ -8,7 +8,7 @@ namespace BeatTogether.Core.Models { public class VersionRange { - public string MinVersion { get; set; } = string.Empty; + public string MinVersion { get; set; } = "0.0.0"; public string MaxVersion { get; set; } = new Version(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue).ToString(); public static VersionRange? FindVersionRange(List versionRanges, Version version) @@ -34,5 +34,21 @@ public static bool VersionRangeSatisfies(VersionRange range, string version) { return VersionRangeSatisfies(range, Version.Parse(version)); } + + public static VersionStatus CheckVersionRange(VersionRange range, Version version) + { + var minVersion = Version.Parse(range.MinVersion); + var maxVersion = Version.Parse(range.MaxVersion); + if (version < minVersion) return VersionStatus.TooLow; + if (version > maxVersion) return VersionStatus.TooHigh; + return VersionStatus.Ok; + } + + public enum VersionStatus + { + Ok, + TooHigh, + TooLow + } } }