mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-09 10:21:18 +03:00
* Make StationRecords YAML savable * Update SharedStationRecordsSystem.cs * Predict Station Records * Attribute subs, query Resolve & DirtyFields * Cleanup, prediction fixes, locale fixes * Update GeneralRecordsUi.cs Remove GeneralStationRecordConsoleState and obsolete SelectStationRecord
73 lines
2.3 KiB
C#
73 lines
2.3 KiB
C#
using Content.Shared.Station;
|
|
using Content.Shared.StationRecords;
|
|
using Content.Shared.StationRecords.Components;
|
|
using Content.Shared.StationRecords.Systems;
|
|
using Robust.Client.UserInterface;
|
|
|
|
namespace Content.Client.StationRecords;
|
|
|
|
public sealed partial class GeneralStationRecordConsoleBoundUserInterface : BoundUserInterface
|
|
{
|
|
[ViewVariables]
|
|
private GeneralStationRecordConsoleWindow? _window;
|
|
|
|
[Dependency] private SharedStationSystem _stationSys = default!;
|
|
[Dependency] private StationRecordsSystem _recordsSys = default!;
|
|
|
|
public GeneralStationRecordConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
|
{
|
|
}
|
|
|
|
protected override void Open()
|
|
{
|
|
base.Open();
|
|
|
|
_window = this.CreateWindow<GeneralStationRecordConsoleWindow>();
|
|
_window.OnKeySelected += SelectStationRecord;
|
|
_window.OnFiltersChanged += SetStationRecordFilter;
|
|
_window.OnDeleted += id => SendPredictedMessage(new DeleteStationRecord(id));
|
|
Update();
|
|
}
|
|
|
|
public override void Update()
|
|
{
|
|
base.Update();
|
|
|
|
if (!EntMan.TryGetComponent(Owner, out GeneralStationRecordConsoleComponent? comp))
|
|
return;
|
|
|
|
var owningStation = _stationSys.GetOwningStation(Owner);
|
|
|
|
if (!EntMan.TryGetComponent(owningStation, out StationRecordsComponent? stationRecords))
|
|
return;
|
|
|
|
var listing = _recordsSys.BuildListing((owningStation.Value, stationRecords), comp.Filter);
|
|
|
|
GeneralStationRecord? record = null;
|
|
if (comp.ActiveKey != null)
|
|
{
|
|
var key = new StationRecordKey(comp.ActiveKey.Value, owningStation.Value);
|
|
_recordsSys.TryGetRecord(key, out record, stationRecords);
|
|
}
|
|
|
|
_window?.UpdateState(comp.ActiveKey, record, listing, comp.Filter, comp.CanDeleteEntries);
|
|
}
|
|
|
|
private void SelectStationRecord(uint? key)
|
|
{
|
|
if (!EntMan.TryGetComponent(Owner, out GeneralStationRecordConsoleComponent? comp))
|
|
return;
|
|
|
|
comp.ActiveKey = key;
|
|
Update();
|
|
}
|
|
|
|
private void SetStationRecordFilter(StationRecordFilterType type, string value)
|
|
{
|
|
if (!EntMan.TryGetComponent(Owner, out GeneralStationRecordConsoleComponent? comp))
|
|
return;
|
|
|
|
comp.Filter = new StationRecordsFilter(type, value);
|
|
Update();
|
|
}
|
|
}
|