Improve stripping UI (#9768)
This commit is contained in:
43
Content.Client/Strip/StrippableSystem.cs
Normal file
43
Content.Client/Strip/StrippableSystem.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using Content.Client.Inventory;
|
||||
using Content.Shared.Cuffs.Components;
|
||||
using Content.Shared.Ensnaring.Components;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Inventory.Events;
|
||||
using Robust.Client.GameObjects;
|
||||
|
||||
namespace Content.Client.Strip;
|
||||
|
||||
/// <summary>
|
||||
/// This is the client-side stripping system, which just triggers UI updates on events.
|
||||
/// </summary>
|
||||
public sealed class StrippableSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<StrippableComponent, CuffedStateChangeEvent>(OnCuffStateChange);
|
||||
SubscribeLocalEvent<StrippableComponent, DidEquipEvent>(UpdateUi);
|
||||
SubscribeLocalEvent<StrippableComponent, DidUnequipEvent>(UpdateUi);
|
||||
SubscribeLocalEvent<StrippableComponent, DidEquipHandEvent>(UpdateUi);
|
||||
SubscribeLocalEvent<StrippableComponent, DidUnequipHandEvent>(UpdateUi);
|
||||
SubscribeLocalEvent<StrippableComponent, EnsnaredChangedEvent>(UpdateUi);
|
||||
}
|
||||
|
||||
private void OnCuffStateChange(EntityUid uid, StrippableComponent component, ref CuffedStateChangeEvent args)
|
||||
{
|
||||
UpdateUi(uid, component);
|
||||
}
|
||||
|
||||
public void UpdateUi(EntityUid uid, StrippableComponent? component = null, EntityEventArgs? args = null)
|
||||
{
|
||||
if (!TryComp(uid, out ClientUserInterfaceComponent? uiComp))
|
||||
return;
|
||||
|
||||
foreach (var ui in uiComp.Interfaces)
|
||||
{
|
||||
if (ui is StrippableBoundUserInterface stripUi)
|
||||
stripUi.DirtyMenu();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user