Remove IUse (#7074)

This commit is contained in:
Leon Friedrich
2022-03-13 01:33:23 +13:00
committed by GitHub
parent c908a843ab
commit b1e719c70d
42 changed files with 109 additions and 158 deletions

View File

@@ -11,6 +11,7 @@ using Content.Shared.Database;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
using Content.Shared.Hands; using Content.Shared.Hands;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.MobState.Components; using Content.Shared.MobState.Components;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
using Robust.Shared.Player; using Robust.Shared.Player;

View File

@@ -1,14 +1,5 @@
using Content.Server.Hands.Components;
using Content.Shared.Clothing;
using Content.Shared.Interaction;
using Content.Shared.Inventory;
using Content.Shared.Item; using Content.Shared.Item;
using Robust.Shared.GameObjects;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
using Robust.Shared.IoC;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
namespace Content.Server.Clothing.Components namespace Content.Server.Clothing.Components
{ {
@@ -20,53 +11,12 @@ namespace Content.Server.Clothing.Components
[RegisterComponent] [RegisterComponent]
[NetworkedComponent] [NetworkedComponent]
[ComponentReference(typeof(SharedItemComponent))] [ComponentReference(typeof(SharedItemComponent))]
public sealed class ClothingComponent : ItemComponent, IUse public sealed class ClothingComponent : ItemComponent
{ {
[Dependency] private readonly IEntityManager _entities = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!;
[DataField("QuickEquip")]
private bool _quickEquipEnabled = true;
[DataField("HeatResistance")] [DataField("HeatResistance")]
private int _heatResistance = 323; private int _heatResistance = 323;
[ViewVariables(VVAccess.ReadWrite)] [ViewVariables(VVAccess.ReadWrite)]
public int HeatResistance => _heatResistance; public int HeatResistance => _heatResistance;
bool IUse.UseEntity(UseEntityEventArgs eventArgs)
{
if (!_quickEquipEnabled) return false;
var invSystem = EntitySystem.Get<InventorySystem>();
if (!_entities.TryGetComponent(eventArgs.User, out InventoryComponent? inv)
|| !_entities.TryGetComponent(eventArgs.User, out HandsComponent? hands) || !_prototype.TryIndex<InventoryTemplatePrototype>(inv.TemplateId, out var prototype)) return false;
foreach (var slotDef in prototype.Slots)
{
if(!invSystem.CanEquip(eventArgs.User, Owner, slotDef.Name, out _, slotDef, inv))
continue;
if (invSystem.TryGetSlotEntity(eventArgs.User, slotDef.Name, out var slotEntity, inv))
{
if(!invSystem.TryUnequip(eventArgs.User, slotDef.Name, true, inventory: inv))
continue;
if (!invSystem.TryEquip(eventArgs.User, Owner, slotDef.Name, true, inventory: inv))
continue;
hands.PutInHandOrDrop(slotEntity.Value);
}
else
{
if (!invSystem.TryEquip(eventArgs.User, Owner, slotDef.Name, true, inventory: inv))
continue;
}
return true;
}
return false;
}
} }
} }

View File

@@ -7,6 +7,7 @@ using Content.Shared.Crayon;
using Content.Shared.Database; using Content.Shared.Database;
using Content.Shared.Decals; using Content.Shared.Decals;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Interaction.Helpers; using Content.Shared.Interaction.Helpers;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Shared.Audio; using Robust.Shared.Audio;

View File

@@ -2,7 +2,7 @@ using System;
using Content.Server.Popups; using Content.Server.Popups;
using Content.Shared.Audio; using Content.Shared.Audio;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction.Events;
using Content.Shared.Throwing; using Content.Shared.Throwing;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;

View File

@@ -4,6 +4,7 @@ using Content.Server.Flash.Components;
using Content.Server.Throwing; using Content.Server.Throwing;
using Content.Shared.Explosion; using Content.Shared.Explosion;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Robust.Shared.Containers; using Robust.Shared.Containers;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.IoC; using Robust.Shared.IoC;

View File

@@ -1,6 +1,6 @@
using System; using System;
using Content.Server.Explosion.Components; using Content.Server.Explosion.Components;
using Content.Shared.Interaction; using Content.Shared.Interaction.Events;
using Content.Shared.Trigger; using Content.Shared.Trigger;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;

View File

@@ -8,6 +8,7 @@ using Content.Shared.CharacterAppearance.Systems;
using Content.Shared.Extinguisher; using Content.Shared.Extinguisher;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Robust.Shared.Audio; using Robust.Shared.Audio;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;

View File

@@ -4,6 +4,7 @@ using Content.Server.Weapon.Melee;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Flash; using Content.Shared.Flash;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Inventory; using Content.Shared.Inventory;
using Content.Shared.Physics; using Content.Shared.Physics;
using Content.Shared.Popups; using Content.Shared.Popups;

View File

@@ -1,6 +1,6 @@
using Content.Server.Clothing.Components; using Content.Server.Clothing.Components;
using Content.Server.Light.Components; using Content.Server.Light.Components;
using Content.Shared.Interaction; using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Light.Component; using Content.Shared.Light.Component;
using Content.Shared.Verbs; using Content.Shared.Verbs;

View File

@@ -8,6 +8,7 @@ using Content.Shared.Audio;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.Database; using Content.Shared.Database;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Stacks; using Content.Shared.Stacks;
using Robust.Shared.Audio; using Robust.Shared.Audio;
using Robust.Shared.Player; using Robust.Shared.Player;

View File

@@ -15,6 +15,7 @@ using Content.Shared.Database;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Interaction.Helpers; using Content.Shared.Interaction.Helpers;
using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.Components;
using Content.Shared.Throwing; using Content.Shared.Throwing;

View File

@@ -21,6 +21,7 @@ using Robust.Shared.Player;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using Content.Shared.Inventory; using Content.Shared.Inventory;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Interaction.Events;
namespace Content.Server.Nutrition.EntitySystems namespace Content.Server.Nutrition.EntitySystems
{ {

View File

@@ -1,5 +1,4 @@
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction;
using Content.Shared.PAI; using Content.Shared.PAI;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Content.Shared.Instruments; using Content.Shared.Instruments;
@@ -14,6 +13,7 @@ using Robust.Shared.GameObjects;
using Robust.Shared.Localization; using Robust.Shared.Localization;
using Robust.Shared.Player; using Robust.Shared.Player;
using Content.Shared.Actions; using Content.Shared.Actions;
using Content.Shared.Interaction.Events;
namespace Content.Server.PAI namespace Content.Server.PAI
{ {

View File

@@ -15,6 +15,7 @@ using Robust.Server.GameObjects;
using Robust.Shared.Containers; using Robust.Shared.Containers;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.IoC; using Robust.Shared.IoC;
using Content.Shared.Interaction.Events;
namespace Content.Server.PDA namespace Content.Server.PDA
{ {

View File

@@ -5,6 +5,7 @@ using Content.Server.RCD.Components;
using Content.Shared.Coordinates; using Content.Shared.Coordinates;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Interaction.Helpers; using Content.Shared.Interaction.Helpers;
using Content.Shared.Maps; using Content.Shared.Maps;
using Content.Shared.Popups; using Content.Shared.Popups;

View File

@@ -11,6 +11,7 @@ using Content.Shared.Physics;
using Content.Shared.Access.Components; using Content.Shared.Access.Components;
using Content.Server.Doors.Systems; using Content.Server.Doors.Systems;
using Content.Server.Doors.Components; using Content.Server.Doors.Components;
using Content.Shared.Interaction.Events;
namespace Content.Server.Remotes namespace Content.Server.Remotes
{ {

View File

@@ -3,6 +3,7 @@ using Content.Server.Sound.Components;
using Content.Server.Throwing; using Content.Server.Throwing;
using Content.Shared.Audio; using Content.Shared.Audio;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Throwing; using Content.Shared.Throwing;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Shared.Audio; using Robust.Shared.Audio;

View File

@@ -1,7 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using Content.Server.Storage.Components; using Content.Server.Storage.Components;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Interaction; using Content.Shared.Interaction.Events;
using Robust.Shared.Audio; using Robust.Shared.Audio;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.IoC; using Robust.Shared.IoC;

View File

@@ -8,7 +8,7 @@ using Content.Server.Weapon.Melee;
using Content.Shared.ActionBlocker; using Content.Shared.ActionBlocker;
using Content.Shared.Audio; using Content.Shared.Audio;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Jittering; using Content.Shared.Jittering;
using Content.Shared.Popups; using Content.Shared.Popups;

View File

@@ -4,6 +4,7 @@ using Content.Shared.Actions;
using Content.Shared.Actions.ActionTypes; using Content.Shared.Actions.ActionTypes;
using Content.Shared.Hands; using Content.Shared.Hands;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;

View File

@@ -1,6 +1,7 @@
using Content.Server.Tools.Components; using Content.Server.Tools.Components;
using Content.Shared.ActionBlocker; using Content.Shared.ActionBlocker;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee;
using Robust.Shared.Audio; using Robust.Shared.Audio;

View File

@@ -6,6 +6,7 @@ using Content.Server.Weapon.Ranged.Ammunition.Components;
using Content.Server.Weapon.Ranged.Barrels.Components; using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Content.Shared.Weapons.Ranged.Barrels.Components; using Content.Shared.Weapons.Ranged.Barrels.Components;
using Robust.Shared.Containers; using Robust.Shared.Containers;

View File

@@ -3,6 +3,7 @@ using Content.Server.Weapon.Ranged.Ammunition.Components;
using Content.Server.Weapon.Ranged.Barrels.Components; using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Content.Shared.Weapons.Ranged.Barrels.Components; using Content.Shared.Weapons.Ranged.Barrels.Components;
using Robust.Shared.Audio; using Robust.Shared.Audio;

View File

@@ -5,6 +5,7 @@ using Content.Server.Weapon.Ranged.Ammunition.Components;
using Content.Server.Weapon.Ranged.Barrels.Components; using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Content.Shared.Weapons.Ranged; using Content.Shared.Weapons.Ranged;

View File

@@ -2,6 +2,7 @@ using Content.Server.Weapon.Ranged.Ammunition.Components;
using Content.Server.Weapon.Ranged.Barrels.Components; using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Weapons.Ranged.Barrels.Components; using Content.Shared.Weapons.Ranged.Barrels.Components;
using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Components;
using Robust.Shared.Audio; using Robust.Shared.Audio;

View File

@@ -4,6 +4,7 @@ using Content.Server.Weapon.Ranged.Ammunition.Components;
using Content.Server.Weapon.Ranged.Barrels.Components; using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Weapons.Ranged.Barrels.Components; using Content.Shared.Weapons.Ranged.Barrels.Components;
using Robust.Shared.Containers; using Robust.Shared.Containers;

View File

@@ -2,6 +2,7 @@ using System;
using Content.Server.Weapon.Ranged.Ammunition.Components; using Content.Server.Weapon.Ranged.Ammunition.Components;
using Content.Server.Weapon.Ranged.Barrels.Components; using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Popups; using Content.Shared.Popups;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Content.Shared.Weapons.Ranged.Barrels.Components; using Content.Shared.Weapons.Ranged.Barrels.Components;

View File

@@ -2,6 +2,7 @@ using Content.Server.Hands.Components;
using Content.Server.Weapon.Ranged.Ammunition.Components; using Content.Server.Weapon.Ranged.Ammunition.Components;
using Content.Server.Weapon.Ranged.Barrels.Components; using Content.Server.Weapon.Ranged.Barrels.Components;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Weapons.Ranged.Barrels.Components; using Content.Shared.Weapons.Ranged.Barrels.Components;
using Robust.Shared.Containers; using Robust.Shared.Containers;

View File

@@ -12,6 +12,7 @@ using Content.Shared.Camera;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Popups; using Content.Shared.Popups;
using Content.Shared.PowerCell.Components; using Content.Shared.PowerCell.Components;
using Content.Shared.Verbs; using Content.Shared.Verbs;

View File

@@ -4,7 +4,7 @@ using Content.Server.Hands.Systems;
using Content.Server.Weapon.Melee; using Content.Server.Weapon.Melee;
using Content.Server.Wieldable.Components; using Content.Server.Wieldable.Components;
using Content.Shared.Hands; using Content.Shared.Hands;
using Content.Shared.Interaction; using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Popups; using Content.Shared.Popups;
using Content.Shared.Verbs; using Content.Shared.Verbs;

View File

@@ -2,6 +2,7 @@ using Content.Shared.ActionBlocker;
using Content.Shared.Acts; using Content.Shared.Acts;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Popups; using Content.Shared.Popups;
using Content.Shared.Sound; using Content.Shared.Sound;
using Content.Shared.Verbs; using Content.Shared.Verbs;

View File

@@ -1,14 +1,13 @@
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
namespace Content.Shared.Interaction.Events namespace Content.Shared.Interaction.Events;
public sealed class ChangeDirectionAttemptEvent : CancellableEntityEventArgs
{ {
public sealed class ChangeDirectionAttemptEvent : CancellableEntityEventArgs public ChangeDirectionAttemptEvent(EntityUid uid)
{ {
public ChangeDirectionAttemptEvent(EntityUid uid) Uid = uid;
{
Uid = uid;
}
public EntityUid Uid { get; }
} }
public EntityUid Uid { get; }
} }

View File

@@ -0,0 +1,20 @@
using JetBrains.Annotations;
namespace Content.Shared.Interaction.Events;
/// <summary>
/// Raised when using the entity in your hands.
/// </summary>
[PublicAPI]
public sealed class UseInHandEvent : HandledEntityEventArgs
{
/// <summary>
/// Entity holding the item in their hand.
/// </summary>
public EntityUid User { get; }
public UseInHandEvent(EntityUid user)
{
User = user;
}
}

View File

@@ -1,55 +0,0 @@
using System;
using JetBrains.Annotations;
using Robust.Shared.Analyzers;
using Robust.Shared.GameObjects;
namespace Content.Shared.Interaction
{
/// <summary>
/// This interface gives components behavior when using the entity in your active hand
/// (done by clicking the entity in the active hand or pressing the keybind that defaults to Z).
/// </summary>
[RequiresExplicitImplementation]
public interface IUse
{
/// <summary>
/// Called when we activate an object we are holding to use it
/// </summary>
/// <returns></returns>
[Obsolete("Use UseInHandMessage instead")]
bool UseEntity(UseEntityEventArgs eventArgs);
}
public sealed class UseEntityEventArgs : EventArgs
{
public UseEntityEventArgs(EntityUid user)
{
User = user;
}
public EntityUid User { get; }
}
/// <summary>
/// Raised when using the entity in your hands.
/// </summary>
[PublicAPI]
public sealed class UseInHandEvent : HandledEntityEventArgs
{
/// <summary>
/// Entity holding the item in their hand.
/// </summary>
public EntityUid User { get; }
/// <summary>
/// Item that was used.
/// </summary>
public EntityUid Used { get; }
public UseInHandEvent(EntityUid user, EntityUid used)
{
User = user;
Used = used;
}
}
}

View File

@@ -1,7 +1,5 @@
using System;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using Content.Shared.ActionBlocker; using Content.Shared.ActionBlocker;
using Content.Shared.Administration.Logs; using Content.Shared.Administration.Logs;
using Content.Shared.CombatMode; using Content.Shared.CombatMode;
@@ -26,6 +24,7 @@ using Content.Shared.Item;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Input; using Robust.Shared.Input;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Content.Shared.Interaction.Events;
#pragma warning disable 618 #pragma warning disable 618
@@ -786,7 +785,7 @@ namespace Content.Shared.Interaction
if (checkCanUse && !_actionBlockerSystem.CanUseHeldEntity(user)) if (checkCanUse && !_actionBlockerSystem.CanUseHeldEntity(user))
return false; return false;
var useMsg = new UseInHandEvent(user, used); var useMsg = new UseInHandEvent(user);
RaiseLocalEvent(used, useMsg); RaiseLocalEvent(used, useMsg);
if (useMsg.Handled) if (useMsg.Handled)
{ {
@@ -794,19 +793,6 @@ namespace Content.Shared.Interaction
return true; return true;
} }
var uses = AllComps<IUse>(used).ToList();
// Try to use item on any components which have the interface
foreach (var use in uses)
{
// If a Use returns a status completion we finish our interaction
if (use.UseEntity(new UseEntityEventArgs(user)))
{
_useDelay.BeginDelay(used, delayComponent);
return true;
}
}
// else, default to activating the item // else, default to activating the item
return InteractionActivate(user, used, false, false, false); return InteractionActivate(user, used, false, false, false);
} }

View File

@@ -1,8 +1,7 @@
using System;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Helpers; using Content.Shared.Interaction.Events;
using Content.Shared.Inventory.Events; using Content.Shared.Inventory.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Movement.EntitySystems; using Content.Shared.Movement.EntitySystems;
@@ -10,9 +9,6 @@ using Content.Shared.Popups;
using Content.Shared.Strip.Components; using Content.Shared.Strip.Components;
using Robust.Shared.Audio; using Robust.Shared.Audio;
using Robust.Shared.Containers; using Robust.Shared.Containers;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Localization;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Timing; using Robust.Shared.Timing;
@@ -33,9 +29,47 @@ public abstract partial class InventorySystem
SubscribeLocalEvent<InventoryComponent, EntInsertedIntoContainerMessage>(OnEntInserted); SubscribeLocalEvent<InventoryComponent, EntInsertedIntoContainerMessage>(OnEntInserted);
SubscribeLocalEvent<InventoryComponent, EntRemovedFromContainerMessage>(OnEntRemoved); SubscribeLocalEvent<InventoryComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
SubscribeLocalEvent<SharedItemComponent, UseInHandEvent>(OnUseInHand);
SubscribeAllEvent<UseSlotNetworkMessage>(OnUseSlot); SubscribeAllEvent<UseSlotNetworkMessage>(OnUseSlot);
} }
private void OnUseInHand(EntityUid uid, SharedItemComponent component, UseInHandEvent args)
{
if (args.Handled || !component.QuickEquip)
return;
if (!TryComp(args.User, out InventoryComponent? inv)
|| !TryComp(args.User, out SharedHandsComponent? hands)
|| !_prototypeManager.TryIndex<InventoryTemplatePrototype>(inv.TemplateId, out var prototype))
return;
foreach (var slotDef in prototype.Slots)
{
if (!CanEquip(args.User, uid, slotDef.Name, out _, slotDef, inv))
continue;
if (TryGetSlotEntity(args.User, slotDef.Name, out var slotEntity, inv))
{
if (!TryUnequip(args.User, slotDef.Name, true, inventory: inv))
continue;
if (!TryEquip(args.User, uid, slotDef.Name, true, inventory: inv))
continue;
hands.PutInHandOrDrop(slotEntity.Value);
}
else
{
if (!TryEquip(args.User, uid, slotDef.Name, true, inventory: inv))
continue;
}
args.Handled = true;
break;
}
}
private void OnEntRemoved(EntityUid uid, InventoryComponent component, EntRemovedFromContainerMessage args) private void OnEntRemoved(EntityUid uid, InventoryComponent component, EntRemovedFromContainerMessage args)
{ {
if(!TryGetSlot(uid, args.Container.ID, out var slotDef, inventory: component)) if(!TryGetSlot(uid, args.Container.ID, out var slotDef, inventory: component))

View File

@@ -1,17 +1,8 @@
using System;
using System.Collections.Generic;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Helpers;
using Content.Shared.Inventory; using Content.Shared.Inventory;
using Content.Shared.Sound; using Content.Shared.Sound;
using Robust.Shared.GameObjects;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
using Robust.Shared.IoC;
using Robust.Shared.Maths;
using Robust.Shared.Serialization; using Robust.Shared.Serialization;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
using static Robust.Shared.GameObjects.SharedSpriteComponent; using static Robust.Shared.GameObjects.SharedSpriteComponent;
namespace Content.Shared.Item namespace Content.Shared.Item
@@ -24,6 +15,9 @@ namespace Content.Shared.Item
{ {
[Dependency] private readonly IEntityManager _entMan = default!; [Dependency] private readonly IEntityManager _entMan = default!;
[DataField("quickEquip")]
public bool QuickEquip = true;
/// <summary> /// <summary>
/// How much big this item is. /// How much big this item is.
/// </summary> /// </summary>

View File

@@ -9,7 +9,7 @@
state: icon state: icon
- type: Clothing - type: Clothing
size: 9999 size: 9999
QuickEquip: false quickEquip: false
Slots: Slots:
- back - back
sprite: Clothing/Back/Backpacks/backpack.rsi sprite: Clothing/Back/Backpacks/backpack.rsi

View File

@@ -10,7 +10,7 @@
- type: Clothing - type: Clothing
sprite: Clothing/Back/Duffels/duffel.rsi sprite: Clothing/Back/Duffels/duffel.rsi
size: 9999 size: 9999
QuickEquip: false quickEquip: false
Slots: Slots:
- back - back
- type: Storage - type: Storage

View File

@@ -9,7 +9,7 @@
state: icon state: icon
- type: Clothing - type: Clothing
size: 9999 size: 9999
QuickEquip: false quickEquip: false
Slots: Slots:
- back - back
sprite: Clothing/Back/Satchels/satchel.rsi sprite: Clothing/Back/Satchels/satchel.rsi

View File

@@ -8,6 +8,6 @@
- type: Clothing - type: Clothing
Slots: [belt] Slots: [belt]
size: 50 size: 50
QuickEquip: false quickEquip: false
EquipSound: EquipSound:
path: /Audio/Items/belt_equip.ogg path: /Audio/Items/belt_equip.ogg

View File

@@ -422,7 +422,7 @@
sprite: Clothing/Belt/champion.rsi sprite: Clothing/Belt/champion.rsi
- type: Clothing - type: Clothing
sprite: Clothing/Belt/champion.rsi sprite: Clothing/Belt/champion.rsi
QuickEquip: true quickEquip: true
- type: entity - type: entity
parent: ClothingBeltBase parent: ClothingBeltBase
@@ -474,4 +474,4 @@
state: icon state: icon
- type: Clothing - type: Clothing
sprite: Clothing/Belt/suspenders.rsi sprite: Clothing/Belt/suspenders.rsi
QuickEquip: true quickEquip: true