Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions Content.Client/SubFloor/TrayScannerSystem.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Inventory;
using Content.Shared.Item.ItemToggle;
using Content.Shared.SubFloor;
using Robust.Client.Animations;
using Robust.Client.GameObjects;
Expand All @@ -15,6 +16,7 @@ public sealed class TrayScannerSystem : SharedTrayScannerSystem
[Dependency] private readonly AnimationPlayerSystem _animation = default!;
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly InventorySystem _inventory = default!;
[Dependency] private readonly ItemToggleSystem _itemToggle = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedHandsSystem _hands = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
Expand Down Expand Up @@ -57,7 +59,7 @@ public override void Update(float frameTime)
{
foreach (var ent in slot.ContainedEntities)
{
if (!_trayScannerQuery.TryGetComponent(ent, out var sneakScanner) || !sneakScanner.Enabled)
if (!_trayScannerQuery.TryGetComponent(ent, out var sneakScanner) || !_itemToggle.IsActivated(ent))
continue;

canSee = true;
Expand All @@ -71,7 +73,7 @@ public override void Update(float frameTime)
if (!_hands.TryGetHeldItem(player.Value, hand, out var heldEntity))
continue;

if (!_trayScannerQuery.TryGetComponent(heldEntity, out var heldScanner) || !heldScanner.Enabled)
if (!_trayScannerQuery.TryGetComponent(heldEntity, out var heldScanner) || !_itemToggle.IsActivated(heldEntity.Value))
continue;

range = MathF.Max(heldScanner.Range, range);
Expand Down
57 changes: 2 additions & 55 deletions Content.Shared/SubFloor/SharedTrayScannerSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,14 @@ namespace Content.Shared.SubFloor;
public abstract class SharedTrayScannerSystem : EntitySystem
{
[Dependency] private readonly INetManager _netMan = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedEyeSystem _eye = default!;

public const float SubfloorRevealAlpha = 0.8f;

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<TrayScannerComponent, ComponentGetState>(OnTrayScannerGetState);
SubscribeLocalEvent<TrayScannerComponent, ComponentHandleState>(OnTrayScannerHandleState);
SubscribeLocalEvent<TrayScannerComponent, ActivateInWorldEvent>(OnTrayScannerActivate);


SubscribeLocalEvent<TrayScannerComponent, GotEquippedHandEvent>(OnTrayHandEquipped);
SubscribeLocalEvent<TrayScannerComponent, GotUnequippedHandEvent>(OnTrayHandUnequipped);
SubscribeLocalEvent<TrayScannerComponent, GotEquippedEvent>(OnTrayEquipped);
Expand Down Expand Up @@ -87,52 +82,4 @@ private void OnTrayEquipped(Entity<TrayScannerComponent> ent, ref GotEquippedEve
{
OnEquip(args.EquipTarget);
}

private void OnTrayScannerActivate(EntityUid uid, TrayScannerComponent scanner, ActivateInWorldEvent args)
{
if (args.Handled || !args.Complex)
return;

SetScannerEnabled(uid, !scanner.Enabled, scanner);
args.Handled = true;
}

private void SetScannerEnabled(EntityUid uid, bool enabled, TrayScannerComponent? scanner = null)
{
if (!Resolve(uid, ref scanner) || scanner.Enabled == enabled)
return;

scanner.Enabled = enabled;
Dirty(uid, scanner);

// We don't remove from _activeScanners on disabled, because the update function will handle that, as well as
// managing the revealed subfloor entities

if (TryComp<AppearanceComponent>(uid, out var appearance))
{
_appearance.SetData(uid, TrayScannerVisual.Visual, scanner.Enabled ? TrayScannerVisual.On : TrayScannerVisual.Off, appearance);
}
}

private void OnTrayScannerGetState(EntityUid uid, TrayScannerComponent scanner, ref ComponentGetState args)
{
args.State = new TrayScannerState(scanner.Enabled, scanner.Range);
}

private void OnTrayScannerHandleState(EntityUid uid, TrayScannerComponent scanner, ref ComponentHandleState args)
{
if (args.Current is not TrayScannerState state)
return;

scanner.Range = state.Range;
SetScannerEnabled(uid, state.Enabled, scanner);
}
}

[Serializable, NetSerializable]
public enum TrayScannerVisual : sbyte
{
Visual,
On,
Off
}
}
25 changes: 3 additions & 22 deletions Content.Shared/SubFloor/TrayScannerComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,12 @@

namespace Content.Shared.SubFloor;

[RegisterComponent, NetworkedComponent]
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class TrayScannerComponent : Component
{
/// <summary>
/// Whether the scanner is currently on.
/// </summary>
[DataField]
public bool Enabled;

/// <summary>
/// Radius in which the scanner will reveal entities. Centered on the <see cref="LastLocation"/>.
/// </summary>
[DataField]
[DataField, AutoNetworkedField]
public float Range = 4f;
}

[Serializable, NetSerializable]
public sealed class TrayScannerState : ComponentState
{
public bool Enabled;
public float Range;

public TrayScannerState(bool enabled, float range)
{
Enabled = enabled;
Range = range;
}
}
}
7 changes: 4 additions & 3 deletions Resources/Prototypes/Entities/Objects/Tools/t-ray.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,16 @@
- state: tray-off
map: ["base"]
- type: TrayScanner
- type: ItemToggle
- type: Item
sprite: Objects/Tools/t-ray.rsi
- type: Appearance
- type: GenericVisualizer
visuals:
enum.TrayScannerVisual.Visual:
enum.ToggleableVisuals.Enabled:
base:
On: { state: tray-on }
Off: { state: tray-off }
True: { state: tray-on }
False: { state: tray-off }
- type: PhysicalComposition
materialComposition:
Steel: 400
Expand Down
Loading