ArcadeInvincibilityWireActions.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using Content.Server.Arcade.SpaceVillain;
  2. using Content.Server.Wires;
  3. using Content.Shared.Arcade;
  4. using Content.Shared.Wires;
  5. namespace Content.Server.Arcade;
  6. public sealed partial class ArcadePlayerInvincibleWireAction : BaseToggleWireAction
  7. {
  8. public override string Name { get; set; } = "wire-name-arcade-invincible";
  9. public override Color Color { get; set; } = Color.Purple;
  10. public override object? StatusKey { get; } = SharedSpaceVillainArcadeComponent.Indicators.HealthManager;
  11. public override void ToggleValue(EntityUid owner, bool setting)
  12. {
  13. if (EntityManager.TryGetComponent<SpaceVillainArcadeComponent>(owner, out var arcade)
  14. && arcade.Game != null)
  15. {
  16. arcade.Game.PlayerChar.Invincible = !setting;
  17. }
  18. }
  19. public override bool GetValue(EntityUid owner)
  20. {
  21. return EntityManager.TryGetComponent<SpaceVillainArcadeComponent>(owner, out var arcade)
  22. && arcade.Game != null
  23. && !arcade.Game.PlayerChar.Invincible;
  24. }
  25. public override StatusLightState? GetLightState(Wire wire)
  26. {
  27. if (EntityManager.TryGetComponent<SpaceVillainArcadeComponent>(wire.Owner, out var arcade)
  28. && arcade.Game != null)
  29. {
  30. return arcade.Game.PlayerChar.Invincible || arcade.Game.VillainChar.Invincible
  31. ? StatusLightState.BlinkingSlow
  32. : StatusLightState.On;
  33. }
  34. return StatusLightState.Off;
  35. }
  36. }
  37. public sealed partial class ArcadeEnemyInvincibleWireAction : BaseToggleWireAction
  38. {
  39. public override string Name { get; set; } = "wire-name-player-invincible";
  40. public override Color Color { get; set; } = Color.Purple;
  41. public override object? StatusKey { get; } = null;
  42. public override void ToggleValue(EntityUid owner, bool setting)
  43. {
  44. if (EntityManager.TryGetComponent<SpaceVillainArcadeComponent>(owner, out var arcade)
  45. && arcade.Game != null)
  46. {
  47. arcade.Game.VillainChar.Invincible = !setting;
  48. }
  49. }
  50. public override bool GetValue(EntityUid owner)
  51. {
  52. return EntityManager.TryGetComponent<SpaceVillainArcadeComponent>(owner, out var arcade)
  53. && arcade.Game != null
  54. && !arcade.Game.VillainChar.Invincible;
  55. }
  56. public override StatusLightData? GetStatusLightData(Wire wire)
  57. {
  58. return null;
  59. }
  60. }
  61. public enum ArcadeInvincibilityWireActionKeys : short
  62. {
  63. Player,
  64. Enemy
  65. }