From 40a41f357338b190dbeb8c629d6910380fc23691 Mon Sep 17 00:00:00 2001 From: js6pak Date: Sun, 28 Mar 2021 19:27:49 +0200 Subject: [PATCH] Fix a bug causing InnerPlayerInfo.Controller to be always null --- src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs | 5 ++++- src/Impostor.Server/Net/State/Game.Data.cs | 9 ++------- 2 files changed, 6 insertions(+), 8 deletions(-) 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)); -- 2.39.5