diff --git a/EXILED/Exiled.Events/EventArgs/Player/ShowingHitMarkerEventArgs.cs b/EXILED/Exiled.Events/EventArgs/Player/ShowingHitMarkerEventArgs.cs new file mode 100644 index 000000000..b0aab33b4 --- /dev/null +++ b/EXILED/Exiled.Events/EventArgs/Player/ShowingHitMarkerEventArgs.cs @@ -0,0 +1,70 @@ +// ----------------------------------------------------------------------- +// +// Copyright (c) ExMod Team. All rights reserved. +// Licensed under the CC BY-SA 3.0 license. +// +// ----------------------------------------------------------------------- + +namespace Exiled.Events.EventArgs.Player +{ + using API.Features; + using Interfaces; + + /// + /// Contains all information before a hitmarker is show to player. + /// + public class ShowingHitMarkerEventArgs : IPlayerEvent, IDeniableEvent + { + /// + /// Initializes a new instance of the class. + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public ShowingHitMarkerEventArgs(ReferenceHub hub, float size, bool shouldPlayAudio, HitmarkerType hitmarkerType, bool isAllowed) + { + Player = Player.Get(hub); + Size = size; + ShouldPlayAudio = shouldPlayAudio; + HitmarkerType = hitmarkerType; + IsAllowed = isAllowed; + } + + /// + /// Gets the player that the hitmarker is being shown to. + /// + public Player Player { get; } + + /// + /// Gets or sets the target size multiplier. + /// + public float Size { get; set; } + + /// + /// Gets or sets a value indicating whether the hitmarker sound effect should play. + /// + public bool ShouldPlayAudio { get; set; } + + /// + /// Gets or sets a the type of the hitmarker. + /// + public HitmarkerType HitmarkerType { get; set; } + + /// + /// Gets or sets a value indicating whether the hitmarker should be shown. + /// + public bool IsAllowed { get; set; } + } +} \ No newline at end of file diff --git a/EXILED/Exiled.Events/Events.cs b/EXILED/Exiled.Events/Events.cs index 806733557..a39d252a5 100644 --- a/EXILED/Exiled.Events/Events.cs +++ b/EXILED/Exiled.Events/Events.cs @@ -92,6 +92,7 @@ public override void OnEnabled() LabApi.Events.Handlers.PlayerEvents.ReloadingWeapon += Handlers.Player.OnReloadingWeapon; LabApi.Events.Handlers.PlayerEvents.UnloadingWeapon += Handlers.Player.OnUnloadingWeapon; + LabApi.Events.Handlers.PlayerEvents.SendingHitmarker += Handlers.Player.OnShowingHitMarker; LabApi.Events.Handlers.Scp127Events.Talking += Handlers.Scp127.OnTalking; LabApi.Events.Handlers.Scp127Events.Talked += Handlers.Scp127.OnTalked; @@ -137,6 +138,7 @@ public override void OnDisabled() LabApi.Events.Handlers.PlayerEvents.ReloadingWeapon -= Handlers.Player.OnReloadingWeapon; LabApi.Events.Handlers.PlayerEvents.UnloadingWeapon -= Handlers.Player.OnUnloadingWeapon; + LabApi.Events.Handlers.PlayerEvents.SendingHitmarker -= Handlers.Player.OnShowingHitMarker; LabApi.Events.Handlers.Scp127Events.Talking -= Handlers.Scp127.OnTalking; LabApi.Events.Handlers.Scp127Events.Talked -= Handlers.Scp127.OnTalked; diff --git a/EXILED/Exiled.Events/Handlers/Player.cs b/EXILED/Exiled.Events/Handlers/Player.cs index 424823116..539c83b65 100644 --- a/EXILED/Exiled.Events/Handlers/Player.cs +++ b/EXILED/Exiled.Events/Handlers/Player.cs @@ -32,6 +32,11 @@ public class Player /// public static Event Hit { get; set; } = new (); + /// + /// Invoked before a player is shown a hitmarker. + /// + public static Event ShowingHitMarker { get; set; } = new (); + /// /// Invoked before authenticating a . /// @@ -1439,6 +1444,23 @@ public static void OnItemRemoved(ReferenceHub referenceHub, InventorySystem.Item /// The instance. public static void OnHit(HitEventArgs ev) => Hit.InvokeSafely(ev); + /// + /// Called before a player is shown a hitmarker. + /// + /// The instance. + public static void OnShowingHitMarker(PlayerSendingHitmarkerEventArgs labEv) + { + if (!ShowingHitMarker.Patched) + return; + + ShowingHitMarkerEventArgs ev = new(labEv.Player.ReferenceHub, labEv.Size, labEv.PlayAudio, labEv.Hitmarker, labEv.IsAllowed); + ShowingHitMarker.InvokeSafely(ev); + labEv.Size = ev.Size; + labEv.PlayAudio = ev.ShouldPlayAudio; + labEv.Hitmarker = ev.HitmarkerType; + labEv.IsAllowed = ev.IsAllowed; + } + /// /// Called before Emergency Release Button is pressed. ///