ECS dragdrop (#12973)
* ECS dragdrop No more excuses. * AAAAAAAAAAAAAA * kry * events * aaaaaaaaaa * HUH * Fix stripping * aaaaaa * spoike * asease * fix table vaulting * ded * rebiew * aaaaaaaaaaaaa * drag * aeaeae * weh
This commit is contained in:
49
Content.Shared/Strip/SharedStrippableSystem.cs
Normal file
49
Content.Shared/Strip/SharedStrippableSystem.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using Content.Shared.DragDrop;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Strip.Components;
|
||||
|
||||
namespace Content.Shared.Strip;
|
||||
|
||||
public abstract class SharedStrippableSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<StrippingComponent, CanDropTargetEvent>(OnCanDropOn);
|
||||
SubscribeLocalEvent<StrippableComponent, CanDropDraggedEvent>(OnCanDrop);
|
||||
SubscribeLocalEvent<StrippableComponent, DragDropDraggedEvent>(OnDragDrop);
|
||||
}
|
||||
|
||||
private void OnDragDrop(EntityUid uid, StrippableComponent component, ref DragDropDraggedEvent args)
|
||||
{
|
||||
// If the user drags a strippable thing onto themselves.
|
||||
if (args.Handled || args.Target != args.User)
|
||||
return;
|
||||
|
||||
StartOpeningStripper(args.User, component);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
public virtual void StartOpeningStripper(EntityUid user, StrippableComponent component, bool openInCombat = false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void OnCanDropOn(EntityUid uid, StrippingComponent component, ref CanDropTargetEvent args)
|
||||
{
|
||||
args.Handled = true;
|
||||
args.CanDrop |= uid == args.User &&
|
||||
HasComp<StrippableComponent>(args.Dragged) &&
|
||||
HasComp<SharedHandsComponent>(args.User);
|
||||
}
|
||||
|
||||
private void OnCanDrop(EntityUid uid, StrippableComponent component, ref CanDropDraggedEvent args)
|
||||
{
|
||||
args.CanDrop |= args.Target == args.User &&
|
||||
HasComp<StrippingComponent>(args.User) &&
|
||||
HasComp<SharedHandsComponent>(args.User);
|
||||
|
||||
if (args.CanDrop)
|
||||
args.Handled = true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user