Reduce action blocker uses and add target entity to CanInteract (#6655)
This commit is contained in:
@@ -81,7 +81,7 @@ namespace Content.Server.Disposal.Tube.Components
|
||||
|
||||
var msg = (UiActionMessage) obj.Message;
|
||||
|
||||
if (!PlayerCanUseDisposalTagger(obj.Session))
|
||||
if (!Anchored)
|
||||
return;
|
||||
|
||||
//Check for correct message and ignore maleformed strings
|
||||
@@ -96,29 +96,6 @@ namespace Content.Server.Disposal.Tube.Components
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks whether the player entity is able to use the configuration interface of the pipe tagger.
|
||||
/// </summary>
|
||||
/// <param name="IPlayerSession">The player session.</param>
|
||||
/// <returns>Returns true if the entity can use the configuration interface, and false if it cannot.</returns>
|
||||
private bool PlayerCanUseDisposalTagger(IPlayerSession session)
|
||||
{
|
||||
//Need player entity to check if they are still able to use the configuration interface
|
||||
if (session.AttachedEntity is not {} attached)
|
||||
return false;
|
||||
if (!Anchored)
|
||||
return false;
|
||||
|
||||
var actionBlocker = EntitySystem.Get<ActionBlockerSystem>();
|
||||
var groupController = IoCManager.Resolve<IConGroupController>();
|
||||
//Check if player can interact in their current state
|
||||
if (!groupController.CanAdminMenu(session) && (!actionBlocker.CanInteract(attached) || !actionBlocker.CanUse(attached)))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets component data to be used to update the user interface client-side.
|
||||
/// </summary>
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace Content.Server.Disposal.Tube.Components
|
||||
{
|
||||
var msg = (UiActionMessage) obj.Message;
|
||||
|
||||
if (!PlayerCanUseDisposalTagger(obj.Session))
|
||||
if (!Anchored)
|
||||
return;
|
||||
|
||||
//Check for correct message and ignore maleformed strings
|
||||
@@ -78,28 +78,6 @@ namespace Content.Server.Disposal.Tube.Components
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks whether the player entity is able to use the configuration interface of the pipe tagger.
|
||||
/// </summary>
|
||||
/// <param name="IPlayerSession">The player entity.</param>
|
||||
/// <returns>Returns true if the entity can use the configuration interface, and false if it cannot.</returns>
|
||||
private bool PlayerCanUseDisposalTagger(IPlayerSession session)
|
||||
{
|
||||
//Need player entity to check if they are still able to use the configuration interface
|
||||
if (session.AttachedEntity is not {} attached)
|
||||
return false;
|
||||
if (!Anchored)
|
||||
return false;
|
||||
|
||||
var actionBlocker = EntitySystem.Get<ActionBlockerSystem>();
|
||||
var groupController = IoCManager.Resolve<IConGroupController>();
|
||||
//Check if player can interact in their current state
|
||||
if (!groupController.CanAdminMenu(session) && (!actionBlocker.CanInteract(attached) || !actionBlocker.CanUse(attached)))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets component data to be used to update the user interface client-side.
|
||||
/// </summary>
|
||||
|
||||
@@ -184,11 +184,6 @@ namespace Content.Server.Disposal.Unit.EntitySystems
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_actionBlockerSystem.CanInteract(player) || !_actionBlockerSystem.CanUse(player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (args.Button)
|
||||
{
|
||||
case SharedDisposalUnitComponent.UiButton.Eject:
|
||||
@@ -241,11 +236,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems
|
||||
}
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
if (IsValidInteraction(args))
|
||||
{
|
||||
component.Owner.GetUIOrNull(SharedDisposalUnitComponent.DisposalUnitUiKey.Key)?.Open(actor.PlayerSession);
|
||||
}
|
||||
component.Owner.GetUIOrNull(SharedDisposalUnitComponent.DisposalUnitUiKey.Key)?.Open(actor.PlayerSession);
|
||||
}
|
||||
|
||||
private void HandleAfterInteractUsing(EntityUid uid, DisposalUnitComponent component, AfterInteractUsingEvent args)
|
||||
@@ -439,30 +430,6 @@ namespace Content.Server.Disposal.Unit.EntitySystems
|
||||
return state == SharedDisposalUnitComponent.PressureState.Ready && component.RecentlyEjected.Count == 0;
|
||||
}
|
||||
|
||||
private bool IsValidInteraction(ITargetedInteractEventArgs eventArgs)
|
||||
{
|
||||
if (!Get<ActionBlockerSystem>().CanInteract(eventArgs.User))
|
||||
{
|
||||
eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("ui-disposal-unit-is-valid-interaction-cannot=interact"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (eventArgs.User.IsInContainer())
|
||||
{
|
||||
eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("ui-disposal-unit-is-valid-interaction-cannot-reach"));
|
||||
return false;
|
||||
}
|
||||
// This popup message doesn't appear on clicks, even when code was seperate. Unsure why.
|
||||
|
||||
if (!EntityManager.HasComponent<HandsComponent>(eventArgs.User))
|
||||
{
|
||||
eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("ui-disposal-unit-is-valid-interaction-no-hands"));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool TryInsert(EntityUid unitId, EntityUid toInsertId, EntityUid userId, DisposalUnitComponent? unit = null)
|
||||
{
|
||||
if (!Resolve(unitId, ref unit))
|
||||
|
||||
Reference in New Issue
Block a user