SSD Indicator (#19701)

This commit is contained in:
Morb
2023-09-11 08:52:56 +03:00
committed by GitHub
parent d80aca5d16
commit 2a143c873c
8 changed files with 107 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
using Content.Shared.StatusIcon;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.SSDIndicator;
/// <summary>
/// Shows status icon when player in SSD
/// </summary>
[RegisterComponent, NetworkedComponent]
[AutoGenerateComponentState]
public sealed partial class SSDIndicatorComponent : Component
{
[ViewVariables(VVAccess.ReadWrite)]
[AutoNetworkedField]
public bool IsSSD = true;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("icon", customTypeSerializer: typeof(PrototypeIdSerializer<StatusIconPrototype>))]
public string Icon = "SSDIcon";
}

View File

@@ -0,0 +1,27 @@
using Content.Shared.Mind.Components;
namespace Content.Shared.SSDIndicator;
/// <summary>
/// Handle changing player SSD indicator status
/// </summary>
public sealed class SSDIndicatorSystem : EntitySystem
{
public override void Initialize()
{
SubscribeLocalEvent<SSDIndicatorComponent, MindAddedMessage>(OnMindAdded);
SubscribeLocalEvent<SSDIndicatorComponent, MindRemovedMessage>(OnMindRemoved);
}
private void OnMindAdded(EntityUid uid, SSDIndicatorComponent component, MindAddedMessage args)
{
component.IsSSD = false;
Dirty(uid, component);
}
private void OnMindRemoved(EntityUid uid, SSDIndicatorComponent component, MindRemovedMessage args)
{
component.IsSSD = true;
Dirty(uid, component);
}
}