CatStation/Content.Shared/Vehicle/Systems/VehicleSystem.Operator.cs
AndrewFenriz d2472f82ed
Hand blocker for vehicles (and mechs) (#45045)
* add BlockHands

* and mechs

* move to another place

* small fix

* TrySpawnUnremoveableVirtualItemInHand

* upd

* fix docs

* VehicleHandBlockerComponent
2026-07-31 17:48:40 +00:00

55 lines
1.6 KiB
C#

using Content.Shared.Buckle.Components;
using Content.Shared.Vehicle.Components;
using Robust.Shared.Containers;
namespace Content.Shared.Vehicle.Systems;
public sealed partial class VehicleSystem
{
[SubscribeLocalEvent]
private void OnVehicleStrapped(Entity<StrapVehicleComponent> ent, ref StrappedEvent args)
{
if (!_vehicleQuery.TryComp(ent, out var vehicle))
return;
TrySetOperator((ent, vehicle), args.Buckle);
}
[SubscribeLocalEvent]
private void OnVehicleUnstrapped(Entity<StrapVehicleComponent> ent, ref UnstrappedEvent args)
{
if (!_vehicleQuery.TryComp(ent, out var vehicle))
return;
if (vehicle.Operator != args.Buckle)
return;
TryRemoveOperator((ent, vehicle));
}
[SubscribeLocalEvent]
private void OnContainerEntInserted(Entity<ContainerVehicleComponent> ent, ref EntInsertedIntoContainerMessage args)
{
if (_timing.ApplyingState || args.Container.ID != ent.Comp.ContainerId)
return;
if (!_vehicleQuery.TryComp(ent, out var vehicle))
return;
TrySetOperator((ent, vehicle), args.Entity);
}
[SubscribeLocalEvent]
private void OnContainerEntRemoved(Entity<ContainerVehicleComponent> ent, ref EntRemovedFromContainerMessage args)
{
if (_timing.ApplyingState || args.Container.ID != ent.Comp.ContainerId)
return;
if (!_vehicleQuery.TryComp(ent, out var vehicle))
return;
if (vehicle.Operator != args.Entity)
return;
TryRemoveOperator((ent, vehicle));
}
}