using Robust.Client.GameObjects; using Content.Shared._DV.CosmicCult.Components; namespace Content.Client._DV.CosmicCult; /// /// Visualizer for The Monument of the Cosmic Cult. /// public sealed class MonumentVisualizerSystem : EntitySystem { [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnAppearanceChanged); } private void OnAppearanceChanged(Entity ent, ref AppearanceChangeEvent args) { if (args.Sprite == null) return; _sprite.LayerMapTryGet((ent, args.Sprite), MonumentVisualLayers.TransformLayer, out var transformLayer, false); _sprite.LayerMapTryGet((ent, args.Sprite), MonumentVisualLayers.MonumentLayer, out var baseLayer, false); _appearance.TryGetData(ent, MonumentVisuals.Transforming, out var transforming, args.Component); _appearance.TryGetData(ent, MonumentVisuals.Tier3, out var tier3, args.Component); if (!tier3) _sprite.LayerSetRsiState((ent, args.Sprite), transformLayer, "transform-stage2"); else _sprite.LayerSetRsiState((ent, args.Sprite), transformLayer, "transform-stage3"); if (transforming && HasComp(ent)) { _sprite.LayerSetAnimationTime((ent, args.Sprite), transformLayer, 0f); _sprite.LayerSetVisible((ent, args.Sprite), transformLayer, true); _sprite.LayerSetVisible((ent, args.Sprite), baseLayer, false); } else { _sprite.LayerSetVisible((ent, args.Sprite), transformLayer, false); _sprite.LayerSetVisible((ent, args.Sprite), baseLayer, true); } } }