diff --git a/project/SPT.SinglePlayer/Models/MainMenu/ModdedTraders.cs b/project/SPT.SinglePlayer/Models/MainMenu/ModdedTraders.cs new file mode 100644 index 0000000..1dbef99 --- /dev/null +++ b/project/SPT.SinglePlayer/Models/MainMenu/ModdedTraders.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; + +namespace SPT.SinglePlayer.Models.MainMenu; + +public class ModdedTraders +{ + public List clothingService { get; set; } +} \ No newline at end of file diff --git a/project/SPT.SinglePlayer/SPTSingleplayerPlugin.cs b/project/SPT.SinglePlayer/SPTSingleplayerPlugin.cs index 52beca3..5be6adb 100644 --- a/project/SPT.SinglePlayer/SPTSingleplayerPlugin.cs +++ b/project/SPT.SinglePlayer/SPTSingleplayerPlugin.cs @@ -5,6 +5,7 @@ using SPT.SinglePlayer.Patches.Progression; using SPT.SinglePlayer.Patches.RaidFix; using SPT.SinglePlayer.Patches.ScavMode; using BepInEx; +using SPT.SinglePlayer.Utils.MainMenu; namespace SPT.SinglePlayer { @@ -67,5 +68,10 @@ namespace SPT.SinglePlayer Logger.LogInfo("Completed: SPT.SinglePlayer"); } + + public void Start() + { + TraderServiceManager.GetModdedTraderData(); + } } } diff --git a/project/SPT.SinglePlayer/Utils/MainMenu/TraderServiceManager.cs b/project/SPT.SinglePlayer/Utils/MainMenu/TraderServiceManager.cs new file mode 100644 index 0000000..01bfbfc --- /dev/null +++ b/project/SPT.SinglePlayer/Utils/MainMenu/TraderServiceManager.cs @@ -0,0 +1,49 @@ +using System.Collections.Generic; +using System.Reflection; +using EFT; +using HarmonyLib; +using Newtonsoft.Json; +using SPT.Common.Http; +using SPT.SinglePlayer.Models.MainMenu; + +namespace SPT.SinglePlayer.Utils.MainMenu; + +public static class TraderServiceManager +{ + private static Dictionary _traderIdToTraderServiceDict = new() + { + { + "5ac3b934156ae10c4430e83c", + Profile.ETraderServiceSource.Ragman + }, + { + "6617beeaa9cfa777ca915b7c", + Profile.ETraderServiceSource.ArenaManager + } + }; + + private static FieldInfo _traderIdToTraderServiceField; + + static TraderServiceManager() + { + _traderIdToTraderServiceField = AccessTools.Field(typeof(Profile.TraderInfo), "TraderIdToTraderService"); + } + + public static void GetModdedTraderData() + { + var req = RequestHandler.GetJson("/singleplayer/moddedTraders"); + var moddedTraders = JsonConvert.DeserializeObject(req); + + AddModdedTradersToClothingServiceDict(moddedTraders); + } + + private static void AddModdedTradersToClothingServiceDict(ModdedTraders traders) + { + foreach (var trader in traders.clothingService) + { + _traderIdToTraderServiceDict.Add(trader, Profile.ETraderServiceSource.Ragman); + } + + _traderIdToTraderServiceField.SetValue(_traderIdToTraderServiceField, _traderIdToTraderServiceDict); + } +} \ No newline at end of file