From 8ddef7611b35ee5d6ef63b8a3e4cad8c73380fc5 Mon Sep 17 00:00:00 2001 From: Menshin Date: Sat, 22 Apr 2023 12:42:36 +0200 Subject: [PATCH] Some fixes to magboots (#15392) --- Content.Client/Clothing/MagbootsSystem.cs | 19 ------------- Content.Server/Clothing/MagbootsSystem.cs | 18 ++---------- Content.Shared/Clothing/MagbootsComponent.cs | 19 +++---------- .../Clothing/SharedMagbootsSystem.cs | 28 +++++++++++-------- .../Entities/Clothing/Shoes/magboots.yml | 2 +- 5 files changed, 25 insertions(+), 61 deletions(-) diff --git a/Content.Client/Clothing/MagbootsSystem.cs b/Content.Client/Clothing/MagbootsSystem.cs index d8b9119e09..a3d39eafde 100644 --- a/Content.Client/Clothing/MagbootsSystem.cs +++ b/Content.Client/Clothing/MagbootsSystem.cs @@ -1,27 +1,8 @@ using Content.Shared.Clothing; -using Robust.Shared.GameStates; -using static Content.Shared.Clothing.MagbootsComponent; namespace Content.Client.Clothing; public sealed class MagbootsSystem : SharedMagbootsSystem { - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnHandleState); - } - - private void OnHandleState(EntityUid uid, MagbootsComponent component, ref ComponentHandleState args) - { - if (args.Current is not MagbootsComponentState componentState) - return; - - if (component.On == componentState.On) return; - - component.On = componentState.On; - OnChanged(component); - } } - diff --git a/Content.Server/Clothing/MagbootsSystem.cs b/Content.Server/Clothing/MagbootsSystem.cs index 1b3820d8d7..bc6880552f 100644 --- a/Content.Server/Clothing/MagbootsSystem.cs +++ b/Content.Server/Clothing/MagbootsSystem.cs @@ -1,19 +1,13 @@ using Content.Server.Atmos.Components; -using Content.Server.Clothing.Components; using Content.Shared.Alert; using Content.Shared.Clothing; -using Content.Shared.Clothing.EntitySystems; -using Content.Shared.Inventory; using Content.Shared.Inventory.Events; -using Robust.Shared.Containers; -using Robust.Shared.GameStates; -using static Content.Shared.Clothing.MagbootsComponent; namespace Content.Server.Clothing; public sealed class MagbootsSystem : SharedMagbootsSystem { - [Dependency] private readonly AlertsSystem _alertsSystem = default!; + [Dependency] private readonly AlertsSystem _alerts = default!; public override void Initialize() { @@ -21,7 +15,6 @@ public sealed class MagbootsSystem : SharedMagbootsSystem SubscribeLocalEvent(OnGotEquipped); SubscribeLocalEvent(OnGotUnequipped); - SubscribeLocalEvent(OnGetState); } protected override void UpdateMagbootEffects(EntityUid parent, EntityUid uid, bool state, MagbootsComponent? component) @@ -37,11 +30,11 @@ public sealed class MagbootsSystem : SharedMagbootsSystem if (state) { - _alertsSystem.ShowAlert(parent, AlertType.Magboots); + _alerts.ShowAlert(parent, AlertType.Magboots); } else { - _alertsSystem.ClearAlert(parent, AlertType.Magboots); + _alerts.ClearAlert(parent, AlertType.Magboots); } } @@ -60,9 +53,4 @@ public sealed class MagbootsSystem : SharedMagbootsSystem UpdateMagbootEffects(args.Equipee, uid, true, component); } } - - private void OnGetState(EntityUid uid, MagbootsComponent component, ref ComponentGetState args) - { - args.State = new MagbootsComponentState(component.On); - } } diff --git a/Content.Shared/Clothing/MagbootsComponent.cs b/Content.Shared/Clothing/MagbootsComponent.cs index 744cf964f5..f9980c8014 100644 --- a/Content.Shared/Clothing/MagbootsComponent.cs +++ b/Content.Shared/Clothing/MagbootsComponent.cs @@ -1,26 +1,15 @@ using Content.Shared.Actions.ActionTypes; using Robust.Shared.GameStates; -using Robust.Shared.Serialization; namespace Content.Shared.Clothing; -[RegisterComponent, NetworkedComponent()] -public sealed class MagbootsComponent : Component +[RegisterComponent, NetworkedComponent(), AutoGenerateComponentState] +[Access(typeof(SharedMagbootsSystem))] +public sealed partial class MagbootsComponent : Component { [DataField("toggleAction", required: true)] public InstantAction ToggleAction = new(); - [ViewVariables] + [DataField("on"), AutoNetworkedField] public bool On; - - [Serializable, NetSerializable] - public sealed class MagbootsComponentState : ComponentState - { - public bool On { get; } - - public MagbootsComponentState(bool @on) - { - On = on; - } - } } diff --git a/Content.Shared/Clothing/SharedMagbootsSystem.cs b/Content.Shared/Clothing/SharedMagbootsSystem.cs index d346308908..4feaa6eb80 100644 --- a/Content.Shared/Clothing/SharedMagbootsSystem.cs +++ b/Content.Shared/Clothing/SharedMagbootsSystem.cs @@ -35,29 +35,35 @@ public abstract class SharedMagbootsSystem : EntitySystem return; args.Handled = true; - component.On = !component.On; + + ToggleMagboots(uid, component); + } + + private void ToggleMagboots(EntityUid uid, MagbootsComponent magboots) + { + magboots.On = !magboots.On; if (_sharedContainer.TryGetContainingContainer(uid, out var container) && - _inventory.TryGetSlotEntity(container.Owner, "shoes", out var entityUid) && entityUid == component.Owner) - UpdateMagbootEffects(container.Owner, uid, true, component); + _inventory.TryGetSlotEntity(container.Owner, "shoes", out var entityUid) && entityUid == uid) + UpdateMagbootEffects(container.Owner, uid, true, magboots); if (TryComp(uid, out var item)) { - _item.SetHeldPrefix(uid, component.On ? "on" : null, item); - _clothing.SetEquippedPrefix(uid, component.On ? "on" : null); + _item.SetHeldPrefix(uid, magboots.On ? "on" : null, item); + _clothing.SetEquippedPrefix(uid, magboots.On ? "on" : null); } - _appearance.SetData(uid, ToggleVisuals.Toggled, component.Owner); - OnChanged(component); - Dirty(component); + _appearance.SetData(uid, ToggleVisuals.Toggled, magboots.On); + OnChanged(uid, magboots); + Dirty(magboots); } protected virtual void UpdateMagbootEffects(EntityUid parent, EntityUid uid, bool state, MagbootsComponent? component) { } - protected void OnChanged(MagbootsComponent component) + protected void OnChanged(EntityUid uid, MagbootsComponent component) { _sharedActions.SetToggled(component.ToggleAction, component.On); - _clothingSpeedModifier.SetClothingSpeedModifierEnabled(component.Owner, component.On); + _clothingSpeedModifier.SetClothingSpeedModifierEnabled(uid, component.On); } private void AddToggleVerb(EntityUid uid, MagbootsComponent component, GetVerbsEvent args) @@ -67,7 +73,7 @@ public abstract class SharedMagbootsSystem : EntitySystem ActivationVerb verb = new(); verb.Text = Loc.GetString("toggle-magboots-verb-get-data-text"); - verb.Act = () => component.On = !component.On; + verb.Act = () => ToggleMagboots(uid, component); // TODO VERB ICON add toggle icon? maybe a computer on/off symbol? args.Verbs.Add(verb); } diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml index 5b6bc6c349..8df8488762 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -15,7 +15,7 @@ - type: Magboots toggleAction: icon: { sprite: Clothing/Shoes/Boots/magboots.rsi, state: icon } - iconOn: Clothing/Shoes/Boots/magboots.rsi/icon-on.png + iconOn: { sprite : Clothing/Shoes/Boots/magboots.rsi, state: icon-on } name: action-name-magboot-toggle description: action-decription-magboot-toggle itemIconStyle: NoItem