mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-09 18:31:17 +03:00
* Move CartridgeLoader to shared * get containered bozo * the dirtening * mass shared the cartridges * predict keb cartridges * no overpopups * the tidying continues * review * aaaaaa * fix UI flickers * dependency me * mimed * refactor: removed unused usings, dots at the end of old xml-doc, additional in line-breaks --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Co-authored-by: Fildrance <fildrance@gmail.com>
63 lines
2.4 KiB
C#
63 lines
2.4 KiB
C#
using Content.Shared.Administration.Logs;
|
|
using Content.Shared.Database;
|
|
|
|
namespace Content.Shared.CartridgeLoader.Cartridges;
|
|
|
|
public sealed partial class NotekeeperCartridgeSystem : EntitySystem
|
|
{
|
|
[Dependency] private CartridgeLoaderSystem _cartridgeLoaderSystem = default!;
|
|
[Dependency] private ISharedAdminLogManager _adminLogger = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
SubscribeLocalEvent<NotekeeperCartridgeComponent, CartridgeMessageEvent>(OnUiMessage);
|
|
SubscribeLocalEvent<NotekeeperCartridgeComponent, CartridgeUiReadyEvent>(OnUiReady);
|
|
}
|
|
|
|
/// <summary>
|
|
/// This gets called when the ui fragment needs to be updated for the first time after activating
|
|
/// </summary>
|
|
private void OnUiReady(EntityUid uid, NotekeeperCartridgeComponent component, CartridgeUiReadyEvent args)
|
|
{
|
|
UpdateUiState(uid, args.Loader, component);
|
|
}
|
|
|
|
/// <summary>
|
|
/// The ui messages received here get wrapped by a CartridgeMessageEvent and are relayed from the <see cref="CartridgeLoaderSystem"/>
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// The cartridge specific ui message event needs to inherit from the CartridgeMessageEvent
|
|
/// </remarks>
|
|
private void OnUiMessage(EntityUid uid, NotekeeperCartridgeComponent component, CartridgeMessageEvent args)
|
|
{
|
|
if (args is not NotekeeperUiMessageEvent message)
|
|
return;
|
|
|
|
if (message.Action == NotekeeperUiAction.Add)
|
|
{
|
|
component.Notes.Add(message.Note);
|
|
_adminLogger.Add(LogType.PdaInteract, LogImpact.Low,
|
|
$"{ToPrettyString(args.Actor)} added a note to PDA: '{message.Note}' contained on: {ToPrettyString(uid)}");
|
|
}
|
|
else
|
|
{
|
|
component.Notes.Remove(message.Note);
|
|
_adminLogger.Add(LogType.PdaInteract, LogImpact.Low,
|
|
$"{ToPrettyString(args.Actor)} removed a note from PDA: '{message.Note}' was contained on: {ToPrettyString(uid)}");
|
|
}
|
|
|
|
Dirty(uid, component);
|
|
UpdateUiState(uid, GetEntity(args.LoaderUid), component);
|
|
}
|
|
|
|
private void UpdateUiState(EntityUid uid, EntityUid loaderUid, NotekeeperCartridgeComponent? component)
|
|
{
|
|
if (!Resolve(uid, ref component))
|
|
return;
|
|
|
|
var state = new NotekeeperUiState(component.Notes);
|
|
_cartridgeLoaderSystem.UpdateCartridgeUiState(loaderUid, state);
|
|
}
|
|
}
|