From 57dbcb7381db15c872f57e9d12b7f41ede2bd5ef Mon Sep 17 00:00:00 2001 From: Seweryn Presnal Date: Sun, 1 Sep 2024 12:19:28 +0200 Subject: [PATCH] Fix featured bookmark character having no localization --- ImperatorToCK3/CK3/CK3LocDB.cs | 35 +++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/ImperatorToCK3/CK3/CK3LocDB.cs b/ImperatorToCK3/CK3/CK3LocDB.cs index 9b836b5a6..c22de163d 100644 --- a/ImperatorToCK3/CK3/CK3LocDB.cs +++ b/ImperatorToCK3/CK3/CK3LocDB.cs @@ -58,17 +58,34 @@ public bool ContainsKey(string key) { return false; } - public bool TryGetValue(string key, [MaybeNullWhen(false)] out LocBlock locBlock) { - if (ModFSLocDB.TryGetValue(key, out locBlock)) { - return true; - } - if (ConverterGeneratedLocDB.TryGetValue(key, out locBlock)) { - return true; + public bool TryGetValue(string key, [MaybeNullWhen(false)] out LocBlock locBlock) { // TODO: return readonly locblock instead + bool found = false; + locBlock = null; + + // TODO: add unit test for combining loc from all the sources into one locblock + + if (OptionalConverterLocDB.TryGetValue(key, out var optionalLocBlock)) { + found = true; + locBlock = optionalLocBlock; + } + if (ConverterGeneratedLocDB.TryGetValue(key, out var converterGeneratedLocDBLocBlock)) { + found = true; + if (locBlock is null) { + locBlock = converterGeneratedLocDBLocBlock; + } else { + locBlock.CopyFrom(converterGeneratedLocDBLocBlock); + } } - if (OptionalConverterLocDB.TryGetValue(key, out locBlock)) { - return true; + if (ModFSLocDB.TryGetValue(key, out var modFSLocBlock)) { + found = true; + if (locBlock is null) { + locBlock = modFSLocBlock; + } else { + locBlock.CopyFrom(modFSLocBlock); + } } - return false; + + return found; } public LocBlock? GetLocBlockForKey(string key) {