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);
}
}
}