Gun tweaks (#8320)

This commit is contained in:
metalgearsloth
2022-05-22 12:31:46 +10:00
committed by GitHub
parent c3fa24ccd8
commit 6e94d08b17
6 changed files with 42 additions and 8 deletions

View File

@@ -1,7 +1,9 @@
using Content.Client.CombatMode;
using Content.Client.Outline;
using Content.Client.Viewport;
using Content.Shared.ActionBlocker;
using Content.Shared.CCVar;
using Content.Shared.CombatMode;
using Content.Shared.DragDrop;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
@@ -35,6 +37,7 @@ namespace Content.Client.DragDrop
[Dependency] private readonly IConfigurationManager _cfgMan = default!;
[Dependency] private readonly InteractionOutlineSystem _outline = default!;
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
[Dependency] private readonly CombatModeSystem _combatMode = default!;
[Dependency] private readonly InputSystem _inputSystem = default!;
[Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!;
@@ -124,7 +127,8 @@ namespace Content.Client.DragDrop
private bool OnUseMouseDown(in PointerInputCmdHandler.PointerInputCmdArgs args)
{
if (args.Session?.AttachedEntity is not {Valid: true} dragger)
if (args.Session?.AttachedEntity is not {Valid: true} dragger ||
_combatMode.IsInCombatMode())
{
return false;
}
@@ -218,7 +222,8 @@ namespace Content.Client.DragDrop
private bool OnContinueDrag(float frameTime)
{
if (_dragDropHelper.Dragged == default || Deleted(_dragDropHelper.Dragged))
if (_dragDropHelper.Dragged == default || Deleted(_dragDropHelper.Dragged) ||
_combatMode.IsInCombatMode())
{
return false;
}
@@ -231,8 +236,6 @@ namespace Content.Client.DragDrop
return false;
}
// keep dragged entity under mouse
var mousePos = _eyeManager.ScreenToMap(_dragDropHelper.MouseScreenPosition);
// TODO: would use MapPosition instead if it had a setter, but it has no setter.
// is that intentional, or should we add a setter for Transform.MapPosition?
if (_dragShadow == default)

View File

@@ -3,14 +3,17 @@ using Content.Server.CombatMode;
using Content.Server.Hands.Components;
using Content.Server.Pulling;
using Content.Server.Storage.Components;
using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.ActionBlocker;
using Content.Shared.Database;
using Content.Shared.DragDrop;
using Content.Shared.Input;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Item;
using Content.Shared.Pulling.Components;
using Content.Shared.Weapons.Melee;
using Content.Shared.Weapons.Ranged.Components;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
using Robust.Shared.Containers;
@@ -202,8 +205,13 @@ namespace Content.Server.Interaction
{
var item = hands.ActiveHandEntity;
if (item != null && !Deleted(item.Value))
if (!Deleted(item))
{
var meleeVee = new MeleeAttackAttemptEvent();
RaiseLocalEvent(item.Value, ref meleeVee);
if (meleeVee.Cancelled) return;
if (wideAttack)
{
var ev = new WideAttackEvent(item.Value, user, coordinates);

View File

@@ -7,6 +7,7 @@ using Content.Server.Weapon.Ranged.Ammunition.Components;
using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.Camera;
using Content.Shared.Database;
using Content.Shared.Interaction.Events;
using Content.Shared.Popups;
using Robust.Shared.Audio;
using Robust.Shared.Map;
@@ -18,6 +19,11 @@ namespace Content.Server.Weapon.Ranged;
public sealed partial class GunSystem
{
private void OnMeleeAttempt(EntityUid uid, ServerRangedWeaponComponent component, ref MeleeAttackAttemptEvent args)
{
args.Cancelled = true;
}
/// <summary>
/// Tries to fire a round of ammo out of the weapon.
/// </summary>
@@ -138,6 +144,7 @@ public sealed partial class GunSystem
}
#region Firing
/// <summary>
/// Handles firing one or many projectiles
/// </summary>
@@ -242,5 +249,6 @@ public sealed partial class GunSystem
hitscan.FireEffects(shooter, hitscan.MaxLength, angle);
}
}
#endregion
}

View File

@@ -123,6 +123,7 @@ public sealed partial class GunSystem : EntitySystem
// SubscribeLocalEvent<ServerRangedWeaponComponent, ExaminedEvent>(OnGunExamine);
SubscribeNetworkEvent<FirePosEvent>(OnFirePos);
SubscribeLocalEvent<ServerRangedWeaponComponent, MeleeAttackAttemptEvent>(OnMeleeAttempt);
}
private void OnFirePos(FirePosEvent msg, EntitySessionEventArgs args)

View File

@@ -65,10 +65,8 @@ namespace Content.Shared.CombatMode
{
var entity = eventArgs.SenderSession.AttachedEntity;
if (entity == default || !EntityManager.TryGetComponent(entity, out SharedCombatModeComponent? combatModeComponent))
{
if (entity == null || !EntityManager.TryGetComponent(entity, out SharedCombatModeComponent? combatModeComponent))
return;
}
combatModeComponent.IsInCombatMode = ev.Active;
}

View File

@@ -0,0 +1,16 @@
namespace Content.Shared.Interaction.Events;
/// <summary>
/// Raised on directed a weapon when being used in a melee attack.
/// </summary>
[ByRefEvent]
public struct MeleeAttackAttemptEvent
{
public bool Cancelled = false;
public readonly EntityUid User;
public MeleeAttackAttemptEvent(EntityUid user)
{
User = user;
}
}