Hud refactor (#7202)
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com> Co-authored-by: Jezithyr <jmaster9999@gmail.com> Co-authored-by: Jezithyr <Jezithyr@gmail.com> Co-authored-by: Visne <39844191+Visne@users.noreply.github.com> Co-authored-by: wrexbe <wrexbe@protonmail.com> Co-authored-by: wrexbe <81056464+wrexbe@users.noreply.github.com>
This commit is contained in:
58
Content.Client/CharacterInfo/CharacterInfoSystem.cs
Normal file
58
Content.Client/CharacterInfo/CharacterInfoSystem.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using Content.Shared.CharacterInfo;
|
||||
using Content.Shared.Objectives;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Player;
|
||||
|
||||
namespace Content.Client.CharacterInfo;
|
||||
|
||||
public sealed class CharacterInfoSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPlayerManager _players = default!;
|
||||
|
||||
public event Action<CharacterData>? OnCharacterUpdate;
|
||||
public event Action? OnCharacterDetached;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<PlayerAttachSysMessage>(OnPlayerAttached);
|
||||
|
||||
SubscribeNetworkEvent<CharacterInfoEvent>(OnCharacterInfoEvent);
|
||||
}
|
||||
|
||||
public void RequestCharacterInfo()
|
||||
{
|
||||
var entity = _players.LocalPlayer?.ControlledEntity;
|
||||
if (entity == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RaiseNetworkEvent(new RequestCharacterInfoEvent(entity.Value));
|
||||
}
|
||||
|
||||
private void OnPlayerAttached(PlayerAttachSysMessage msg)
|
||||
{
|
||||
if (msg.AttachedEntity == default)
|
||||
{
|
||||
OnCharacterDetached?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCharacterInfoEvent(CharacterInfoEvent msg, EntitySessionEventArgs args)
|
||||
{
|
||||
var sprite = CompOrNull<ISpriteComponent>(msg.EntityUid);
|
||||
var data = new CharacterData(msg.JobTitle, msg.Objectives, msg.Briefing, sprite, Name(msg.EntityUid));
|
||||
|
||||
OnCharacterUpdate?.Invoke(data);
|
||||
}
|
||||
|
||||
public readonly record struct CharacterData(
|
||||
string Job,
|
||||
Dictionary<string, List<ConditionInfo>> Objectives,
|
||||
string Briefing,
|
||||
ISpriteComponent? Sprite,
|
||||
string EntityName
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user