diff --git a/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs b/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs index 5152d227..0e49c031 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs @@ -37,7 +37,6 @@ public class InsuranceController( RagfairPriceService ragfairPriceService, ServerLocalisationService serverLocalisationService, SaveServer saveServer, - TraderStore traderStore, ConfigServer configServer, ICloner cloner ) @@ -690,7 +689,7 @@ public class InsuranceController( /// Should item be deleted protected bool? RollForDelete(MongoId traderId, Item? insuredItem = null) { - var trader = traderStore.GetTraderById(traderId); + var trader = databaseService.GetTrader(traderId); if (trader is null) { return null; diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ProfileValidatorHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ProfileValidatorHelper.cs index 1e2dd598..10d0bd6e 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ProfileValidatorHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ProfileValidatorHelper.cs @@ -17,8 +17,7 @@ public class ProfileValidatorHelper( ConfigServer configServer, DatabaseService databaseService, ISptLogger logger, - ServerLocalisationService serverLocalisationService, - TraderStore traderStore + ServerLocalisationService serverLocalisationService ) { protected readonly CoreConfig CoreConfig = configServer.GetConfig(); @@ -386,6 +385,6 @@ public class ProfileValidatorHelper( protected bool DoesTraderExist(MongoId traderId) { - return traderStore.GetTraderById(traderId) != null; + return databaseService.GetTrader(traderId) != null; } } diff --git a/Libraries/SPTarkov.Server.Core/Helpers/TraderHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/TraderHelper.cs index dfe8b478..d30233f0 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/TraderHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/TraderHelper.cs @@ -23,7 +23,6 @@ public class TraderHelper( HandbookHelper handbookHelper, ServerLocalisationService serverLocalisationService, FenceService fenceService, - TraderStore traderStore, TimeUtil timeUtil, RandomUtil randomUtil, ConfigServer configServer @@ -490,10 +489,10 @@ public class TraderHelper( { highestPrice = 1d; // Default price var itemHandbookPrice = handbookHelper.GetTemplatePrice(tpl); - foreach (var trader in traderStore.GetAllTraders()) + foreach ((var traderKey, var trader) in databaseService.GetTraders()) { // Get trader and check buy category allows tpl - var traderBase = databaseService.GetTrader(trader.Id).Base; + var traderBase = trader.Base; if (traderBase is null) { @@ -527,6 +526,6 @@ public class TraderHelper( /// True if a Trader exists with given ID public bool TraderExists(MongoId traderId) { - return traderStore.GetTraderById(traderId) != null; + return databaseService.GetTrader(traderId) != null; } } diff --git a/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs b/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs deleted file mode 100644 index 0df0854d..00000000 --- a/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs +++ /dev/null @@ -1,38 +0,0 @@ -using SPTarkov.Server.Core.Models.Common; -using SPTarkov.Server.Core.Models.Eft.Common.Tables; -using SPTarkov.Server.Core.Models.Spt.Services; - -namespace SPTarkov.Server.Core.Models; - -public interface ITrader -{ - public string Name { get; } - public MongoId Id { get; } -} - -public abstract record ICustomTrader : ITrader -{ - public abstract string Name { get; } - public abstract MongoId Id { get; } - - public abstract TraderAssort GetAssort(); - - public abstract Dictionary> GetQuestAssort(); - - public abstract TraderBase GetBase(); - - public virtual List? GetSuits() - { - return null; - } - - public virtual List? GetServices() - { - return null; - } - - public virtual Dictionary?> GetDialogues() - { - return null; - } -} diff --git a/Libraries/SPTarkov.Server.Core/Models/Trader/Traders.cs b/Libraries/SPTarkov.Server.Core/Models/Trader/Traders.cs deleted file mode 100644 index 80abf510..00000000 --- a/Libraries/SPTarkov.Server.Core/Models/Trader/Traders.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System.Text.Json.Serialization; -using SPTarkov.DI.Annotations; -using SPTarkov.Server.Core.Models.Common; -using SPTarkov.Server.Core.Models.Enums; - -namespace SPTarkov.Server.Core.Models; - -[Injectable] -public record Prapor : ITrader -{ - public string Name { get; } = "Prapor"; - public MongoId Id { get; } = Traders.PRAPOR; -} - -[Injectable] -public record Therapist : ITrader -{ - public string Name { get; } = "Therapist"; - public MongoId Id { get; } = Traders.THERAPIST; -} - -[Injectable] -public record Fence : ITrader -{ - public string Name { get; } = "Fence"; - public MongoId Id { get; } = Traders.FENCE; -} - -[Injectable] -public record Skier : ITrader -{ - public string Name { get; } = "Skier"; - public MongoId Id { get; } = Traders.SKIER; -} - -[Injectable] -public record Peacekeeper : ITrader -{ - public string Name { get; } = "Peacekeeper"; - public MongoId Id { get; } = Traders.PEACEKEEPER; -} - -[Injectable] -public record Mechanic : ITrader -{ - public string Name { get; } = "Mechanic"; - public MongoId Id { get; } = Traders.MECHANIC; -} - -[Injectable] -public record Ragman : ITrader -{ - public string Name { get; } = "Ragman"; - public MongoId Id { get; } = Traders.RAGMAN; -} - -[Injectable] -public record Jaeger : ITrader -{ - public string Name { get; } = "Jaeger"; - public MongoId Id { get; } = Traders.JAEGER; -} - -[Injectable] -public record LighthouseKeeper : ITrader -{ - public string Name { get; } = "LighthouseKeeper"; - public MongoId Id { get; } = Traders.LIGHTHOUSEKEEPER; -} - -[Injectable] -public record Btr : ITrader -{ - public string Name { get; } = "Btr"; - public MongoId Id { get; } = Traders.BTR; -} - -[Injectable] -public record Ref : ITrader -{ - public string Name { get; } = "Ref"; - public MongoId Id { get; } = Traders.REF; -} diff --git a/Libraries/SPTarkov.Server.Core/Services/DatabaseService.cs b/Libraries/SPTarkov.Server.Core/Services/DatabaseService.cs index 524cf877..03134a3d 100644 --- a/Libraries/SPTarkov.Server.Core/Services/DatabaseService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/DatabaseService.cs @@ -169,8 +169,6 @@ public class DatabaseService( { if (!databaseServer.GetTables().Traders.TryGetValue(traderId, out var desiredTrader)) { - logger.Error(serverLocalisationService.GetText("database-no_trader_found_with_id", traderId)); - return null; } diff --git a/Libraries/SPTarkov.Server.Core/Services/TraderStore.cs b/Libraries/SPTarkov.Server.Core/Services/TraderStore.cs deleted file mode 100644 index 94d1d623..00000000 --- a/Libraries/SPTarkov.Server.Core/Services/TraderStore.cs +++ /dev/null @@ -1,86 +0,0 @@ -using SPTarkov.DI.Annotations; -using SPTarkov.Server.Core.DI; -using SPTarkov.Server.Core.Models; -using SPTarkov.Server.Core.Models.Common; -using SPTarkov.Server.Core.Models.Eft.Common.Tables; -using SPTarkov.Server.Core.Models.Utils; - -namespace SPTarkov.Server.Core.Services; - -/// -/// Source of truth for all default traders as well as any additional trader a server mod may add. -/// -[Injectable(InjectionType.Singleton, TypePriority = OnLoadOrder.TraderRegistration)] -public class TraderStore( - DatabaseService databaseService, - IEnumerable injectedTraders, - ServerLocalisationService localisationService, - ISptLogger logger -) : IOnLoad -{ - private readonly Dictionary _traders = new(); - - public Task OnLoad() - { - logger.Info("Importing traders..."); - var customTraders = 0; - - foreach (var trader in injectedTraders) - { - if (trader is ICustomTrader customTrader) - { - try - { - var dbTrader = new Trader - { - Assort = customTrader.GetAssort(), - Base = customTrader.GetBase(), - QuestAssort = customTrader.GetQuestAssort(), - Dialogue = customTrader.GetDialogues(), - Suits = customTrader.GetSuits(), - Services = customTrader.GetServices(), - }; - databaseService.GetTraders().Add(trader.Id, dbTrader); - _traders.Add(trader.Id, trader); - logger.Info($"Loaded custom trader: {trader.Name}"); - customTraders++; - } - catch (Exception e) - { - logger.Error( - localisationService.GetText( - "trader-unable_to_add_custom_trader", - new { traderId = trader.Name, error = e.StackTrace } - ) - ); - } - } - else - { - _traders.Add(trader.Id, trader); - } - } - - logger.Info($"Importing traders complete {(customTraders == 0 ? "" : $"[{customTraders} traders loaded]")}"); - return Task.CompletedTask; - } - - /// - /// Returns a trader by given ID. - /// - /// - /// - public ITrader? GetTraderById(MongoId traderId) - { - return _traders.GetValueOrDefault(traderId); - } - - /// - /// Returns all traders in the game, including custom traders. - /// - /// - public IEnumerable GetAllTraders() - { - return _traders.Values; - } -} diff --git a/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs b/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs index c866bc75..ef98068a 100644 --- a/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs +++ b/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs @@ -20,7 +20,7 @@ public class JsonUtil ReadCommentHandling = JsonCommentHandling.Skip, WriteIndented = false, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, - UnmappedMemberHandling = JsonUnmappedMemberHandling.Disallow, + UnmappedMemberHandling = JsonUnmappedMemberHandling.Skip, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, };