Skip to content
Merged
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
70 changes: 70 additions & 0 deletions EXILED/Exiled.Events/EventArgs/Player/ShowingHitMarkerEventArgs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// -----------------------------------------------------------------------
// <copyright file="ShowingHitMarkerEventArgs.cs" company="ExMod Team">
// Copyright (c) ExMod Team. All rights reserved.
// Licensed under the CC BY-SA 3.0 license.
// </copyright>
// -----------------------------------------------------------------------

namespace Exiled.Events.EventArgs.Player
{
using API.Features;
using Interfaces;

/// <summary>
/// Contains all information before a hitmarker is show to player.
/// </summary>
Comment thread
louis1706 marked this conversation as resolved.
public class ShowingHitMarkerEventArgs : IPlayerEvent, IDeniableEvent
{
/// <summary>
/// Initializes a new instance of the <see cref="ShowingHitMarkerEventArgs" /> class.
/// </summary>
/// <param name="hub">
/// <inheritdoc cref="Player" />
/// </param>
/// <param name="size">
/// <inheritdoc cref="Size" />
/// </param>
/// <param name="shouldPlayAudio">
/// <inheritdoc cref="ShouldPlayAudio" />
/// </param>
/// <param name="hitmarkerType">
/// <inheritdoc cref="HitmarkerType" />
/// </param>
/// <param name="isAllowed">
/// <inheritdoc cref="IsAllowed" />
/// </param>
public ShowingHitMarkerEventArgs(ReferenceHub hub, float size, bool shouldPlayAudio, HitmarkerType hitmarkerType, bool isAllowed)
{
Player = Player.Get(hub);
Size = size;
ShouldPlayAudio = shouldPlayAudio;
HitmarkerType = hitmarkerType;
IsAllowed = isAllowed;
}

/// <summary>
/// Gets the player that the hitmarker is being shown to.
/// </summary>
public Player Player { get; }

/// <summary>
/// Gets or sets the target size multiplier.
/// </summary>
public float Size { get; set; }

/// <summary>
/// Gets or sets a value indicating whether the hitmarker sound effect should play.
/// </summary>
public bool ShouldPlayAudio { get; set; }

/// <summary>
/// Gets or sets a the type of the hitmarker.
/// </summary>
public HitmarkerType HitmarkerType { get; set; }

/// <summary>
/// Gets or sets a value indicating whether the hitmarker should be shown.
/// </summary>
public bool IsAllowed { get; set; }
}
}
2 changes: 2 additions & 0 deletions EXILED/Exiled.Events/Events.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
22 changes: 22 additions & 0 deletions EXILED/Exiled.Events/Handlers/Player.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ public class Player
/// </summary>
public static Event<HitEventArgs> Hit { get; set; } = new ();

/// <summary>
/// Invoked before a player is shown a hitmarker.
/// </summary>
public static Event<ShowingHitMarkerEventArgs> ShowingHitMarker { get; set; } = new ();

/// <summary>
/// Invoked before authenticating a <see cref="API.Features.Player"/>.
/// </summary>
Expand Down Expand Up @@ -1439,6 +1444,23 @@ public static void OnItemRemoved(ReferenceHub referenceHub, InventorySystem.Item
/// <param name="ev">The <see cref="HitEventArgs"/> instance.</param>
public static void OnHit(HitEventArgs ev) => Hit.InvokeSafely(ev);

/// <summary>
/// Called before a player is shown a hitmarker.
/// </summary>
/// <param name="labEv">The <see cref="PlayerSendingHitmarkerEventArgs"/> instance.</param>
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;
}

/// <summary>
/// Called before Emergency Release Button is pressed.
/// </summary>
Expand Down
Loading