Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/nuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
branches:
- master
- Net6.0
- dev

jobs:
nuget-1:
Expand Down
4 changes: 3 additions & 1 deletion BeatTogether.Core.ServerMessaging/Abstractions/ILayer2.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using BeatTogether.Core.Enums;
using BeatTogether.Core.Models;

namespace BeatTogether.Core.Abstractions
{
Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public interface IServerInstance
public bool AllowChroma { get; set; }
public bool AllowME { get; set; }
public bool AllowNE { get; set; }
}
public VersionRange SupportedVersionRange { get; set; }
}

}
2 changes: 1 addition & 1 deletion BeatTogether.Core.ServerMessaging/BeatTogether.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>1.1.0</Version>
<Version>1.2.0</Version>
<PackageIcon>icon.png</PackageIcon>
<Authors>BeatTogether</Authors>
<Company>BeatTogether</Company>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}
54 changes: 54 additions & 0 deletions BeatTogether.Core.ServerMessaging/Models/VersionRange.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
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; } = "0.0.0";
public string MaxVersion { get; set; } = new Version(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue).ToString();

public static VersionRange? FindVersionRange(List<VersionRange> versionRanges, Version version)
{
foreach (var range in versionRanges)
if (VersionRangeSatisfies(range, version))
return range;
return null;
}

public static VersionRange? FindVersionRange(List<VersionRange> 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);
return version >= minVersion && version <= maxVersion;
}

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
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ public Server(IServerInstance instance)
AllowChroma = instance.AllowChroma;
AllowME = instance.AllowME;
AllowNE = instance.AllowNE;
}
public Server() { }

SupportedVersionRange = instance.SupportedVersionRange;
}
public Server() { }

public string ServerName { get; set; } = string.Empty;
public string Secret { get; set; } = string.Empty;
Expand All @@ -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();
}
}
Loading