Damage/HealingEvent.cs

Defines game events and data records for healing, including a healing request event, a healing broadcast event, the FHealingRequest and FHealingReceived data shapes, and an EHealingType enum.

using Sandbox.Events;

namespace KOTH;

public record HealingRequestEvent(FHealingRequest HealingRequest) : IGameEvent;
public record HealingBroadcastEvent(FHealingReceived HealingRequest) : IGameEvent;

public record FHealingRequest
{
	public DamageComponent TargetDamageComponent { get; init; }
	public PlayerPawn TargetPlayerPawn { get; init; }
	public PlayerPawn HealerPlayerPawn { get; init; }
	public int BaseHealing { get; init; } = 0;
	public bool AllowOverheal { get; init; } = false;

	public EHealingType HealingType { get; init; } = EHealingType.Continuous;
	public Vector3 HealingOrigin { get; init; } = Vector3.Zero;

	public RealTimeSince TimeSinceEvent { get; init; } = 0;

	public bool IsValid()
	{
		return TargetPlayerPawn.IsValid();
	}
}

public record FHealingReceived
{
	public PlayerPawn TargetPlayerPawn { get; init; }
	public PlayerPawn HealerPlayerPawn { get; init; }
	public PlayerState TargetPlayerState { get; init; }
	public PlayerState HealerPlayerState { get; init; }
	public int Heals { get; init; } = 0;
	public EHealingType HealingType { get; init; } = EHealingType.Continuous;
}

public enum EHealingType
{
	Continuous = 0,
	OneOff,
}