]> git.deb.at Git - rhonda/impostor.git/commitdiff
Add name/psd/level to JoinGame- and JoinedGameS2C
authorminiduikboot <mini@duikbo.at>
Fri, 12 Nov 2021 20:11:48 +0000 (21:11 +0100)
committerminiduikboot <mini@duikbo.at>
Fri, 12 Nov 2021 20:11:48 +0000 (21:11 +0100)
Two players can now connect to the same lobby

src/Impostor.Api/Net/IClient.cs
src/Impostor.Api/Net/Inner/Objects/IInnerPlayerInfo.cs
src/Impostor.Api/Net/Messages/S2C/Message01JoinGameS2C.cs
src/Impostor.Api/Net/Messages/S2C/Message07JoinedGameS2C.cs
src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs
src/Impostor.Server/Net/State/Game.Outgoing.cs
src/Impostor.Server/Net/State/Game.cs

index 02cdee8c24a00dc3ba3455e172c8d8e39ba2764c..ba74bd44b3d2c962645287a5a6c12835fcf4c729 100644 (file)
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
 using System.Threading.Tasks;
 using Impostor.Api.Innersloth;
 using Impostor.Api.Net.Messages;
@@ -65,6 +65,8 @@ namespace Impostor.Api.Net
         /// </summary>
         IClientPlayer? Player { get; }
 
+        PlatformSpecificData PlatformSpecificData { get; }
+
         ValueTask<bool> ReportCheatAsync(CheatContext context, string message);
 
         ValueTask HandleMessageAsync(IMessageReader message, MessageType messageType);
index 6bf5c44ca24b64aa1be15041c836913fbb3ed4a6..368f3a10ebeeccdfdf478073173a0abfb18d675d 100644 (file)
@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Collections.Generic;
 using Impostor.Api.Innersloth;
 using Impostor.Api.Innersloth.Customization;
@@ -36,5 +36,7 @@ namespace Impostor.Api.Net.Inner.Objects
         IEnumerable<ITaskInfo> Tasks { get; }
 
         DateTimeOffset LastMurder { get; }
+
+        uint PlayerLevel { get; }
     }
 }
index 74fdc40552e6729a4f8e0736431387122ee58a55..6bd38c9482dcc31129424b6570e23751a2038fdc 100644 (file)
@@ -1,11 +1,11 @@
-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)
             {
@@ -14,8 +14,11 @@ namespace Impostor.Api.Net.Messages.S2C
 
             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();
         }
 
index 857fea1b873730c7867ca6a9859a012a61d3bb21..151d945087e80383e2f91af55165487322573c0c 100644 (file)
@@ -1,10 +1,10 @@
-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)
             {
@@ -15,11 +15,14 @@ namespace Impostor.Api.Net.Messages.S2C
             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();
index 553dddad38c08adc7518a569b01c2c50a32dea56..7130f4b3e46e0ca928dfe2b9ae2f547c6d688de9 100644 (file)
@@ -44,6 +44,8 @@ namespace Impostor.Server.Net.Inner.Objects
 
         public DateTimeOffset LastMurder { get; set; }
 
+        public uint PlayerLevel { get; internal set; }
+
         public bool CanMurder(IGame game, IDateTimeProvider dateTimeProvider)
         {
             if (!IsImpostor)
@@ -70,7 +72,7 @@ namespace Impostor.Server.Net.Inner.Objects
                 Outfits[key].Deserialize(reader);
             }
 
-            var PlayerLevel = reader.ReadPackedUInt32();
+            PlayerLevel = reader.ReadPackedUInt32();
 
             var flag = reader.ReadByte();
             Disconnected = (flag & 1) != 0;
index 30ebb725f5b7d5091909526395c6e8f39355383e..8e5ab9b73239c9011bbbc886fafc347a7079dd1c 100644 (file)
@@ -1,4 +1,4 @@
-using System.Linq;
+using System.Linq;
 using System.Threading.Tasks;
 using Impostor.Api.Innersloth;
 using Impostor.Api.Net;
@@ -78,12 +78,12 @@ namespace Impostor.Server.Net.State
 
         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)
index 2d28eeadde1433cabddcb8a08e519a97dfe50ff2..3896b6aa8d2dbdb5754ddc8b1c10c9940f68b11a 100644 (file)
@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
@@ -114,7 +114,7 @@ namespace Impostor.Server.Net.State
 
         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);
         }