Merge pull request #471 from Impostor/feature/2022.3.29

This commit is contained in:
js6pak authored and GitHub committed 2022-04-09 12:42:51 +00:00
commit 4797d899af
6 files changed
+40 -12

No files matched your search

+20 -10
View File
@@ -171,29 +171,34 @@ namespace Impostor.Api.Innersloth
writer.Write((uint)VotingTime);
writer.Write((bool)IsDefaults);
if (version > 1)
if (version >= 2)
{
writer.Write((byte)EmergencyCooldown);
}
if (version > 2)
if (version >= 3)
{
writer.Write((bool)ConfirmImpostor);
writer.Write((bool)VisualTasks);
}
if (version > 3)
if (version >= 4)
{
writer.Write((bool)AnonymousVotes);
writer.Write((byte)TaskBarUpdate);
}
if (version > 4)
if (version >= 5)
{
RoleOptions.Serialize(writer);
}
if (version > 5)
if (version >= 6)
{
// Nothing was changed in V6
}
if (version > 6)
{
throw new ImpostorException($"Unknown GameOptionsData version {Version}.");
}
@@ -238,29 +243,34 @@ namespace Impostor.Api.Innersloth
IsDefaults = bytes.ReadBoolean();
if (Version > 1)
if (Version >= 2)
{
EmergencyCooldown = bytes.ReadByte();
}
if (Version > 2)
if (Version >= 3)
{
ConfirmImpostor = bytes.ReadBoolean();
VisualTasks = bytes.ReadBoolean();
}
if (Version > 3)
if (Version >= 4)
{
AnonymousVotes = bytes.ReadBoolean();
TaskBarUpdate = (TaskBarUpdate)bytes.ReadByte();
}
if (Version > 4)
if (Version >= 5)
{
RoleOptions = RoleOptionsData.Deserialize(bytes);
}
if (Version > 5)
if (Version >= 6)
{
// Nothing was changed in V6
}
if (Version > 6)
{
throw new ImpostorException($"Unknown GameOptionsData version {Version}.");
}
+5
View File
@@ -65,6 +65,11 @@ namespace Impostor.Api.Net
/// </summary>
IClientPlayer? Player { get; }
/// <summary>
/// Gets the version of the game the client is using.
/// </summary>
int GameVersion { get; }
/// <summary>
/// Gets platform specific data of the <see cref="IClient" />.
/// </summary>
@@ -19,6 +19,10 @@ namespace Impostor.Api.Net.Messages.S2C
writer.Write(player.Client.Name);
player.Client.PlatformSpecificData.Serialize(writer);
writer.WritePacked(player.Character?.PlayerInfo.PlayerLevel ?? 1);
// ProductUserId and FriendCode are not yet known, so set them to an empty string
writer.Write(string.Empty);
writer.Write(string.Empty);
writer.EndMessage();
}
@@ -4,7 +4,7 @@ namespace Impostor.Api.Net.Messages.S2C
{
public static class Message07JoinedGameS2C
{
public static void Serialize(IMessageWriter writer, bool clear, int gameCode, int playerId, int hostId, IClientPlayer[] otherPlayers)
public static void Serialize(IMessageWriter writer, bool clear, int gameCode, int playerId, int hostId, IClientPlayer[] otherPlayers, bool post20220202 = true)
{
if (clear)
{
@@ -23,6 +23,13 @@ namespace Impostor.Api.Net.Messages.S2C
writer.Write(ply.Client.Name);
ply.Client.PlatformSpecificData.Serialize(writer);
writer.WritePacked(ply.Character?.PlayerInfo.PlayerLevel ?? 1);
if (post20220202)
{
// ProductUserId and FriendCode are not yet known, so set them to an empty string
writer.Write(string.Empty);
writer.Write(string.Empty);
}
}
writer.EndMessage();
@@ -24,6 +24,7 @@ namespace Impostor.Server.Net.Manager
GameVersion.GetVersion(2021, 11, 9), // 2021.11.9
GameVersion.GetVersion(2021, 12, 14), // 2021.12.14
GameVersion.GetVersion(2022, 1, 10), // 2021.2.23
GameVersion.GetVersion(2022, 2, 2), // 2022.3.29
};
private readonly ILogger<ClientManager> _logger;
@@ -83,7 +83,8 @@ namespace Impostor.Server.Net.State
.Select(x => x.Value)
.ToArray();
Message07JoinedGameS2C.Serialize(message, clear, Code, player.Client.Id, HostId, players);
// TODO: clean up post20220202 when versions before it are no longer supported.
Message07JoinedGameS2C.Serialize(message, clear, Code, player.Client.Id, HostId, players, player.Client.GameVersion >= GameVersion.GetVersion(2022, 2, 2));
}
private void WriteAlterGameMessage(IMessageWriter message, bool clear, bool isPublic)