using Content.Shared.Guidebook;
namespace Content.Client.Guidebook;
///
/// Client system for storing and retrieving values extracted from entity prototypes
/// for display in the guidebook ().
/// Requests data from the server on .
/// Can also be pushed new data when the server reloads prototypes.
///
public sealed class GuidebookDataSystem : EntitySystem
{
private GuidebookData? _data;
public override void Initialize()
{
base.Initialize();
SubscribeNetworkEvent(OnServerUpdated);
// Request data from the server
RaiseNetworkEvent(new RequestGuidebookDataEvent());
}
private void OnServerUpdated(UpdateGuidebookDataEvent args)
{
// Got new data from the server, either in response to our request, or because prototypes reloaded on the server
_data = args.Data;
_data.Freeze();
}
///
/// Attempts to retrieve a value using the given identifiers.
/// See for more information.
///
public bool TryGetValue(string prototype, string component, string field, out object? value)
{
if (_data == null)
{
value = null;
return false;
}
return _data.TryGetValue(prototype, component, field, out value);
}
}