From: js6pak Date: Sun, 28 Mar 2021 17:27:49 +0000 (+0200) Subject: Fix a bug causing InnerPlayerInfo.Controller to be always null X-Git-Tag: v1.3.0~2 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=40a41f357338b190dbeb8c629d6910380fc23691;p=rhonda%2Fimpostor.git Fix a bug causing InnerPlayerInfo.Controller to be always null --- diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs b/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs index 0b2dbf4..aa617bc 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs @@ -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 taskTypeIds) diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index 9e5fd01..90bf765 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -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));