]> git.deb.at Git - rhonda/impostor.git/commitdiff
Fix a bug causing InnerPlayerInfo.Controller to be always null
authorjs6pak <kubastaron@hotmail.com>
Sun, 28 Mar 2021 17:27:49 +0000 (19:27 +0200)
committerjs6pak <kubastaron@hotmail.com>
Sun, 28 Mar 2021 17:27:49 +0000 (19:27 +0200)
src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs
src/Impostor.Server/Net/State/Game.Data.cs

index 0b2dbf4a52a05ea350a9c7869ba036237db1d2e9..aa617bc3a39365d140904c23bf14b2d6d74bf564 100644 (file)
@@ -131,7 +131,7 @@ namespace Impostor.Server.Net.Inner.Objects
             return true;
         }
 
-        internal void AddPlayer(InnerPlayerControl control)
+        internal InnerPlayerInfo? AddPlayer(InnerPlayerControl control)
         {
             var playerId = control.PlayerId;
             var playerInfo = new InnerPlayerInfo(control.PlayerId);
@@ -139,7 +139,10 @@ namespace Impostor.Server.Net.Inner.Objects
             if (_allPlayers.TryAdd(playerId, playerInfo))
             {
                 control.PlayerInfo = playerInfo;
+                return playerInfo;
             }
+
+            return null;
         }
 
         private void SetTasks(byte playerId, ReadOnlyMemory<byte> taskTypeIds)
index 9e5fd014884cf583c7c2996a4f0b26362b17e3c6..90bf765f5405a3e36094b74a0d7a6256bdbfe8a1 100644 (file)
@@ -329,16 +329,11 @@ namespace Impostor.Server.Net.State
                     player.DisableSpawnTimeout();
 
                     // Hook up InnerPlayerControl <-> InnerPlayerControl.PlayerInfo.
-                    var playerInfo = GameNet.GameData!.GetPlayerById(control.PlayerId);
+                    var playerInfo = GameNet.GameData!.GetPlayerById(control.PlayerId) ?? GameNet.GameData.AddPlayer(control);
 
                     if (playerInfo != null)
                     {
-                        playerInfo.Controller = control;
-                        control.PlayerInfo = playerInfo;
-                    }
-                    else
-                    {
-                        GameNet.GameData.AddPlayer(control);
+                        control.PlayerInfo.Controller = control;
                     }
 
                     await _eventManager.CallAsync(new PlayerSpawnedEvent(this, player, control));