mirror of
https://github.com/Impostor/Impostor.git
synced 2026-10-20 01:46:11 +00:00
Clean up owned playerinfo's when disconnecting
This commit is contained in:
1 parent
01eb7bb375
commit
cceecb0c36
2 files changed
+31
No files matched your search
@@ -123,5 +123,15 @@ namespace Impostor.Server.Net.State
|
||||
message.EndMessage();
|
||||
message.EndMessage();
|
||||
}
|
||||
|
||||
private void WriteObjectDespawn(IMessageWriter message, InnerNetObject obj)
|
||||
{
|
||||
message.StartMessage(MessageFlags.GameData);
|
||||
Code.Serialize(message);
|
||||
message.StartMessage(GameDataTag.DespawnFlag);
|
||||
message.WritePacked(obj.NetId);
|
||||
message.EndMessage();
|
||||
message.EndMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,6 +85,27 @@ namespace Impostor.Server.Net.State
|
||||
}
|
||||
});
|
||||
|
||||
// Clean up the PlayerInfo if we own it
|
||||
foreach (var playerInfo in GameNet.GameData.Players.Values)
|
||||
{
|
||||
if (playerInfo.ClientId == playerId)
|
||||
{
|
||||
if (playerInfo.OwnerId == ServerOwned)
|
||||
{
|
||||
_logger.LogInformation("Destroying PlayerInfo {nid}", playerInfo.NetId);
|
||||
GameNet.GameData.RemovePlayer(playerInfo.PlayerId);
|
||||
RemoveNetObject(playerInfo);
|
||||
|
||||
var writer = MessageWriter.Get(MessageType.Reliable);
|
||||
WriteObjectDespawn(writer, playerInfo);
|
||||
await SendToAllAsync(writer);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user