From 65457990fbdce24dbdfc29c36ab049ea260651be Mon Sep 17 00:00:00 2001 From: iht Date: Thu, 17 Apr 2025 12:52:22 +0200 Subject: [PATCH] Minor tweaks to importing I:R characters and families --- ImperatorToCK3/CK3/Characters/Character.cs | 22 +++++++++++-------- .../CK3/Dynasties/DynastyCollection.cs | 7 ++---- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/ImperatorToCK3/CK3/Characters/Character.cs b/ImperatorToCK3/CK3/Characters/Character.cs index dac80ff2c..5df393c74 100644 --- a/ImperatorToCK3/CK3/Characters/Character.cs +++ b/ImperatorToCK3/CK3/Characters/Character.cs @@ -415,19 +415,19 @@ ISet unlocalizedImperatorNames // to be used by religion mapper. Don't give up without a fight. ulong? irProvinceId = ImperatorCharacter.GetSourceLandProvince(irMapData); - var impProvForProvinceMapper = irProvinceId; - if ((!impProvForProvinceMapper.HasValue || provinceMapper.GetCK3ProvinceNumbers(impProvForProvinceMapper.Value).Count == 0) && ImperatorCharacter.Father is not null) { - impProvForProvinceMapper = ImperatorCharacter.Father.ProvinceId; + var irProvIdForProvMapper = irProvinceId; + if (IsImperatorProvIdInvalidForCharacterSource(irProvIdForProvMapper, provinceMapper) && ImperatorCharacter.Father is not null) { + irProvIdForProvMapper = ImperatorCharacter.Father.ProvinceId; } - if ((!impProvForProvinceMapper.HasValue || provinceMapper.GetCK3ProvinceNumbers(impProvForProvinceMapper.Value).Count == 0) && ImperatorCharacter.Mother is not null) { - impProvForProvinceMapper = ImperatorCharacter.Mother.ProvinceId; + if (IsImperatorProvIdInvalidForCharacterSource(irProvIdForProvMapper, provinceMapper) && ImperatorCharacter.Mother is not null) { + irProvIdForProvMapper = ImperatorCharacter.Mother.ProvinceId; } - if ((!impProvForProvinceMapper.HasValue || provinceMapper.GetCK3ProvinceNumbers(impProvForProvinceMapper.Value).Count == 0) && ImperatorCharacter.Spouses.Count > 0) { + if (IsImperatorProvIdInvalidForCharacterSource(irProvIdForProvMapper, provinceMapper) && ImperatorCharacter.Spouses.Count > 0) { var firstSpouse = ImperatorCharacter.Spouses.First().Value; - impProvForProvinceMapper = firstSpouse.ProvinceId; + irProvIdForProvMapper = firstSpouse.ProvinceId; } - var ck3ProvinceNumbers = impProvForProvinceMapper.HasValue ? provinceMapper.GetCK3ProvinceNumbers(impProvForProvinceMapper.Value) : []; + var ck3ProvinceNumbers = irProvIdForProvMapper.HasValue ? provinceMapper.GetCK3ProvinceNumbers(irProvIdForProvMapper.Value) : []; ulong? ck3ProvinceId = ck3ProvinceNumbers.Count > 0 ? ck3ProvinceNumbers[0] : null; var cultureMatch = cultureMapper.Match( @@ -526,7 +526,11 @@ void SetEmployerFromImperator() { } } } - + + private static bool IsImperatorProvIdInvalidForCharacterSource(ulong? impProvForProvinceMapper, ProvinceMapper provinceMapper) { + return !impProvForProvinceMapper.HasValue || provinceMapper.GetCK3ProvinceNumbers(impProvForProvinceMapper.Value).Count == 0; + } + public void SetCultureId(string cultureId, Date? date) { History.AddFieldValue(date, "culture", "culture", cultureId); } diff --git a/ImperatorToCK3/CK3/Dynasties/DynastyCollection.cs b/ImperatorToCK3/CK3/Dynasties/DynastyCollection.cs index cf558ac87..283ab7807 100644 --- a/ImperatorToCK3/CK3/Dynasties/DynastyCollection.cs +++ b/ImperatorToCK3/CK3/Dynasties/DynastyCollection.cs @@ -19,11 +19,8 @@ public void ImportImperatorFamilies(Imperator.World irWorld, CultureMapper cultu var imperatorCharacters = irWorld.Characters; // The collection only holds dynasties converted from Imperator families, as vanilla ones aren't modified. int importedCount = 0; - Parallel.ForEach(irWorld.Families, family => { - if (family.Minor) { - return; - } - + var majorFamilies = irWorld.Families.Where(f => !f.Minor).ToArray(); + Parallel.ForEach(majorFamilies, family => { var newDynasty = new Dynasty(family, imperatorCharacters, irWorld.CulturesDB, cultureMapper, irLocDB, ck3LocDB, date); AddOrReplace(newDynasty); Interlocked.Increment(ref importedCount);