1
0

DragonSystem.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Content.Shared.Dragon;
  2. using Robust.Client.GameObjects;
  3. using Robust.Shared.GameStates;
  4. namespace Content.Client.Dragon;
  5. public sealed class DragonSystem : EntitySystem
  6. {
  7. [Dependency] private readonly SharedPointLightSystem _lights = default!;
  8. public override void Initialize()
  9. {
  10. base.Initialize();
  11. SubscribeLocalEvent<DragonRiftComponent, ComponentHandleState>(OnRiftHandleState);
  12. }
  13. private void OnRiftHandleState(EntityUid uid, DragonRiftComponent component, ref ComponentHandleState args)
  14. {
  15. if (args.Current is not DragonRiftComponentState state)
  16. return;
  17. if (component.State == state.State) return;
  18. component.State = state.State;
  19. TryComp<SpriteComponent>(uid, out var sprite);
  20. TryComp<PointLightComponent>(uid, out var light);
  21. if (sprite == null && light == null)
  22. return;
  23. switch (state.State)
  24. {
  25. case DragonRiftState.Charging:
  26. sprite?.LayerSetColor(0, Color.FromHex("#569fff"));
  27. if (light != null)
  28. {
  29. _lights.SetColor(uid, Color.FromHex("#366db5"), light);
  30. }
  31. break;
  32. case DragonRiftState.AlmostFinished:
  33. sprite?.LayerSetColor(0, Color.FromHex("#cf4cff"));
  34. if (light != null)
  35. {
  36. _lights.SetColor(uid, Color.FromHex("#9e2fc1"), light);
  37. }
  38. break;
  39. case DragonRiftState.Finished:
  40. sprite?.LayerSetColor(0, Color.FromHex("#edbc36"));
  41. if (light != null)
  42. {
  43. _lights.SetColor(uid, Color.FromHex("#cbaf20"), light);
  44. }
  45. break;
  46. }
  47. }
  48. }