using Core.Annotations; using Core.Models.Common; using Core.Models.Eft.Common.Tables; using Core.Models.Spt.Config; using Core.Services; using ILogger = Core.Models.Utils.ILogger; namespace Core.Helpers; [Injectable] public class BotHelper { private readonly ILogger _logger; private readonly DatabaseService _databaseService; public BotHelper( ILogger logger, DatabaseService databaseService) { _logger = logger; _databaseService = databaseService; } /// /// Get a template object for the specified botRole from bots.types db /// /// botRole to get template for /// BotType object public BotType GetBotTemplate(string role) { if (!_databaseService.GetBots().Types.TryGetValue(role.ToLower(), out var bot)) { _logger.Error($"Unable to get bot of type: {role} from DB"); return null; } return bot; } /// /// Is the passed in bot role a PMC (usec/bear/pmc) /// /// bot role to check /// true if is pmc public bool IsBotPmc(string botRole) { throw new NotImplementedException(); } public bool IsBotBoss(string botRole) { throw new NotImplementedException(); } public bool IsBotFollower(string botRole) { throw new NotImplementedException(); } /// /// Add a bot to the FRIENDLY_BOT_TYPES list /// /// bot settings to alter /// bot type to add to friendly list public void AddBotToFriendlyList(DifficultyCategories difficultySettings, string typeToAdd) { throw new NotImplementedException(); } /// /// Add a bot to the REVENGE_BOT_TYPES list /// /// bot settings to alter /// bot type to add to revenge list public void AddBotToRevengeList(DifficultyCategories difficultySettings, string[] typesToAdd) { throw new NotImplementedException(); } public bool RollChanceToBePmc(MinMax botConvertMinMax) { throw new NotImplementedException(); } protected void GetPmcConversionValuesForLocation(string location) { throw new NotImplementedException(); } /// /// is the provided role a PMC, case-agnostic /// /// Role to check /// True if role is PMC public bool BotRoleIsPmc(string botRole) { throw new NotImplementedException(); } /// /// Get randomization settings for bot from config/bot.json /// /// level of bot /// bot equipment json /// RandomisationDetails public RandomisationDetails GetBotRandomizationDetails(int botLevel, EquipmentFilters botEquipConfig) { throw new NotImplementedException(); } /// /// Choose between pmcBEAR and pmcUSEC at random based on the % defined in pmcConfig.isUsec /// /// pmc role public string GetRandomizedPmcRole() { throw new NotImplementedException(); } /// /// Get the corresponding side when pmcBEAR or pmcUSEC is passed in /// /// role to get side for /// side (usec/bear) public string GetPmcSideByRole(string botRole) { throw new NotImplementedException(); } /// /// Get a randomized PMC side based on bot config value 'isUsec' /// /// pmc side as string protected string GetRandomizedPmcSide() { throw new NotImplementedException(); } /// /// Get a name from a PMC that fits the desired length /// /// Max length of name, inclusive /// OPTIONAL - what side PMC to get name from (usec/bear) /// name of PMC public string GetPmcNicknameOfMaxLength(int maxLength, string side = null) { throw new NotImplementedException(); } }