E to interact with disposal bins. (#2045)
* iactivate for server disposalunitcomponent * attempt 2.
This commit is contained in:
@@ -40,8 +40,9 @@ namespace Content.Server.GameObjects.Components.Disposal
|
|||||||
{
|
{
|
||||||
[RegisterComponent]
|
[RegisterComponent]
|
||||||
[ComponentReference(typeof(SharedDisposalUnitComponent))]
|
[ComponentReference(typeof(SharedDisposalUnitComponent))]
|
||||||
|
[ComponentReference(typeof(IActivate))]
|
||||||
[ComponentReference(typeof(IInteractUsing))]
|
[ComponentReference(typeof(IInteractUsing))]
|
||||||
public class DisposalUnitComponent : SharedDisposalUnitComponent, IInteractHand, IInteractUsing, IDragDropOn
|
public class DisposalUnitComponent : SharedDisposalUnitComponent, IInteractHand, IActivate, IInteractUsing, IDragDropOn
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
||||||
|
|
||||||
@@ -610,8 +611,8 @@ namespace Content.Server.GameObjects.Components.Disposal
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IInteractHand.InteractHand(InteractHandEventArgs eventArgs)
|
bool IsValidInteraction(ITargetedInteractEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
if (!ActionBlockerSystem.CanInteract(eventArgs.User))
|
if (!ActionBlockerSystem.CanInteract(eventArgs.User))
|
||||||
{
|
{
|
||||||
@@ -624,11 +625,7 @@ namespace Content.Server.GameObjects.Components.Disposal
|
|||||||
Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't reach there!"));
|
Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't reach there!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// This popup message doesn't appear on clicks, even when code was seperate. Unsure why.
|
||||||
if (!eventArgs.User.TryGetComponent(out IActorComponent? actor))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!eventArgs.User.HasComponent<IHandsComponent>())
|
if (!eventArgs.User.HasComponent<IHandsComponent>())
|
||||||
{
|
{
|
||||||
@@ -636,10 +633,43 @@ namespace Content.Server.GameObjects.Components.Disposal
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
UserInterface?.Open(actor.playerSession);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool IInteractHand.InteractHand(InteractHandEventArgs eventArgs)
|
||||||
|
{
|
||||||
|
if (!eventArgs.User.TryGetComponent(out IActorComponent? actor))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Duplicated code here, not sure how else to get actor inside to make UserInterface happy.
|
||||||
|
|
||||||
|
if (IsValidInteraction(eventArgs))
|
||||||
|
{
|
||||||
|
UserInterface?.Open(actor.playerSession);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void IActivate.Activate(ActivateEventArgs eventArgs)
|
||||||
|
{
|
||||||
|
if (!eventArgs.User.TryGetComponent(out IActorComponent? actor))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsValidInteraction(eventArgs))
|
||||||
|
{
|
||||||
|
UserInterface?.Open(actor.playerSession);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async Task<bool> IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs)
|
async Task<bool> IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
return TryDrop(eventArgs.User, eventArgs.Using);
|
return TryDrop(eventArgs.User, eventArgs.Using);
|
||||||
|
|||||||
Reference in New Issue
Block a user