-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Threading.Tasks;
using Impostor.Api.Innersloth;
using Impostor.Api.Net.Messages;
/// </summary>
IClientPlayer? Player { get; }
+ PlatformSpecificData PlatformSpecificData { get; }
+
ValueTask<bool> ReportCheatAsync(CheatContext context, string message);
ValueTask HandleMessageAsync(IMessageReader message, MessageType messageType);
-using System;
+using System;
using System.Collections.Generic;
using Impostor.Api.Innersloth;
using Impostor.Api.Innersloth.Customization;
IEnumerable<ITaskInfo> Tasks { get; }
DateTimeOffset LastMurder { get; }
+
+ uint PlayerLevel { get; }
}
}
-using System;
+using System;
using Impostor.Api.Innersloth;
namespace Impostor.Api.Net.Messages.S2C
{
public class Message01JoinGameS2C
{
- public static void SerializeJoin(IMessageWriter writer, bool clear, int gameCode, int playerId, int hostId)
+ public static void SerializeJoin(IMessageWriter writer, bool clear, int gameCode, IClientPlayer player, int hostId)
{
if (clear)
{
writer.StartMessage(MessageFlags.JoinGame);
writer.Write(gameCode);
- writer.Write(playerId);
+ writer.Write(player.Client.Id);
writer.Write(hostId);
+ writer.Write(player.Client.Name);
+ player.Client.PlatformSpecificData.Serialize(writer);
+ writer.WritePacked(player.Character?.PlayerInfo.PlayerLevel ?? 1);
writer.EndMessage();
}
-using System;
+using System;
namespace Impostor.Api.Net.Messages.S2C
{
public static class Message07JoinedGameS2C
{
- public static void Serialize(IMessageWriter writer, bool clear, int gameCode, int playerId, int hostId, int[] otherPlayerIds)
+ public static void Serialize(IMessageWriter writer, bool clear, int gameCode, int playerId, int hostId, IClientPlayer[] otherPlayers)
{
if (clear)
{
writer.Write(gameCode);
writer.Write(playerId);
writer.Write(hostId);
- writer.WritePacked(otherPlayerIds.Length);
+ writer.WritePacked(otherPlayers.Length);
- foreach (var id in otherPlayerIds)
+ foreach (var ply in otherPlayers)
{
- writer.WritePacked(id);
+ writer.WritePacked(ply.Client.Id);
+ writer.Write(ply.Client.Name);
+ ply.Client.PlatformSpecificData.Serialize(writer);
+ writer.WritePacked(ply.Character?.PlayerInfo.PlayerLevel ?? 1);
}
writer.EndMessage();
public DateTimeOffset LastMurder { get; set; }
+ public uint PlayerLevel { get; internal set; }
+
public bool CanMurder(IGame game, IDateTimeProvider dateTimeProvider)
{
if (!IsImpostor)
Outfits[key].Deserialize(reader);
}
- var PlayerLevel = reader.ReadPackedUInt32();
+ PlayerLevel = reader.ReadPackedUInt32();
var flag = reader.ReadByte();
Disconnected = (flag & 1) != 0;
-using System.Linq;
+using System.Linq;
using System.Threading.Tasks;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
private void WriteJoinedGameMessage(IMessageWriter message, bool clear, IClientPlayer player)
{
- var playerIds = _players
+ var players = _players
.Where(x => x.Value != player)
- .Select(x => x.Key)
+ .Select(x => x.Value)
.ToArray();
- Message07JoinedGameS2C.Serialize(message, clear, Code, player.Client.Id, HostId, playerIds);
+ Message07JoinedGameS2C.Serialize(message, clear, Code, player.Client.Id, HostId, players);
}
private void WriteAlterGameMessage(IMessageWriter message, bool clear, bool isPublic)
-using System;
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
private ValueTask BroadcastJoinMessage(IMessageWriter message, bool clear, ClientPlayer player)
{
- Message01JoinGameS2C.SerializeJoin(message, clear, Code, player.Client.Id, HostId);
+ Message01JoinGameS2C.SerializeJoin(message, clear, Code, player, HostId);
return SendToAllExceptAsync(message, player.Client.Id);
}