From d8af65a7043d7182ce6bbb53a454cc2c54278e3b Mon Sep 17 00:00:00 2001 From: Milon Date: Thu, 2 Jan 2025 06:18:40 +0100 Subject: [PATCH 1/3] innovation except no not really --- .../_CD/Engraving/EngraveableSystem.cs | 5 +++ .../_CD/Engraving/EngraveableSystem.cs | 31 +++++-------------- .../_CD/Engraving/EngraveableComponent.cs | 9 ++++-- .../_CD/Engraving/SharedEngraveableSystem.cs | 27 ++++++++++++++++ 4 files changed, 46 insertions(+), 26 deletions(-) create mode 100644 Content.Client/_CD/Engraving/EngraveableSystem.cs rename {Content.Server => Content.Shared}/_CD/Engraving/EngraveableComponent.cs (80%) create mode 100644 Content.Shared/_CD/Engraving/SharedEngraveableSystem.cs 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..8584049a5ec 100644 --- a/Content.Server/_CD/Engraving/EngraveableSystem.cs +++ b/Content.Server/_CD/Engraving/EngraveableSystem.cs @@ -1,50 +1,34 @@ 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); + 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) + 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. if (ent.Comp.EngravedMessage != string.Empty) 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. @@ -62,10 +46,11 @@ private void AddEngraveVerb(Entity ent, ref GetVerbsEvent< (string message) => { // If either the actor or comp have magically vanished - if (actor.PlayerSession.AttachedEntity == null || !HasComp(ent)) + if (actor.PlayerSession.AttachedEntity == null || !HasComp(ent)) 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); + } +} From 600349be8bd3ab75932b4d968413159ba5ffa7e4 Mon Sep 17 00:00:00 2001 From: Milon Date: Thu, 2 Jan 2025 06:23:34 +0100 Subject: [PATCH 2/3] FUCKING RIDER REFACTOR --- Content.Server/_CD/Engraving/EngraveableSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/_CD/Engraving/EngraveableSystem.cs b/Content.Server/_CD/Engraving/EngraveableSystem.cs index 8584049a5ec..1f629c7c3ba 100644 --- a/Content.Server/_CD/Engraving/EngraveableSystem.cs +++ b/Content.Server/_CD/Engraving/EngraveableSystem.cs @@ -18,10 +18,10 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent>(AddEngraveVerb); + SubscribeLocalEvent>(AddEngraveVerb); } - private void AddEngraveVerb(Entity ent, ref GetVerbsEvent args) + 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. if (ent.Comp.EngravedMessage != string.Empty) From 266d358f7df26a14e27b932a88cc74d1c4aa0161 Mon Sep 17 00:00:00 2001 From: Milon Date: Thu, 2 Jan 2025 20:52:00 +0100 Subject: [PATCH 3/3] webedit ops because i swear to fucking god rider hates me --- Content.Server/_CD/Engraving/EngraveableSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/_CD/Engraving/EngraveableSystem.cs b/Content.Server/_CD/Engraving/EngraveableSystem.cs index 1f629c7c3ba..d6bdaf44873 100644 --- a/Content.Server/_CD/Engraving/EngraveableSystem.cs +++ b/Content.Server/_CD/Engraving/EngraveableSystem.cs @@ -46,7 +46,7 @@ private void AddEngraveVerb(Entity ent, ref GetVerbsEvent< (string message) => { // If either the actor or comp have magically vanished - if (actor.PlayerSession.AttachedEntity == null || !HasComp(ent)) + if (actor.PlayerSession.AttachedEntity == null || !HasComp(ent)) return; ent.Comp.EngravedMessage = message;