using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Controllers;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Health;
using SPTarkov.Server.Core.Models.Eft.ItemEvent;
using SPTarkov.Server.Core.Utils;
namespace SPTarkov.Server.Core.Callbacks;
[Injectable]
public class HealthCallbacks(
HttpResponseUtil _httpResponseUtil,
ProfileHelper _profileHelper,
HealthController _healthController
)
{
///
/// Custom spt server request found in modules/QTEPatch.cs
///
///
/// HealthListener.Instance.CurrentHealth class
/// session id
/// empty response, no data sent back to client
public ValueTask HandleWorkoutEffects(string url, WorkoutData info, string sessionID)
{
_healthController.ApplyWorkoutChanges(
_profileHelper.GetPmcProfile(sessionID),
info,
sessionID
);
return new ValueTask(_httpResponseUtil.EmptyResponse());
}
///
/// Handle Eat
///
/// Players PMC profile
///
/// Session/player id
///
public ItemEventRouterResponse OffraidEat(
PmcData pmcData,
OffraidEatRequestData info,
string sessionID
)
{
return _healthController.OffRaidEat(pmcData, info, sessionID);
}
///
/// Handle Heal
///
/// Players PMC profile
///
/// Session/player id
///
public ItemEventRouterResponse OffraidHeal(
PmcData pmcData,
OffraidHealRequestData info,
string sessionID
)
{
return _healthController.OffRaidHeal(pmcData, info, sessionID);
}
///
/// Handle RestoreHealth
///
/// Players PMC profile
///
/// Session/player id
///
public ItemEventRouterResponse HealthTreatment(
PmcData pmcData,
HealthTreatmentRequestData info,
string sessionID
)
{
return _healthController.HealthTreatment(pmcData, info, sessionID);
}
}