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<MagbootsComponent, ComponentHandleState>(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);
- }
}
-
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()
{
SubscribeLocalEvent<MagbootsComponent, GotEquippedEvent>(OnGotEquipped);
SubscribeLocalEvent<MagbootsComponent, GotUnequippedEvent>(OnGotUnequipped);
- SubscribeLocalEvent<MagbootsComponent, ComponentGetState>(OnGetState);
}
protected override void UpdateMagbootEffects(EntityUid parent, EntityUid uid, bool state, MagbootsComponent? component)
if (state)
{
- _alertsSystem.ShowAlert(parent, AlertType.Magboots);
+ _alerts.ShowAlert(parent, AlertType.Magboots);
}
else
{
- _alertsSystem.ClearAlert(parent, AlertType.Magboots);
+ _alerts.ClearAlert(parent, AlertType.Magboots);
}
}
UpdateMagbootEffects(args.Equipee, uid, true, component);
}
}
-
- private void OnGetState(EntityUid uid, MagbootsComponent component, ref ComponentGetState args)
- {
- args.State = new MagbootsComponentState(component.On);
- }
}
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;
- }
- }
}
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<ItemComponent>(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<ActivationVerb> args)
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);
}
- 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