Update trivial components to use auto comp states (#20539)
This commit is contained in:
@@ -1,53 +1,41 @@
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared.Tools.Components
|
||||
namespace Content.Shared.Tools.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
|
||||
public sealed partial class MultipleToolComponent : Component
|
||||
{
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class MultipleToolComponent : Component
|
||||
[DataDefinition]
|
||||
public sealed partial class ToolEntry
|
||||
{
|
||||
[DataDefinition]
|
||||
public sealed partial class ToolEntry
|
||||
{
|
||||
[DataField("behavior", required: true)]
|
||||
public PrototypeFlags<ToolQualityPrototype> Behavior = new();
|
||||
[DataField(required: true)]
|
||||
public PrototypeFlags<ToolQualityPrototype> Behavior = new();
|
||||
|
||||
[DataField("useSound")]
|
||||
public SoundSpecifier? Sound;
|
||||
[DataField]
|
||||
public SoundSpecifier? UseSound;
|
||||
|
||||
[DataField("changeSound")]
|
||||
public SoundSpecifier? ChangeSound;
|
||||
[DataField]
|
||||
public SoundSpecifier? ChangeSound;
|
||||
|
||||
[DataField("sprite")]
|
||||
public SpriteSpecifier? Sprite;
|
||||
}
|
||||
|
||||
[DataField("entries", required: true)]
|
||||
public ToolEntry[] Entries { get; private set; } = Array.Empty<ToolEntry>();
|
||||
|
||||
[ViewVariables]
|
||||
public uint CurrentEntry = 0;
|
||||
|
||||
[ViewVariables]
|
||||
public string CurrentQualityName = string.Empty;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public bool UiUpdateNeeded;
|
||||
|
||||
[DataField("statusShowBehavior")]
|
||||
public bool StatusShowBehavior = true;
|
||||
[DataField]
|
||||
public SpriteSpecifier? Sprite;
|
||||
}
|
||||
|
||||
[NetSerializable, Serializable]
|
||||
public sealed class MultipleToolComponentState : ComponentState
|
||||
{
|
||||
public readonly uint Selected;
|
||||
[DataField(required: true)]
|
||||
public ToolEntry[] Entries { get; private set; } = Array.Empty<ToolEntry>();
|
||||
|
||||
public MultipleToolComponentState(uint selected)
|
||||
{
|
||||
Selected = selected;
|
||||
}
|
||||
}
|
||||
[ViewVariables]
|
||||
[AutoNetworkedField]
|
||||
public uint CurrentEntry = 0;
|
||||
|
||||
[ViewVariables]
|
||||
public string CurrentQualityName = string.Empty;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public bool UiUpdateNeeded;
|
||||
|
||||
[DataField]
|
||||
public bool StatusShowBehavior = true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System.Linq;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Robust.Shared.GameStates;
|
||||
using Content.Shared.Prying.Components;
|
||||
|
||||
namespace Content.Shared.Tools;
|
||||
@@ -12,16 +11,11 @@ public abstract partial class SharedToolSystem : EntitySystem
|
||||
{
|
||||
SubscribeLocalEvent<MultipleToolComponent, ComponentStartup>(OnMultipleToolStartup);
|
||||
SubscribeLocalEvent<MultipleToolComponent, ActivateInWorldEvent>(OnMultipleToolActivated);
|
||||
SubscribeLocalEvent<MultipleToolComponent, ComponentGetState>(OnMultipleToolGetState);
|
||||
SubscribeLocalEvent<MultipleToolComponent, ComponentHandleState>(OnMultipleToolHandleState);
|
||||
SubscribeLocalEvent<MultipleToolComponent, AfterAutoHandleStateEvent>(OnMultipleToolHandleState);
|
||||
}
|
||||
|
||||
private void OnMultipleToolHandleState(EntityUid uid, MultipleToolComponent component, ref ComponentHandleState args)
|
||||
private void OnMultipleToolHandleState(EntityUid uid, MultipleToolComponent component, ref AfterAutoHandleStateEvent args)
|
||||
{
|
||||
if (args.Current is not MultipleToolComponentState state)
|
||||
return;
|
||||
|
||||
component.CurrentEntry = state.Selected;
|
||||
SetMultipleTool(uid, component);
|
||||
}
|
||||
|
||||
@@ -40,11 +34,6 @@ public abstract partial class SharedToolSystem : EntitySystem
|
||||
args.Handled = CycleMultipleTool(uid, multiple, args.User);
|
||||
}
|
||||
|
||||
private void OnMultipleToolGetState(EntityUid uid, MultipleToolComponent multiple, ref ComponentGetState args)
|
||||
{
|
||||
args.State = new MultipleToolComponentState(multiple.CurrentEntry);
|
||||
}
|
||||
|
||||
public bool CycleMultipleTool(EntityUid uid, MultipleToolComponent? multiple = null, EntityUid? user = null)
|
||||
{
|
||||
if (!Resolve(uid, ref multiple))
|
||||
@@ -77,7 +66,7 @@ public abstract partial class SharedToolSystem : EntitySystem
|
||||
}
|
||||
|
||||
var current = multiple.Entries[multiple.CurrentEntry];
|
||||
tool.UseSound = current.Sound;
|
||||
tool.UseSound = current.UseSound;
|
||||
tool.Qualities = current.Behavior;
|
||||
|
||||
// TODO: Replace this with a better solution later
|
||||
|
||||
Reference in New Issue
Block a user