using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.Models.Eft.Bot; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Utils; namespace SPTarkov.Server.Core.Callbacks; [Injectable] public class BotCallbacks( BotController _botController, HttpResponseUtil _httpResponseUtil ) { /// /// Handle singleplayer/settings/bot/limit /// Is called by client to define each bot roles wave limit /// /// public ValueTask GetBotLimit(string url, EmptyRequestData _, string sessionID) { var splitUrl = url.Split('/'); var type = splitUrl[^1]; return new ValueTask(_httpResponseUtil.NoBody(_botController.GetBotPresetGenerationLimit(type))); } /// /// Handle singleplayer/settings/bot/difficulty /// /// public ValueTask GetBotDifficulty(string url, EmptyRequestData _, string sessionID) { var splitUrl = url.Split('/'); var type = splitUrl[^2].ToLower(); var difficulty = splitUrl[^1]; if (difficulty == "core") { return new ValueTask(_httpResponseUtil.NoBody(_botController.GetBotCoreDifficulty())); } return new ValueTask(_httpResponseUtil.NoBody(_botController.GetBotDifficulty(sessionID, type, difficulty))); } /// /// Handle singleplayer/settings/bot/difficulties /// /// public ValueTask GetAllBotDifficulties(string url, EmptyRequestData _, string sessionID) { return new ValueTask(_httpResponseUtil.NoBody(_botController.GetAllBotDifficulties())); } /// /// Handle client/game/bot/generate /// /// public ValueTask GenerateBots(string url, GenerateBotsRequestData info, string sessionID) { return new ValueTask(_httpResponseUtil.GetBody(_botController.Generate(sessionID, info))); } /// /// Handle singleplayer/settings/bot/maxCap /// /// public ValueTask GetBotCap(string url, EmptyRequestData _, string sessionID) { var splitUrl = url.Split('/'); var location = splitUrl[^1]; return new ValueTask(_httpResponseUtil.NoBody(_botController.GetBotCap(location))); } /// /// Handle singleplayer/settings/bot/getBotBehaviours /// /// public ValueTask GetBotBehaviours() { return new ValueTask(_httpResponseUtil.NoBody(_botController.GetAiBotBrainTypes())); } }