diff --git a/BeatTogether.DedicatedServer.Instancing/Abstractions/IInstanceRegistry.cs b/BeatTogether.DedicatedServer.Instancing/Abstractions/IInstanceRegistry.cs index 0511418..bd42a86 100644 --- a/BeatTogether.DedicatedServer.Instancing/Abstractions/IInstanceRegistry.cs +++ b/BeatTogether.DedicatedServer.Instancing/Abstractions/IInstanceRegistry.cs @@ -1,6 +1,7 @@ using BeatTogether.Core.Enums; using BeatTogether.DedicatedServer.Kernel.Abstractions; using System.Diagnostics.CodeAnalysis; +using BeatTogether.Core.Models; namespace BeatTogether.DedicatedServer.Instancing.Abstractions { @@ -10,6 +11,6 @@ public interface IInstanceRegistry public bool RemoveInstance(IDedicatedInstance instance); public bool TryGetInstance(string secret, [MaybeNullWhen(false)] out IDedicatedInstance instance); public bool TryGetInstanceByCode(string code, [MaybeNullWhen(false)] out IDedicatedInstance instance); - public bool TryGetAvailablePublicServer(InvitePolicy invitePolicy, GameplayServerMode serverMode, SongSelectionMode songMode, GameplayServerControlSettings serverControlSettings, BeatmapDifficultyMask difficultyMask, GameplayModifiersMask modifiersMask, string songPackMasks, [MaybeNullWhen(false)] out IDedicatedInstance instance); + public bool TryGetAvailablePublicServer(InvitePolicy invitePolicy, GameplayServerMode serverMode, SongSelectionMode songMode, GameplayServerControlSettings serverControlSettings, BeatmapDifficultyMask difficultyMask, GameplayModifiersMask modifiersMask, string songPackMasks, VersionRange versionRange, [MaybeNullWhen(false)] out IDedicatedInstance instance); } } diff --git a/BeatTogether.DedicatedServer.Instancing/BeatTogether.DedicatedServer.Instancing.csproj b/BeatTogether.DedicatedServer.Instancing/BeatTogether.DedicatedServer.Instancing.csproj index 2785408..ebae974 100644 --- a/BeatTogether.DedicatedServer.Instancing/BeatTogether.DedicatedServer.Instancing.csproj +++ b/BeatTogether.DedicatedServer.Instancing/BeatTogether.DedicatedServer.Instancing.csproj @@ -12,7 +12,7 @@ - + diff --git a/BeatTogether.DedicatedServer.Instancing/InstanceRegistry.cs b/BeatTogether.DedicatedServer.Instancing/InstanceRegistry.cs index edf8f68..79e3823 100644 --- a/BeatTogether.DedicatedServer.Instancing/InstanceRegistry.cs +++ b/BeatTogether.DedicatedServer.Instancing/InstanceRegistry.cs @@ -4,6 +4,7 @@ using System.Diagnostics.CodeAnalysis; using BeatTogether.Core.Enums; using System.Linq; +using BeatTogether.Core.Models; namespace BeatTogether.DedicatedServer.Instancing { @@ -23,7 +24,7 @@ public bool AddInstance(IDedicatedInstance instance){ public bool RemoveInstance(IDedicatedInstance instance) => _instances.TryRemove(instance._configuration.Secret, out _) && _instancesByCode.TryRemove(instance._configuration.Code, out _); - public bool TryGetAvailablePublicServer(InvitePolicy invitePolicy, GameplayServerMode serverMode, SongSelectionMode songMode, GameplayServerControlSettings serverControlSettings, BeatmapDifficultyMask difficultyMask, GameplayModifiersMask modifiersMask, string songPackMasks, [MaybeNullWhen(false)] out IDedicatedInstance instance) + public bool TryGetAvailablePublicServer(InvitePolicy invitePolicy, GameplayServerMode serverMode, SongSelectionMode songMode, GameplayServerControlSettings serverControlSettings, BeatmapDifficultyMask difficultyMask, GameplayModifiersMask modifiersMask, string songPackMasks, VersionRange versionRange, [MaybeNullWhen(false)] out IDedicatedInstance instance) { instance = null; var AvaliableServers = _instances.Values.Where(s => @@ -33,7 +34,8 @@ public bool TryGetAvailablePublicServer(InvitePolicy invitePolicy, GameplayServe s._configuration.GameplayServerConfiguration.GameplayServerControlSettings == serverControlSettings && s._configuration.BeatmapDifficultyMask == difficultyMask && s._configuration.GameplayModifiersMask == modifiersMask && - s._configuration.SongPacksMask == songPackMasks + s._configuration.SongPacksMask == songPackMasks && + s._configuration.SupportedVersionRange == versionRange ); if (!AvaliableServers.Any()) return false; diff --git a/BeatTogether.DedicatedServer.Instancing/LayerService.cs b/BeatTogether.DedicatedServer.Instancing/LayerService.cs index fd496a7..6926348 100644 --- a/BeatTogether.DedicatedServer.Instancing/LayerService.cs +++ b/BeatTogether.DedicatedServer.Instancing/LayerService.cs @@ -6,6 +6,7 @@ using Serilog; using System.Net; using System.Threading.Tasks; +using BeatTogether.Core.Models; namespace BeatTogether.DedicatedServer.Instancing { @@ -50,10 +51,10 @@ public Task DisconnectPlayer(string InstanceSecret, string PlayerUserId) return Task.CompletedTask; } - public Task GetAvailablePublicServer(InvitePolicy invitePolicy, GameplayServerMode serverMode, SongSelectionMode songMode, GameplayServerControlSettings serverControlSettings, BeatmapDifficultyMask difficultyMask, GameplayModifiersMask modifiersMask, string songPackMasks) + public Task GetAvailablePublicServer(InvitePolicy invitePolicy, GameplayServerMode serverMode, SongSelectionMode songMode, GameplayServerControlSettings serverControlSettings, BeatmapDifficultyMask difficultyMask, GameplayModifiersMask modifiersMask, string songPackMasks, VersionRange versionRange) { IServerInstance? serverInstance = null; - if (_instanceRegistry.TryGetAvailablePublicServer(invitePolicy, serverMode, songMode, serverControlSettings, difficultyMask, modifiersMask, songPackMasks, out var instance)) + if (_instanceRegistry.TryGetAvailablePublicServer(invitePolicy, serverMode, songMode, serverControlSettings, difficultyMask, modifiersMask, songPackMasks, versionRange, out var instance)) { serverInstance = new ServerInstance(instance, IPEndPoint.Parse($"{_instancingConfiguration.HostEndpoint}:{instance._configuration.Port}")); } diff --git a/BeatTogether.DedicatedServer.Interface/BeatTogether.DedicatedServer.Interface.csproj b/BeatTogether.DedicatedServer.Interface/BeatTogether.DedicatedServer.Interface.csproj index d8a6cd6..c829173 100644 --- a/BeatTogether.DedicatedServer.Interface/BeatTogether.DedicatedServer.Interface.csproj +++ b/BeatTogether.DedicatedServer.Interface/BeatTogether.DedicatedServer.Interface.csproj @@ -17,7 +17,7 @@ - + diff --git a/BeatTogether.DedicatedServer.Kernel/BeatTogether.DedicatedServer.Kernel.csproj b/BeatTogether.DedicatedServer.Kernel/BeatTogether.DedicatedServer.Kernel.csproj index 4a8fb86..30710f3 100644 --- a/BeatTogether.DedicatedServer.Kernel/BeatTogether.DedicatedServer.Kernel.csproj +++ b/BeatTogether.DedicatedServer.Kernel/BeatTogether.DedicatedServer.Kernel.csproj @@ -7,7 +7,7 @@ - + diff --git a/BeatTogether.DedicatedServer.Messaging/BeatTogether.DedicatedServer.Messaging.csproj b/BeatTogether.DedicatedServer.Messaging/BeatTogether.DedicatedServer.Messaging.csproj index 045384b..4894a99 100644 --- a/BeatTogether.DedicatedServer.Messaging/BeatTogether.DedicatedServer.Messaging.csproj +++ b/BeatTogether.DedicatedServer.Messaging/BeatTogether.DedicatedServer.Messaging.csproj @@ -7,7 +7,7 @@ - + diff --git a/BeatTogether.DedicatedServer/BeatTogether.DedicatedServer.csproj b/BeatTogether.DedicatedServer/BeatTogether.DedicatedServer.csproj index 722fe89..7ff2c59 100644 --- a/BeatTogether.DedicatedServer/BeatTogether.DedicatedServer.csproj +++ b/BeatTogether.DedicatedServer/BeatTogether.DedicatedServer.csproj @@ -1,4 +1,4 @@ - + Exe