using Core.Helpers; using Core.Models.Spt.Presets; using Core.Models.Utils; using Core.Services; using SptCommon.Annotations; namespace Core.Controllers; [Injectable] public class PresetController( ISptLogger _logger, PresetHelper _presetHelper, DatabaseService _databaseService ) { /// /// Keyed by item tpl, value = collection of preset ids /// public void Initialize() { var presets = _databaseService.GetGlobals().ItemPresets; var result = new Dictionary(); foreach (var (presetId, preset) in presets) { if (presetId != preset.Id) { _logger.Error( $"Preset for template tpl: '{preset.Items[0].Template} {preset.Name}' has invalid key: ({presetId} != {preset.Id}). Skipping" ); continue; } // Get root items tpl var tpl = preset.Items.FirstOrDefault()?.Template; result.TryAdd(tpl, new PresetCacheDetails{PresetIds = [] }); result.TryGetValue(tpl, out var details); details.PresetIds.Add(presetId); if (preset.Encyclopedia is not null) { // Flag this preset as being the default for the weapon details.DefaultId = preset.Id; } } _presetHelper.HydratePresetStore(result); } }