return true;
}
- internal void AddPlayer(InnerPlayerControl control)
+ internal InnerPlayerInfo? AddPlayer(InnerPlayerControl control)
{
var playerId = control.PlayerId;
var playerInfo = new InnerPlayerInfo(control.PlayerId);
if (_allPlayers.TryAdd(playerId, playerInfo))
{
control.PlayerInfo = playerInfo;
+ return playerInfo;
}
+
+ return null;
}
private void SetTasks(byte playerId, ReadOnlyMemory<byte> taskTypeIds)
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));