From 5ca4aa08d503bcfe21ac8b99693bfbd840aabeb1 Mon Sep 17 00:00:00 2001 From: CWX Date: Thu, 16 Jan 2025 12:15:22 +0000 Subject: [PATCH 1/2] finish off profileHelper --- Core/Helpers/PresetHelper.cs | 66 +++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 13 deletions(-) diff --git a/Core/Helpers/PresetHelper.cs b/Core/Helpers/PresetHelper.cs index 08bee62d..b8b82f32 100644 --- a/Core/Helpers/PresetHelper.cs +++ b/Core/Helpers/PresetHelper.cs @@ -11,7 +11,7 @@ public class PresetHelper { protected DatabaseService _databaseService; protected ItemHelper _itemHelper; - protected ICloner _primaryCloner; + protected ICloner _cloner; protected Dictionary> _lookup = new(); protected Dictionary _defaultEquipmentPresets; @@ -21,12 +21,12 @@ public class PresetHelper ( DatabaseService databaseService, ItemHelper itemHelper, - ICloner primaryCloner + ICloner cloner ) { _databaseService = databaseService; _itemHelper = itemHelper; - _primaryCloner = primaryCloner; + _cloner = cloner; } public void HydratePresetStore(Dictionary> input) @@ -91,29 +91,40 @@ public class PresetHelper * @param baseClass The BaseClasses enum to check against * @returns True if the preset is of the given base class, false otherwise */ - public bool IsPresetBaseClass(string id, BaseClasses baseClass) + public bool IsPresetBaseClass(string id, string baseClass) { - throw new NotImplementedException(); + return IsPreset(id) && _itemHelper.IsOfBaseclass(GetPreset(id).Encyclopedia, baseClass); } public bool HasPreset(string templateId) { - throw new NotImplementedException(); + return _lookup.ContainsKey(templateId) ; } public Preset GetPreset(string id) { - throw new NotImplementedException(); + return _cloner.Clone(_databaseService.GetGlobals().ItemPresets[id]); } public List GetAllPresets() { - throw new NotImplementedException(); + return _cloner.Clone(_databaseService.GetGlobals().ItemPresets.Values.ToList()); } public List GetPresets(string templateId) { - throw new NotImplementedException(); + if (!HasPreset(templateId)) { + return []; + } + + List presets = []; + var ids = _lookup[templateId]; + + foreach (var id in ids) { + presets.Add(GetPreset(id)); + } + + return presets; } /** @@ -121,14 +132,36 @@ public class PresetHelper * @param templateId Item tpl to get preset for * @returns null if no default preset, otherwise Preset */ - public Preset GetDefaultPreset(string templateId) + public Preset? GetDefaultPreset(string templateId) { - throw new NotImplementedException(); + if (!HasPreset(templateId)) { + return null; + } + + var allPresets = GetPresets(templateId); + + foreach (var preset in allPresets) { + if (preset.Encyclopedia is not null) { + return preset; + } + } + + return allPresets[0]; } public string GetBaseItemTpl(string presetId) { - throw new NotImplementedException(); + if (IsPreset(presetId)) { + var preset = GetPreset(presetId); + + foreach (var item in preset.Items) { + if (preset.Parent == item.Id) { + return item.Template; + } + } + } + + return ""; } /** @@ -138,6 +171,13 @@ public class PresetHelper */ public decimal GetDefaultPresetOrItemPrice(string tpl) { - throw new NotImplementedException(); + // Get default preset if it exists + var defaultPreset = GetDefaultPreset(tpl); + + // Bundle up tpls we want price for + var tpls = defaultPreset is not null ? defaultPreset.Items.Select((item) => item.Template) : [tpl]; + + // Get price of tpls + return _itemHelper.GetItemAndChildrenPrice(tpls.ToList()); } } From bde1ee600806a7b95d67f623859f875f046acb6d Mon Sep 17 00:00:00 2001 From: CWX Date: Thu, 16 Jan 2025 12:22:23 +0000 Subject: [PATCH 2/2] fix check --- Core/Generators/BotEquipmentModGenerator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/Generators/BotEquipmentModGenerator.cs b/Core/Generators/BotEquipmentModGenerator.cs index a16b1e97..e9f20317 100644 --- a/Core/Generators/BotEquipmentModGenerator.cs +++ b/Core/Generators/BotEquipmentModGenerator.cs @@ -802,7 +802,7 @@ public class BotEquipmentModGenerator var spawnMod = _probabilityHelper.RollChance(modSpawnChances.GetValueOrDefault(modSlotName)); - if (!spawnMod && (slotRequired.GetValueOrDefault(false) || botEquipConfig.WeaponSlotIdsToMakeRequired.Contains(modSlotName))) + if (!spawnMod && (slotRequired.GetValueOrDefault(false) || (botEquipConfig.WeaponSlotIdsToMakeRequired?.Contains(modSlotName) ?? false))) { // Edge case: Mod is required but spawn chance roll failed, choose default mod spawn for slot return ModSpawn.DEFAULT_MOD; @@ -816,7 +816,7 @@ public class BotEquipmentModGenerator /// /// Data used to choose an appropriate mod with /// itemHelper.getItem() result - public KeyValuePair? ChooseModToPutIntoSlot(ModToSpawnRequest request) // TODO: type fuckery: [boolean, ITemplateItem] | undefined + public KeyValuePair? ChooseModToPutIntoSlot(ModToSpawnRequest request) { /** Slot mod will fill */ var parentSlot = request.ParentTemplate.Properties.Slots?.FirstOrDefault((i) => i.Name == request.ModSlot);