From: AeonLucid Date: Sat, 24 Oct 2020 20:12:04 +0000 (+0200) Subject: Expose PlayerName again to fix example plugin X-Git-Tag: v1.2.2~96^2~9 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=94f19a38c51db56e313b5e3541fb97691ccfd693;p=rhonda%2Fimpostor.git Expose PlayerName again to fix example plugin --- diff --git a/src/Impostor.Api/Net/Inner/Objects/IInnerPlayerControl.cs b/src/Impostor.Api/Net/Inner/Objects/IInnerPlayerControl.cs index 1b5c3ba..45b949a 100644 --- a/src/Impostor.Api/Net/Inner/Objects/IInnerPlayerControl.cs +++ b/src/Impostor.Api/Net/Inner/Objects/IInnerPlayerControl.cs @@ -2,5 +2,6 @@ { public interface IInnerPlayerControl { + IInnerPlayerInfo PlayerInfo { get; } } } \ No newline at end of file diff --git a/src/Impostor.Api/Net/Inner/Objects/IInnerPlayerInfo.cs b/src/Impostor.Api/Net/Inner/Objects/IInnerPlayerInfo.cs new file mode 100644 index 0000000..e1de18b --- /dev/null +++ b/src/Impostor.Api/Net/Inner/Objects/IInnerPlayerInfo.cs @@ -0,0 +1,10 @@ +namespace Impostor.Api.Net.Inner.Objects +{ + public interface IInnerPlayerInfo + { + /// + /// Gets the name of the player as decided by the host. + /// + public string PlayerName { get; } + } +} \ No newline at end of file diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerGameData.PlayerInfo.cs b/src/Impostor.Server/Net/Inner/Objects/InnerGameData.PlayerInfo.cs deleted file mode 100644 index 677aa5f..0000000 --- a/src/Impostor.Server/Net/Inner/Objects/InnerGameData.PlayerInfo.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Collections.Generic; -using Impostor.Api.Innersloth; -using Impostor.Api.Net.Messages; - -namespace Impostor.Server.Net.Inner.Objects -{ - internal partial class InnerGameData - { - public class PlayerInfo - { - public PlayerInfo(byte playerId) - { - PlayerId = playerId; - } - - public InnerPlayerControl Controller { get; internal set; } - - public byte PlayerId { get; } - - public string PlayerName { get; internal set; } - - public byte ColorId { get; internal set; } - - public uint HatId { get; internal set; } - - public uint PetId { get; internal set; } - - public uint SkinId { get; internal set; } - - public bool Disconnected { get; internal set; } - - public bool IsImpostor { get; internal set; } - - public bool IsDead { get; internal set; } - - public DeathReason LastDeathReason { get; internal set; } - - public List Tasks { get; internal set; } - - public void Serialize(IMessageWriter writer) - { - throw new NotImplementedException(); - } - - public void Deserialize(IMessageReader reader) - { - PlayerName = reader.ReadString(); - ColorId = reader.ReadByte(); - HatId = reader.ReadPackedUInt32(); - PetId = reader.ReadPackedUInt32(); - SkinId = reader.ReadPackedUInt32(); - var flag = reader.ReadByte(); - Disconnected = (flag & 1) > 0; - IsImpostor = (flag & 2) > 0; - IsDead = (flag & 4) > 0; - var taskCount = reader.ReadByte(); - Tasks = new List(); - for (var i = 0; i < taskCount; i++) - { - Tasks.Add(new TaskInfo()); - Tasks[i].Deserialize(reader); - } - } - } - } -} \ No newline at end of file diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs b/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs index 04cf1cd..7f71b1f 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs @@ -17,13 +17,13 @@ namespace Impostor.Server.Net.Inner.Objects { private readonly ILogger _logger; private readonly Game _game; - private readonly ConcurrentDictionary _allPlayers; + private readonly ConcurrentDictionary _allPlayers; public InnerGameData(ILogger logger, Game game, IServiceProvider serviceProvider) { _logger = logger; _game = game; - _allPlayers = new ConcurrentDictionary(); + _allPlayers = new ConcurrentDictionary(); Components.Add(this); Components.Add(ActivatorUtilities.CreateInstance(serviceProvider)); @@ -31,9 +31,9 @@ namespace Impostor.Server.Net.Inner.Objects public int PlayerCount => _allPlayers.Count; - public IReadOnlyDictionary Players => _allPlayers; + public IReadOnlyDictionary Players => _allPlayers; - public PlayerInfo? GetPlayerById(byte id) + public InnerPlayerInfo? GetPlayerById(byte id) { if (id == byte.MaxValue) { @@ -89,7 +89,7 @@ namespace Impostor.Server.Net.Inner.Objects } else { - var playerInfo = new PlayerInfo(message.Tag); + var playerInfo = new InnerPlayerInfo(message.Tag); playerInfo.Deserialize(reader); @@ -132,7 +132,7 @@ namespace Impostor.Server.Net.Inner.Objects for (var i = 0; i < num; i++) { var playerId = reader.ReadByte(); - var playerInfo = new PlayerInfo(playerId); + var playerInfo = new InnerPlayerInfo(playerId); playerInfo.Deserialize(reader); @@ -151,7 +151,7 @@ namespace Impostor.Server.Net.Inner.Objects internal void AddPlayer(InnerPlayerControl control) { var playerId = control.PlayerId; - var playerInfo = new PlayerInfo(control.PlayerId); + var playerInfo = new InnerPlayerInfo(control.PlayerId); if (_allPlayers.TryAdd(playerId, playerInfo)) { diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.Api.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.Api.cs new file mode 100644 index 0000000..225d78f --- /dev/null +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.Api.cs @@ -0,0 +1,9 @@ +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Server.Net.Inner.Objects +{ + internal partial class InnerPlayerControl : IInnerPlayerControl + { + IInnerPlayerInfo IInnerPlayerControl.PlayerInfo => PlayerInfo; + } +} \ No newline at end of file diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index d761771..4d3576c 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -14,7 +14,7 @@ using Microsoft.Extensions.Logging; namespace Impostor.Server.Net.Inner.Objects { - internal class InnerPlayerControl : InnerNetObject, IInnerPlayerControl + internal partial class InnerPlayerControl : InnerNetObject { private readonly ILogger _logger; private readonly IEventManager _eventManager; @@ -37,10 +37,9 @@ namespace Impostor.Server.Net.Inner.Objects public byte PlayerId { get; private set; } - public InnerGameData.PlayerInfo PlayerInfo { get; internal set; } + public InnerPlayerInfo PlayerInfo { get; internal set; } - public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, - IMessageReader reader) + public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader) { switch (call) { diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs new file mode 100644 index 0000000..3982a30 --- /dev/null +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using Impostor.Api.Innersloth; +using Impostor.Api.Net.Inner.Objects; +using Impostor.Api.Net.Messages; + +namespace Impostor.Server.Net.Inner.Objects +{ + internal class InnerPlayerInfo : IInnerPlayerInfo + { + public InnerPlayerInfo(byte playerId) + { + PlayerId = playerId; + } + + public InnerPlayerControl Controller { get; internal set; } + + public byte PlayerId { get; } + + public string PlayerName { get; internal set; } + + public byte ColorId { get; internal set; } + + public uint HatId { get; internal set; } + + public uint PetId { get; internal set; } + + public uint SkinId { get; internal set; } + + public bool Disconnected { get; internal set; } + + public bool IsImpostor { get; internal set; } + + public bool IsDead { get; internal set; } + + public DeathReason LastDeathReason { get; internal set; } + + public List Tasks { get; internal set; } + + public void Serialize(IMessageWriter writer) + { + throw new NotImplementedException(); + } + + public void Deserialize(IMessageReader reader) + { + PlayerName = reader.ReadString(); + ColorId = reader.ReadByte(); + HatId = reader.ReadPackedUInt32(); + PetId = reader.ReadPackedUInt32(); + SkinId = reader.ReadPackedUInt32(); + var flag = reader.ReadByte(); + Disconnected = (flag & 1) > 0; + IsImpostor = (flag & 2) > 0; + IsDead = (flag & 4) > 0; + var taskCount = reader.ReadByte(); + Tasks = new List(); + for (var i = 0; i < taskCount; i++) + { + Tasks.Add(new InnerGameData.TaskInfo()); + Tasks[i].Deserialize(reader); + } + } + } +} \ No newline at end of file