OnPlayerLeave

This commit is contained in:
JohnCorby 2022-05-27 13:44:43 -07:00
parent 7ed6fed50c
commit e2c2be9355

View File

@ -1,7 +1,10 @@
using QSB.EchoesOfTheEye.LightSensorSync.Messages;
using Cysharp.Threading.Tasks;
using QSB.EchoesOfTheEye.LightSensorSync.Messages;
using QSB.Messaging;
using QSB.Player;
using QSB.WorldSync;
using System;
using System.Threading;
namespace QSB.EchoesOfTheEye.LightSensorSync.WorldObjects;
@ -16,4 +19,16 @@ internal class QSBLightSensor : WorldObject<SingleLightSensor>
public override void SendInitialState(uint to) =>
this.SendMessage(new LightSensorAuthorityMessage(AuthorityOwner) { To = to });
public override async UniTask Init(CancellationToken ct) => QSBPlayerManager.OnRemovePlayer += OnPlayerLeave;
public override void OnRemoval() => QSBPlayerManager.OnRemovePlayer -= OnPlayerLeave;
private void OnPlayerLeave(PlayerInfo player)
{
if (AuthorityOwner == player.PlayerId)
{
// player left with authority, give it to us if we can
this.SendMessage(new LightSensorAuthorityMessage(AttachedObject.enabled ? QSBPlayerManager.LocalPlayerId : 0));
}
}
}