using Content.Client.DamageState; using Content.Shared._Goobstation.Blob; using Content.Shared._Goobstation.Blob.Components; using Robust.Client.GameObjects; using Robust.Shared.GameStates; namespace Content.Client._Goobstation.Blob; public sealed class BlobTileSystem : SharedBlobTileSystem { protected override void TryUpgrade(Entity target, Entity core, EntityUid observer) { } } public sealed class BlobTileVisualizerSystem : VisualizerSystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnBlobTileHandleState); } private void UpdateAppearance(EntityUid id, BlobTileComponent tile, AppearanceComponent? appearance = null, SpriteComponent? sprite = null) { if (!Resolve(id, ref appearance, ref sprite)) return; foreach (var key in new []{ DamageStateVisualLayers.Base, DamageStateVisualLayers.BaseUnshaded }) { if (!sprite.LayerMapTryGet(key, out _)) continue; sprite.LayerSetColor(key, tile.Color); } } protected override void OnAppearanceChange(EntityUid uid, BlobTileComponent component, ref AppearanceChangeEvent args) { UpdateAppearance(uid, component, args.Component, args.Sprite); } private void OnBlobTileHandleState(EntityUid uid, BlobTileComponent component, ref AfterAutoHandleStateEvent args) { UpdateAppearance(uid, component); } }