diff --git a/Content.Server/Mind/Mind.cs b/Content.Server/Mind/Mind.cs index df137b387d..8ad457885f 100644 --- a/Content.Server/Mind/Mind.cs +++ b/Content.Server/Mind/Mind.cs @@ -166,8 +166,8 @@ namespace Content.Server.Mind _roles.Add(role); role.Greet(); - var message = new RoleAddedMessage(role); - OwnedEntity?.SendMessage(OwnedComponent, message); + var message = new RoleAddedEvent(role); + OwnedEntity?.EntityManager.EventBus.RaiseLocalEvent(OwnedEntity.Uid, message); return role; } @@ -188,8 +188,8 @@ namespace Content.Server.Mind _roles.Remove(role); - var message = new RoleRemovedMessage(role); - OwnedEntity?.SendMessage(OwnedComponent, message); + var message = new RoleRemovedEvent(role); + OwnedEntity?.EntityManager.EventBus.RaiseLocalEvent(OwnedEntity.Uid, message); } public bool HasRole() where T : Role @@ -278,7 +278,7 @@ namespace Content.Server.Mind if (IsVisitingEntity && (ghostCheckOverride // to force mind transfer, for example from ControlMobVerb || !VisitingEntity!.TryGetComponent(out GhostComponent? ghostComponent) // visiting entity is not a Ghost - || !ghostComponent.CanReturnToBody)) // it is a ghost, but cannot return to body anyway, so it's okay + || !ghostComponent.CanReturnToBody)) // it is a ghost, but cannot return to body anyway, so it's okay { VisitingEntity = null; } diff --git a/Content.Server/Roles/RoleAddedEvent.cs b/Content.Server/Roles/RoleAddedEvent.cs new file mode 100644 index 0000000000..2c163c7134 --- /dev/null +++ b/Content.Server/Roles/RoleAddedEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Server.Roles +{ + public sealed class RoleAddedEvent : RoleEvent + { + public RoleAddedEvent(Role role) : base(role) { } + } +} diff --git a/Content.Server/Roles/RoleAddedMessage.cs b/Content.Server/Roles/RoleAddedMessage.cs deleted file mode 100644 index a0c1fe92ef..0000000000 --- a/Content.Server/Roles/RoleAddedMessage.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Server.Roles -{ - public class RoleAddedMessage : RoleMessage - { - public RoleAddedMessage(Role role) : base(role) { } - } -} diff --git a/Content.Server/Roles/RoleMessage.cs b/Content.Server/Roles/RoleEvent.cs similarity index 65% rename from Content.Server/Roles/RoleMessage.cs rename to Content.Server/Roles/RoleEvent.cs index 0ce6242a17..dbddcc5ba4 100644 --- a/Content.Server/Roles/RoleMessage.cs +++ b/Content.Server/Roles/RoleEvent.cs @@ -2,11 +2,11 @@ namespace Content.Server.Roles { - public class RoleMessage : ComponentMessage + public class RoleEvent : EntityEventArgs { public readonly Role Role; - public RoleMessage(Role role) + public RoleEvent(Role role) { Role = role; } diff --git a/Content.Server/Roles/RoleRemovedEvent.cs b/Content.Server/Roles/RoleRemovedEvent.cs new file mode 100644 index 0000000000..cfa4fb845f --- /dev/null +++ b/Content.Server/Roles/RoleRemovedEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Server.Roles +{ + public sealed class RoleRemovedEvent : RoleEvent + { + public RoleRemovedEvent(Role role) : base(role) { } + } +} diff --git a/Content.Server/Roles/RoleRemovedMessage.cs b/Content.Server/Roles/RoleRemovedMessage.cs deleted file mode 100644 index 4abc709d0c..0000000000 --- a/Content.Server/Roles/RoleRemovedMessage.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Server.Roles -{ - public class RoleRemovedMessage : RoleMessage - { - public RoleRemovedMessage(Role role) : base(role) { } - } -} diff --git a/Content.Server/Suspicion/EntitySystems/SuspicionRoleSystem.cs b/Content.Server/Suspicion/EntitySystems/SuspicionRoleSystem.cs index 0c1fff2703..b2a914f2dd 100644 --- a/Content.Server/Suspicion/EntitySystems/SuspicionRoleSystem.cs +++ b/Content.Server/Suspicion/EntitySystems/SuspicionRoleSystem.cs @@ -1,4 +1,6 @@ using System.Collections.Generic; +using Content.Server.Roles; +using Content.Server.Suspicion.Roles; using Content.Shared.GameTicking; using JetBrains.Annotations; using Robust.Server.GameObjects; @@ -20,20 +22,34 @@ namespace Content.Server.Suspicion.EntitySystems base.Initialize(); SubscribeLocalEvent(Reset); - SubscribeLocalEvent((HandlePlayerAttached)); - SubscribeLocalEvent((HandlePlayerDetached)); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnRoleAdded); + SubscribeLocalEvent(OnRoleRemoved); } - private void HandlePlayerDetached(EntityUid uid, SuspicionRoleComponent component, PlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, SuspicionRoleComponent component, PlayerDetachedEvent args) { component.SyncRoles(); } - private void HandlePlayerAttached(EntityUid uid, SuspicionRoleComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, SuspicionRoleComponent component, PlayerAttachedEvent args) { component.SyncRoles(); } + private void OnRoleAdded(EntityUid uid, SuspicionRoleComponent component, RoleAddedEvent args) + { + if (args.Role is not SuspicionRole role) return; + component.Role = role; + } + + private void OnRoleRemoved(EntityUid uid, SuspicionRoleComponent component, RoleRemovedEvent args) + { + if (args.Role is not SuspicionRole) return; + component.Role = null; + } + #endregion public void AddTraitor(SuspicionRoleComponent role) diff --git a/Content.Server/Suspicion/SuspicionRoleComponent.cs b/Content.Server/Suspicion/SuspicionRoleComponent.cs index 10ca4f61b5..709a5b402a 100644 --- a/Content.Server/Suspicion/SuspicionRoleComponent.cs +++ b/Content.Server/Suspicion/SuspicionRoleComponent.cs @@ -162,20 +162,5 @@ namespace Content.Server.Suspicion return new SuspicionRoleComponentState(Role?.Name, Role?.Antagonist, allies.ToArray()); } - - public override void HandleMessage(ComponentMessage message, IComponent? component) - { - base.HandleMessage(message, component); - - switch (message) - { - case RoleAddedMessage {Role: SuspicionRole role}: - Role = role; - break; - case RoleRemovedMessage {Role: SuspicionRole}: - Role = null; - break; - } - } } }