Files
crystall-punk-14/Content.Shared/_CP14/Fishing/Systems/CP14SharedFishingRodSystem.cs

52 lines
1.5 KiB
C#
Raw Permalink Normal View History

2024-12-09 02:29:33 +10:00
using Content.Shared._CP14.Fishing.Components;
2024-12-15 00:40:43 +10:00
using Content.Shared.Hands;
2024-12-01 04:28:25 +10:00
using Content.Shared.Hands.Components;
using Robust.Shared.Serialization;
2024-12-09 02:29:33 +10:00
namespace Content.Shared._CP14.Fishing.Systems;
2024-12-01 04:28:25 +10:00
public abstract class CP14SharedFishingRodSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeAllEvent<RequestFishingRodReelMessage>(OnReel);
2024-12-15 00:40:43 +10:00
SubscribeLocalEvent<CP14FishingRodComponent, HandDeselectedEvent>(OnDeselected);
2024-12-01 04:28:25 +10:00
}
private void OnReel(RequestFishingRodReelMessage msg, EntitySessionEventArgs args)
{
var player = args.SenderSession.AttachedEntity;
if (!TryComp<HandsComponent>(player, out var hands))
return;
if (!TryComp<CP14FishingRodComponent>(hands.ActiveHandEntity, out var fishingRodComponent))
return;
if (fishingRodComponent.Reeling == msg.Reeling)
return;
fishingRodComponent.Reeling = msg.Reeling;
Dirty(hands.ActiveHandEntity.Value, fishingRodComponent);
}
2024-12-15 00:40:43 +10:00
private void OnDeselected(Entity<CP14FishingRodComponent> entity, ref HandDeselectedEvent args)
2024-12-01 04:28:25 +10:00
{
2024-12-15 00:40:43 +10:00
entity.Comp.Reeling = false;
Dirty(entity);
2024-12-01 04:28:25 +10:00
}
[Serializable, NetSerializable]
protected sealed class RequestFishingRodReelMessage : EntityEventArgs
{
public bool Reeling;
public RequestFishingRodReelMessage(bool reeling)
{
Reeling = reeling;
}
}
}