using System.Linq; using Content.Shared.Ghost; using Content.Shared.Humanoid; using Content.Shared.StatusIcon; using Content.Shared.StatusIcon.Components; using Content.Shared.Zombies; using Robust.Client.GameObjects; using Robust.Shared.Prototypes; namespace Content.Client.Zombies; public sealed class ZombieSystem : SharedZombieSystem { [Dependency] private readonly IPrototypeManager _prototype = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(GetZombieIcon); SubscribeLocalEvent(GetInitialInfectedIcon); } private void GetZombieIcon(Entity ent, ref GetStatusIconsEvent args) { var iconPrototype = _prototype.Index(ent.Comp.StatusIcon); args.StatusIcons.Add(iconPrototype); } private void GetInitialInfectedIcon(Entity ent, ref GetStatusIconsEvent args) { if (HasComp(ent)) return; var iconPrototype = _prototype.Index(ent.Comp.StatusIcon); args.StatusIcons.Add(iconPrototype); } 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); } } }