using JetBrains.Annotations;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
namespace Robust.Shared.Player;
///
/// System that handles .
///
public sealed partial class ActorSystem : EntitySystem
{
[Dependency] private ISharedPlayerManager _playerManager = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnActorShutdown);
}
private void OnActorShutdown(EntityUid entity, ActorComponent component, ComponentShutdown args)
{
_playerManager.SetAttachedEntity(component.PlayerSession, null);
}
///
/// Retrieves the session on a given entity, if one exists.
///
[PublicAPI]
public bool TryGetSession(EntityUid? uid, out ICommonSession? session)
{
if (TryComp(uid, out ActorComponent? actorComp))
{
session = actorComp.PlayerSession;
return true;
}
session = null;
return false;
}
///
/// Retrieves the session on a given entity, if one exists.
///
[PublicAPI]
[Pure]
public ICommonSession? GetSession(EntityUid? uid)
{
if (TryComp(uid, out ActorComponent? actorComp))
{
return actorComp.PlayerSession;
}
return null;
}
}