From cfbf10e75abc6e138cd780d92b39f858c7ff32a6 Mon Sep 17 00:00:00 2001 From: Jos Demmers Date: Sun, 19 May 2024 17:56:43 +0200 Subject: [PATCH] Fixed Maxroll builds for non-English languages --- D4Companion.Interfaces/IAffixManager.cs | 4 +- D4Companion.Services/AffixManager.cs | 43 +++++++++++++++----- D4Companion.Services/BuildsManagerMaxroll.cs | 8 ++-- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/D4Companion.Interfaces/IAffixManager.cs b/D4Companion.Interfaces/IAffixManager.cs index 12d28d6e..5aa9bbd8 100644 --- a/D4Companion.Interfaces/IAffixManager.cs +++ b/D4Companion.Interfaces/IAffixManager.cs @@ -16,8 +16,8 @@ public interface IAffixManager ItemAffix GetAffix(string affixId, string itemType); string GetAffixDescription(string affixId); string GetAffixId(int affixSno); - AffixInfo? GetAffixInfo(AffixInfo affixInfo); - AffixInfo? GetAffixInfoFromFull(int affixSno); + AffixInfo? GetAffixInfoEnUS(AffixInfo affixInfo); + AffixInfo? GetAffixInfoEnUSFull(int affixSno); ItemAffix GetAspect(string aspectId, string itemType); string GetAspectDescription(string aspectId); string GetAspectId(int aspectSno); diff --git a/D4Companion.Services/AffixManager.cs b/D4Companion.Services/AffixManager.cs index 5ffbe53d..870fd3a8 100644 --- a/D4Companion.Services/AffixManager.cs +++ b/D4Companion.Services/AffixManager.cs @@ -17,7 +17,8 @@ public class AffixManager : IAffixManager private readonly ISettingsManager _settingsManager; private List _affixes = new List(); - private List _affixesFull = new List(); + private List _affixesEnUS = new List(); + private List _affixesEnUSFull = new List(); private List _affixPresets = new List(); private List _aspects = new List(); private List _sigils = new List(); @@ -41,7 +42,7 @@ public AffixManager(IEventAggregator eventAggregator, ILogger logg // Init store data InitAffixData(); - InitAffixDataFull(); + InitAffixDataEnUS(); InitAspectData(); InitSigilData(); InitSigilDungeonTierData(); @@ -249,10 +250,13 @@ private void InitAffixData() } } - private void InitAffixDataFull() + /// + /// Used for Maxroll builds to import builds when app setting is not set to English. + /// + private void InitAffixDataEnUS() { - _affixesFull.Clear(); - string resourcePath = @$".\Data\Affixes.Full.enUS.json"; + _affixesEnUS.Clear(); + string resourcePath = @$".\Data\Affixes.enUS.json"; using (FileStream? stream = File.OpenRead(resourcePath)) { if (stream != null) @@ -266,7 +270,26 @@ private void InitAffixDataFull() options.Converters.Add(new BoolConverter()); options.Converters.Add(new IntConverter()); - _affixesFull = JsonSerializer.Deserialize>(stream, options) ?? new List(); + _affixesEnUS = JsonSerializer.Deserialize>(stream, options) ?? new List(); + } + } + + _affixesEnUSFull.Clear(); + string resourcePathFull = @$".\Data\Affixes.Full.enUS.json"; + using (FileStream? stream = File.OpenRead(resourcePathFull)) + { + if (stream != null) + { + // create the options + var options = new JsonSerializerOptions() + { + WriteIndented = true + }; + // register the converter + options.Converters.Add(new BoolConverter()); + options.Converters.Add(new IntConverter()); + + _affixesEnUSFull = JsonSerializer.Deserialize>(stream, options) ?? new List(); } } } @@ -407,9 +430,9 @@ public string GetAffixId(int affixSno) /// /// /// - public AffixInfo? GetAffixInfo(AffixInfo affixInfo) + public AffixInfo? GetAffixInfoEnUS(AffixInfo affixInfo) { - return _affixes.FirstOrDefault(a => a.DescriptionClean.Equals(affixInfo.DescriptionClean)); + return _affixesEnUS.FirstOrDefault(a => a.DescriptionClean.Equals(affixInfo.DescriptionClean)); } /// @@ -418,9 +441,9 @@ public string GetAffixId(int affixSno) /// /// /// - public AffixInfo? GetAffixInfoFromFull(int affixSno) + public AffixInfo? GetAffixInfoEnUSFull(int affixSno) { - return _affixesFull.FirstOrDefault(a => a.IdSno == affixSno); + return _affixesEnUSFull.FirstOrDefault(a => a.IdSno == affixSno); } public ItemAffix GetAspect(string aspectId, string itemType) diff --git a/D4Companion.Services/BuildsManagerMaxroll.cs b/D4Companion.Services/BuildsManagerMaxroll.cs index d17ebdee..646a18b3 100644 --- a/D4Companion.Services/BuildsManagerMaxroll.cs +++ b/D4Companion.Services/BuildsManagerMaxroll.cs @@ -153,7 +153,7 @@ public void CreatePresetFromMaxrollBuild(MaxrollBuild maxrollBuild, string profi foreach (var explicitAffix in maxrollBuild.Data.Items[item.Value].Explicits) { int affixSno = explicitAffix.Nid; - AffixInfo? affixInfoFull = _affixManager.GetAffixInfoFromFull(affixSno); + AffixInfo? affixInfoFull = _affixManager.GetAffixInfoEnUSFull(affixSno); if (affixInfoFull == null) { @@ -165,7 +165,7 @@ public void CreatePresetFromMaxrollBuild(MaxrollBuild maxrollBuild, string profi } else { - AffixInfo? affixInfo = _affixManager.GetAffixInfo(affixInfoFull); + AffixInfo? affixInfo = _affixManager.GetAffixInfoEnUS(affixInfoFull); if (affixInfo == null) { _logger.LogWarning($"{MethodBase.GetCurrentMethod()?.Name}: Unknown affix: ({affixInfoFull.IdSno}) {affixInfoFull.IdName}"); @@ -192,7 +192,7 @@ public void CreatePresetFromMaxrollBuild(MaxrollBuild maxrollBuild, string profi foreach (var temperedAffix in maxrollBuild.Data.Items[item.Value].Tempered) { int affixSno = temperedAffix.Nid; - AffixInfo? affixInfoFull = _affixManager.GetAffixInfoFromFull(affixSno); + AffixInfo? affixInfoFull = _affixManager.GetAffixInfoEnUSFull(affixSno); if (affixInfoFull == null) { @@ -204,7 +204,7 @@ public void CreatePresetFromMaxrollBuild(MaxrollBuild maxrollBuild, string profi } else { - AffixInfo? affixInfo = _affixManager.GetAffixInfo(affixInfoFull); + AffixInfo? affixInfo = _affixManager.GetAffixInfoEnUS(affixInfoFull); if (affixInfo == null) { _logger.LogWarning($"{MethodBase.GetCurrentMethod()?.Name}: Unknown tempered affix: ({affixInfoFull.IdSno}) {affixInfoFull.IdName}");