diff --git a/Content.Client/Kudzu/KudzuVisualizer.cs b/Content.Client/Kudzu/KudzuVisualizer.cs deleted file mode 100644 index 7724a86a4e..0000000000 --- a/Content.Client/Kudzu/KudzuVisualizer.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Content.Shared.Kudzu; -using Robust.Client.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Serialization.Manager.Attributes; - -namespace Content.Client.Kudzu; - -public sealed class KudzuVisualizer : AppearanceVisualizer -{ - [DataField("layer")] - private int Layer { get; } = 0; - - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - var entities = IoCManager.Resolve(); - if (!entities.TryGetComponent(component.Owner, out SpriteComponent? sprite)) - { - return; - } - - if (component.TryGetData(KudzuVisuals.Variant, out int var) && component.TryGetData(KudzuVisuals.GrowthLevel, out int level)) - { - sprite.LayerMapReserveBlank(Layer); - sprite.LayerSetState(0, $"kudzu_{level}{var}"); - } - } -} diff --git a/Content.Client/Kudzu/KudzuVisualizerComponent.cs b/Content.Client/Kudzu/KudzuVisualizerComponent.cs new file mode 100644 index 0000000000..11ff2965b5 --- /dev/null +++ b/Content.Client/Kudzu/KudzuVisualizerComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Client.Kudzu +{ + [RegisterComponent] + public sealed class KudzuVisualsComponent : Component + { + [DataField("layer")] + public int Layer { get; } = 0; + } + +} diff --git a/Content.Client/Kudzu/KudzuVisualizerSystem.cs b/Content.Client/Kudzu/KudzuVisualizerSystem.cs new file mode 100644 index 0000000000..143ca09f6c --- /dev/null +++ b/Content.Client/Kudzu/KudzuVisualizerSystem.cs @@ -0,0 +1,22 @@ +using Content.Shared.Kudzu; +using Robust.Client.GameObjects; + +namespace Content.Client.Kudzu +{ + + public sealed class KudzuVisualsSystem : VisualizerSystem + { + protected override void OnAppearanceChange(EntityUid uid, KudzuVisualsComponent component, ref AppearanceChangeEvent args) + { + + if (args.Sprite == null) + return; + if (args.Component.TryGetData(KudzuVisuals.Variant, out int var) + && args.Component.TryGetData(KudzuVisuals.GrowthLevel, out int level)) + { + var index = args.Sprite.LayerMapReserveBlank(component.Layer); + args.Sprite.LayerSetState(index, $"kudzu_{level}{var}"); + } + } + } +} diff --git a/Content.Server/Entry/IgnoredComponents.cs b/Content.Server/Entry/IgnoredComponents.cs index f5ab20d53d..b7987bc2e0 100644 --- a/Content.Server/Entry/IgnoredComponents.cs +++ b/Content.Server/Entry/IgnoredComponents.cs @@ -31,6 +31,7 @@ namespace Content.Server.Entry "PotencyVisuals", "PaperVisuals", "SurveillanceCameraVisuals", + "KudzuVisuals", }; } } diff --git a/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml b/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml index 5ec243612f..a0d53d345f 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml @@ -18,8 +18,7 @@ drawdepth: Overdoors netsync: false - type: Appearance - visuals: - - type: KudzuVisualizer + - type: KudzuVisuals - type: Clickable - type: Transform anchored: true