using System.Linq; using Content.Shared.Humanoid; using Content.Shared.StatusIcon; using Content.Shared.StatusIcon.Components; using Content.Shared.Zombies; using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.Prototypes; namespace Content.Client.Zombies; public sealed class ZombieSystem : SharedZombieSystem { [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IPrototypeManager _prototype = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnGetStatusIcon); } private void OnStartup(EntityUid uid, ZombieComponent component, ComponentStartup args) { if (HasComp(uid)) return; if (!TryComp(uid, out var sprite)) return; for (var i = 0; i < sprite.AllLayers.Count(); i++) { sprite.LayerSetColor(i, component.SkinColor); } } private void OnGetStatusIcon(EntityUid uid, ZombieComponent component, ref GetStatusIconsEvent args) { if (!HasComp(_player.LocalPlayer?.ControlledEntity)) return; args.StatusIcons.Add(_prototype.Index(component.ZombieStatusIcon)); } }