using Content.Shared.Dragon; using Robust.Client.GameObjects; using Robust.Shared.GameStates; namespace Content.Client.Dragon; public sealed class DragonSystem : EntitySystem { [Dependency] private readonly SharedPointLightSystem _lights = default!; [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnRiftHandleState); } private void OnRiftHandleState(EntityUid uid, DragonRiftComponent component, ref ComponentHandleState args) { if (args.Current is not DragonRiftComponentState state) return; if (component.State == state.State) return; component.State = state.State; TryComp(uid, out var sprite); TryComp(uid, out var light); if (sprite == null && light == null) return; switch (state.State) { case DragonRiftState.Charging: _sprite.LayerSetColor((uid, sprite), 0, Color.FromHex("#569fff")); if (light != null) { _lights.SetColor(uid, Color.FromHex("#366db5"), light); } break; case DragonRiftState.AlmostFinished: _sprite.LayerSetColor((uid, sprite), 0, Color.FromHex("#cf4cff")); if (light != null) { _lights.SetColor(uid, Color.FromHex("#9e2fc1"), light); } break; case DragonRiftState.Finished: _sprite.LayerSetColor((uid, sprite), 0, Color.FromHex("#edbc36")); if (light != null) { _lights.SetColor(uid, Color.FromHex("#cbaf20"), light); } break; } } }