Implemented Modded Trader Customization Services (#660)

Co-authored-by: GrooveypenguinX <jakechase2110@gmail.comX>
Co-authored-by: Chomp <27521899+chompDev@users.noreply.github.com>
This commit is contained in:
GrooveypenguinX
2025-10-26 04:49:39 -04:00
committed by GitHub
parent d375879a3a
commit 07aa4c8977
4 changed files with 77 additions and 0 deletions
@@ -0,0 +1,23 @@
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Controllers;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Utils;
namespace SPTarkov.Server.Core.Callbacks;
[Injectable]
public class ModdedTraderCustomizationCallbacks(
ModdedTraderCustomizationController moddedTraderCustomizationController,
HttpResponseUtil httpResponseUtil
)
{
/// <summary>
/// Handle /singleplayer/moddedTraders
/// </summary>
/// <returns></returns>
public ValueTask<string> GetCustomizationTraders(string url, EmptyRequestData _, MongoId sessionID)
{
return new ValueTask<string>(httpResponseUtil.NoBody(moddedTraderCustomizationController.GetCustomizationSellerIds()));
}
}
@@ -0,0 +1,28 @@
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Models.Enums;
using SPTarkov.Server.Core.Models.Spt.Mod;
using SPTarkov.Server.Core.Services;
namespace SPTarkov.Server.Core.Controllers;
[Injectable]
public class ModdedTraderCustomizationController(DatabaseService databaseService)
{
public ModdedTraderListResponse GetCustomizationSellerIds()
{
var traders = databaseService.GetTraders();
var customizationSellers = new ModdedTraderListResponse
{
ModdedTraders = []
};
foreach (var trader in traders)
{
if (trader.Value.Base.CustomizationSeller!.Value && trader.Key != Traders.RAGMAN)
{
customizationSellers.ModdedTraders.Add(trader.Key);
}
}
return customizationSellers;
}
}
@@ -0,0 +1,6 @@
namespace SPTarkov.Server.Core.Models.Spt.Mod;
public record ModdedTraderListResponse
{
public List<string>? ModdedTraders { get; set; }
}
@@ -0,0 +1,20 @@
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Callbacks;
using SPTarkov.Server.Core.DI;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Utils;
namespace SPTarkov.Server.Core.Routers.Static;
[Injectable]
public class ModdedTraderCustomizationRouter(JsonUtil jsonUtil, ModdedTraderCustomizationCallbacks moddedTraderCustomizationCallbacks)
: StaticRouter(
jsonUtil,
[
new RouteAction<EmptyRequestData>(
"/singleplayer/moddedTraders",
async (url, info, sessionID, output) =>
await moddedTraderCustomizationCallbacks.GetCustomizationTraders(url, info, sessionID)
)
]
) { }