diff --git a/Content.Client/_CD/Engraving/EngraveableSystem.cs b/Content.Client/_CD/Engraving/EngraveableSystem.cs new file mode 100644 index 00000000000..63f862c0217 --- /dev/null +++ b/Content.Client/_CD/Engraving/EngraveableSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared._CD.Engraving; + +namespace Content.Client._CD.Engraving; + +public sealed class EngraveableSystem : SharedEngraveableSystem; diff --git a/Content.Server/_CD/Engraving/EngraveableSystem.cs b/Content.Server/_CD/Engraving/EngraveableSystem.cs index 8ab5c65e24b..d6bdaf44873 100644 --- a/Content.Server/_CD/Engraving/EngraveableSystem.cs +++ b/Content.Server/_CD/Engraving/EngraveableSystem.cs @@ -1,42 +1,26 @@ using Content.Server.Administration; using Content.Server.Administration.Logs; -using Content.Server.Popups; +using Content.Shared._CD.Engraving; using Content.Shared.Database; using Content.Shared.Popups; -using Content.Shared.Examine; using Content.Shared.Verbs; using Robust.Shared.Player; -using Robust.Shared.Utility; namespace Content.Server._CD.Engraving; -public sealed class EngraveableSystem : EntitySystem +public sealed class EngraveableSystem : SharedEngraveableSystem { [Dependency] private readonly IAdminLogManager _adminLogger = default!; - [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly QuickDialogSystem _dialog = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnExamined); SubscribeLocalEvent>(AddEngraveVerb); } - private void OnExamined(Entity ent, ref ExaminedEvent args) - { - var msg = new FormattedMessage(); - msg.AddMarkupOrThrow(Loc.GetString(ent.Comp.EngravedMessage == string.Empty - ? ent.Comp.NoEngravingText - : ent.Comp.HasEngravingText)); - - if (ent.Comp.EngravedMessage != string.Empty) - msg.AddMarkupOrThrow(Loc.GetString(ent.Comp.EngravedMessage)); - - args.PushMessage(msg, 1); - } - private void AddEngraveVerb(Entity ent, ref GetVerbsEvent args) { // First check if it's already been engraved. If it has, don't let them do it again. @@ -44,7 +28,7 @@ private void AddEngraveVerb(Entity ent, ref GetVerbsEvent< return; // We need an actor to give the verb. - if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) + if (!TryComp(args.User, out var actor)) return; // Make sure ghosts can't engrave stuff. @@ -66,6 +50,7 @@ private void AddEngraveVerb(Entity ent, ref GetVerbsEvent< return; ent.Comp.EngravedMessage = message; + Dirty(ent); _popup.PopupEntity(Loc.GetString(ent.Comp.EngraveSuccessMessage), actor.PlayerSession.AttachedEntity.Value, actor.PlayerSession, diff --git a/Content.Server/_CD/Engraving/EngraveableComponent.cs b/Content.Shared/_CD/Engraving/EngraveableComponent.cs similarity index 80% rename from Content.Server/_CD/Engraving/EngraveableComponent.cs rename to Content.Shared/_CD/Engraving/EngraveableComponent.cs index 17670de2981..630533878ba 100644 --- a/Content.Server/_CD/Engraving/EngraveableComponent.cs +++ b/Content.Shared/_CD/Engraving/EngraveableComponent.cs @@ -1,15 +1,18 @@ -namespace Content.Server._CD.Engraving; +using Robust.Shared.GameStates; + +namespace Content.Shared._CD.Engraving; /// /// Allows an items' description to be modified with an engraving /// -[RegisterComponent, Access(typeof(EngraveableSystem))] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedEngraveableSystem))] public sealed partial class EngraveableComponent : Component { /// /// Message given to user to notify them a message was sent /// - [DataField] + [DataField, AutoNetworkedField] public string EngravedMessage = string.Empty; /// diff --git a/Content.Shared/_CD/Engraving/SharedEngraveableSystem.cs b/Content.Shared/_CD/Engraving/SharedEngraveableSystem.cs new file mode 100644 index 00000000000..7c8241ed232 --- /dev/null +++ b/Content.Shared/_CD/Engraving/SharedEngraveableSystem.cs @@ -0,0 +1,27 @@ +using Content.Shared.Examine; +using Robust.Shared.Utility; + +namespace Content.Shared._CD.Engraving; + +public abstract class SharedEngraveableSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnExamined); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + var msg = new FormattedMessage(); + msg.AddMarkupOrThrow(Loc.GetString(ent.Comp.EngravedMessage == string.Empty + ? ent.Comp.NoEngravingText + : ent.Comp.HasEngravingText)); + + if (ent.Comp.EngravedMessage != string.Empty) + msg.AddMarkupPermissive(Loc.GetString(ent.Comp.EngravedMessage)); + + args.PushMessage(msg, 1); + } +}