Refactor actions to be entities with components (#19900)

This commit is contained in:
DrSmugleaf
2023-09-08 18:16:05 -07:00
committed by GitHub
parent e18f731b91
commit c71f97e3a2
210 changed files with 10693 additions and 11714 deletions

View File

@@ -1,8 +1,6 @@
using System.Linq;
using Content.Shared.Actions;
using Content.Shared.Actions.ActionTypes;
using Content.Shared.Damage;
using Content.Shared.Damage.Prototypes;
using Content.Shared.Examine;
using Content.Shared.Hands;
using Content.Shared.Hands.Components;
@@ -80,11 +78,7 @@ public sealed partial class BlockingSystem : EntitySystem
private void OnGetActions(EntityUid uid, BlockingComponent component, GetItemActionsEvent args)
{
if (component.BlockingToggleAction == null && _proto.TryIndex(component.BlockingToggleActionId, out InstantActionPrototype? act))
component.BlockingToggleAction = new(act);
if (component.BlockingToggleAction != null)
args.Actions.Add(component.BlockingToggleAction);
args.AddAction(ref component.BlockingToggleActionEntity, component.BlockingToggleAction);
}
private void OnToggleAction(EntityUid uid, BlockingComponent component, ToggleActionEvent args)
@@ -191,7 +185,7 @@ public sealed partial class BlockingSystem : EntitySystem
CantBlockError(user);
return false;
}
_actionsSystem.SetToggled(component.BlockingToggleAction, true);
_actionsSystem.SetToggled(component.BlockingToggleActionEntity, true);
_popupSystem.PopupEntity(msgUser, user, user);
_popupSystem.PopupEntity(msgOther, user, Filter.PvsExcept(user), true);
}
@@ -252,7 +246,7 @@ public sealed partial class BlockingSystem : EntitySystem
if (xform.Anchored)
_transformSystem.Unanchor(user, xform);
_actionsSystem.SetToggled(component.BlockingToggleAction, false);
_actionsSystem.SetToggled(component.BlockingToggleActionEntity, false);
_fixtureSystem.DestroyFixture(user, BlockingComponent.BlockFixtureID, body: physicsComponent);
_physics.SetBodyType(user, blockingUserComponent.OriginalBodyType, body: physicsComponent);
_popupSystem.PopupEntity(msgUser, user, user);

View File

@@ -1,7 +1,7 @@
using Content.Shared.Actions.ActionTypes;
using Content.Shared.Damage;
using Robust.Shared.Audio;
using Robust.Shared.Physics.Collision.Shapes;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Blocking;
@@ -47,11 +47,11 @@ public sealed partial class BlockingComponent : Component
[DataField("activeBlockModifier", required: true)]
public DamageModifierSet ActiveBlockDamageModifier = default!;
[DataField("blockingToggleActionId", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
public string BlockingToggleActionId = "ToggleBlock";
[DataField("blockingToggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
public string BlockingToggleAction = "ActionToggleBlock";
[DataField("blockingToggleAction")]
public InstantAction? BlockingToggleAction;
[DataField("blockingToggleActionEntity")]
public EntityUid? BlockingToggleActionEntity;
/// <summary>
/// The sound to be played when you get hit while actively blocking