diff --git a/Core/Controllers/DialogueController.cs b/Core/Controllers/DialogueController.cs index b19095f3..db9da360 100644 --- a/Core/Controllers/DialogueController.cs +++ b/Core/Controllers/DialogueController.cs @@ -5,6 +5,7 @@ using Core.Models.Eft.Dialog; using Core.Models.Eft.HttpResponse; using Core.Models.Eft.Profile; using Core.Models.Enums; +using Core.Models.Spt.Config; using Core.Servers; namespace Core.Controllers; @@ -14,17 +15,23 @@ public class DialogueController { private readonly DialogueHelper _dialogueHelper; private readonly ProfileHelper _profileHelper; + private readonly ConfigServer _configServer; private readonly SaveServer _saveServer; private readonly List _dialogueChatBots; + private readonly CoreConfig _coreConfig; public DialogueController( DialogueHelper dialogueHelper, ProfileHelper profileHelper, + ConfigServer configServer, SaveServer saveServer) { _dialogueHelper = dialogueHelper; _profileHelper = profileHelper; + _configServer = configServer; _saveServer = saveServer; + + _coreConfig = _configServer.GetConfig(ConfigTypes.CORE); } /// @@ -54,7 +61,7 @@ public class DialogueController public GetFriendListDataResponse GetFriendList(string sessionId) { // Add all chatbots to the friends list - var friends = _dialogueChatBots.Select((bot) => bot.GetChatBot()).ToList(); + var friends = GetActiveChatBots(); // Add any friends the user has after the chatbots var profile = _profileHelper.GetFullProfile(sessionId); @@ -82,6 +89,22 @@ public class DialogueController }; } + private List GetActiveChatBots() + { + var activeBots = new List(); + + var chatBotConfig = _coreConfig.Features.ChatbotFeatures; + foreach (var bot in _dialogueChatBots) + { + var botData = bot.GetChatBot(); + if (chatBotConfig.EnabledBots.ContainsKey(botData.Id)) { + activeBots.Add(botData); + } + } + + return activeBots; + } + /// /// Handle client/mail/dialog/list /// Create array holding trader dialogs and mail interactions with player diff --git a/Core/Models/Spt/Config/CoreConfig.cs b/Core/Models/Spt/Config/CoreConfig.cs index bd659571..6cf96d9f 100644 --- a/Core/Models/Spt/Config/CoreConfig.cs +++ b/Core/Models/Spt/Config/CoreConfig.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; using Core.Models.Eft.Game; namespace Core.Models.Spt.Config; @@ -172,15 +172,9 @@ public class ServerFeatures public class ChatbotFeatures { - [JsonPropertyName("sptFriendEnabled")] - public bool SptFriendEnabled { get; set; } - [JsonPropertyName("sptFriendGiftsEnabled")] public bool SptFriendGiftsEnabled { get; set; } - [JsonPropertyName("commandoEnabled")] - public bool CommandoEnabled { get; set; } - [JsonPropertyName("commandoFeatures")] public CommandoFeatures CommandoFeatures { get; set; } @@ -189,10 +183,13 @@ public class ChatbotFeatures [JsonPropertyName("ids")] public Dictionary Ids { get; set; } + + [JsonPropertyName("enabledBots")] + public Dictionary EnabledBots { get; set; } } public class CommandoFeatures { [JsonPropertyName("giveCommandEnabled")] public bool GiveCommandEnabled { get; set; } -} \ No newline at end of file +} diff --git a/Server/Assets/configs/core.json b/Server/Assets/configs/core.json index e87a2ecb..8e60b15d 100644 --- a/Server/Assets/configs/core.json +++ b/Server/Assets/configs/core.json @@ -181,9 +181,7 @@ "features": { "compressProfile": false, "chatbotFeatures": { - "sptFriendEnabled": true, "sptFriendGiftsEnabled": true, - "commandoEnabled": true, "commandoFeatures": { "giveCommandEnabled": true }, @@ -193,7 +191,11 @@ "ids": { "commando": "6723fd51c5924c57ce0ca01e", "spt": "6723fd51c5924c57ce0ca01f" - } + }, + "enabledBots": { + "6723fd51c5924c57ce0ca01e": true, + "6723fd51c5924c57ce0ca01f": true + } }, "createNewProfileTypesBlacklist": [] },