From 4f60115494700a84ec64f108142383bcc3cf2c26 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 25 Jan 2025 10:33:01 +0000 Subject: [PATCH] Implemented `CloneExistingCraftsAndAddNew` --- .../Core/Models/Spt/Config/HideoutConfig.cs | 19 +++++++++++- Libraries/Core/Services/PostDbLoadService.cs | 31 +++++++++++++++++-- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/Libraries/Core/Models/Spt/Config/HideoutConfig.cs b/Libraries/Core/Models/Spt/Config/HideoutConfig.cs index 8f209cf6..dc34a73b 100644 --- a/Libraries/Core/Models/Spt/Config/HideoutConfig.cs +++ b/Libraries/Core/Models/Spt/Config/HideoutConfig.cs @@ -1,5 +1,6 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; using Core.Models.Common; +using Core.Models.Eft.Hideout; namespace Core.Models.Spt.Config; @@ -40,6 +41,22 @@ public record HideoutConfig : BaseConfig [JsonPropertyName("cultistCircle")] public CultistCircleSettings CultistCircle { get; set; } + + [JsonPropertyName("hideoutCraftsToAdd")] + public List HideoutCraftsToAdd { get; set; } +} + +public record HideoutCraftToAdd +{ + [JsonPropertyName("requirements")] + public List Requirements { get; set; } + + [JsonPropertyName("craftIdToCopy")] + public string CraftIdToCopy { get; set; } + + [JsonPropertyName("craftOutputTpl")] + public string CraftOutputTpl { get; set; } + } public record CultistCircleSettings diff --git a/Libraries/Core/Services/PostDbLoadService.cs b/Libraries/Core/Services/PostDbLoadService.cs index 3a08b209..9c89d88f 100644 --- a/Libraries/Core/Services/PostDbLoadService.cs +++ b/Libraries/Core/Services/PostDbLoadService.cs @@ -1,15 +1,42 @@ -using SptCommon.Annotations; +using Core.Models.Spt.Config; +using Core.Models.Utils; +using Core.Servers; +using Core.Utils; +using Core.Utils.Cloners; +using SptCommon.Annotations; namespace Core.Services; [Injectable(InjectionType.Singleton)] -public class PostDbLoadService +public class PostDbLoadService( + ISptLogger _logger, + HashUtil _hashUtil, + DatabaseService _databaseService, + ConfigServer _configServer, + ICloner _cloner) { + protected HideoutConfig _hideoutConfig = _configServer.GetConfig(); + public void PerformPostDbLoadActions() { // TODO: } + protected void CloneExistingCraftsAndAddNew() + { + var hideoutCraftDb = _databaseService.GetHideout().Production; + var craftsToAdd = _hideoutConfig.HideoutCraftsToAdd; + foreach (var craftToAdd in craftsToAdd) { + var clonedCraft = _cloner.Clone( + hideoutCraftDb.Recipes.FirstOrDefault((x) => x.Id == craftToAdd.CraftIdToCopy)); + clonedCraft.Id = _hashUtil.Generate(); + clonedCraft.Requirements = craftToAdd.Requirements; + clonedCraft.EndProduct = craftToAdd.CraftOutputTpl; + + hideoutCraftDb.Recipes.Add(clonedCraft); + } + } + protected void AdjustMinReserveRaiderSpawnChance() { throw new NotImplementedException();