2025-01-17 00:08:13 +03:00
|
|
|
using Content.Shared._CP14.Knowledge;
|
2025-03-06 18:56:06 +10:00
|
|
|
using Content.Shared._CP14.Knowledge.Events;
|
2025-01-18 14:43:11 +03:00
|
|
|
using Content.Shared._CP14.Knowledge.Prototypes;
|
|
|
|
|
using Robust.Client.Player;
|
|
|
|
|
using Robust.Shared.Prototypes;
|
2025-01-17 00:08:13 +03:00
|
|
|
|
|
|
|
|
namespace Content.Client._CP14.Knowledge;
|
|
|
|
|
|
2025-03-06 18:56:06 +10:00
|
|
|
public sealed class ClientCP14KnowledgeSystem : SharedCP14KnowledgeSystem
|
2025-01-17 00:08:13 +03:00
|
|
|
{
|
2025-01-18 14:43:11 +03:00
|
|
|
[Dependency] private readonly IPlayerManager _players = default!;
|
|
|
|
|
|
|
|
|
|
public event Action<KnowledgeData>? OnKnowledgeUpdate;
|
|
|
|
|
|
|
|
|
|
public override void Initialize()
|
|
|
|
|
{
|
|
|
|
|
base.Initialize();
|
|
|
|
|
|
|
|
|
|
SubscribeNetworkEvent<CP14KnowledgeInfoEvent>(OnCharacterKnowledgeEvent);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void RequestKnowledgeInfo()
|
|
|
|
|
{
|
|
|
|
|
var entity = _players.LocalEntity;
|
|
|
|
|
if (entity is null)
|
|
|
|
|
return;
|
|
|
|
|
|
2025-03-06 18:56:06 +10:00
|
|
|
RaiseNetworkEvent(new CP14RequestKnowledgeInfoEvent(GetNetEntity(entity.Value)));
|
2025-01-18 14:43:11 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnCharacterKnowledgeEvent(CP14KnowledgeInfoEvent msg, EntitySessionEventArgs args)
|
|
|
|
|
{
|
|
|
|
|
var entity = GetEntity(msg.NetEntity);
|
|
|
|
|
var data = new KnowledgeData(entity, msg.AllKnowledge);
|
|
|
|
|
|
|
|
|
|
OnKnowledgeUpdate?.Invoke(data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public readonly record struct KnowledgeData(
|
|
|
|
|
EntityUid Entity,
|
2025-03-06 18:56:06 +10:00
|
|
|
HashSet<ProtoId<CP14KnowledgePrototype>> AllKnowledge
|
2025-01-18 14:43:11 +03:00
|
|
|
);
|
2025-01-17 00:08:13 +03:00
|
|
|
}
|