Skip to content

Fixes for the determining of governorships' goverments #2562

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Apr 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
using ImperatorToCK3.Mappers.TagTitle;
using ImperatorToCK3.Mappers.Trait;
using ImperatorToCK3.UnitTests.TestHelpers;
using Open.Collections;
using System.Collections.Generic;
using System.Linq;
using Xunit;
Expand Down Expand Up @@ -320,6 +319,8 @@ public void ImperatorCountriesGoldCanBeDistributedAmongRulerAndVassals() {
config);

// Import country 589.
var governmentMapper = new GovernmentMapper(ck3GovernmentIds: Array.Empty<string>());
var enabledCK3Dlcs = Array.Empty<string>();
titles.ImportImperatorCountries(
imperatorWorld.Countries,
Array.Empty<Dependency>(),
Expand All @@ -328,7 +329,7 @@ public void ImperatorCountriesGoldCanBeDistributedAmongRulerAndVassals() {
ck3LocDB,
provinceMapper,
coaMapper,
new GovernmentMapper(ck3GovernmentIds: Array.Empty<string>()),
governmentMapper,
new SuccessionLawMapper(),
definiteFormMapper,
religionMapper,
Expand All @@ -338,7 +339,7 @@ public void ImperatorCountriesGoldCanBeDistributedAmongRulerAndVassals() {
conversionDate,
config,
new List<KeyValuePair<Country, Dependency?>>(),
enabledCK3Dlcs: []);
enabledCK3Dlcs: enabledCK3Dlcs);

var provinces = new ProvinceCollection(ck3ModFS);
var ck3MapData = new MapData(ck3ModFS);
Expand All @@ -355,7 +356,7 @@ public void ImperatorCountriesGoldCanBeDistributedAmongRulerAndVassals() {
definiteFormMapper,
imperatorWorld.ImperatorRegionMapper,
coaMapper,
countyLevelGovernorships: new List<Governorship>());
countyLevelGovernorships: []);

var ck3Country = titles["e_IRTOCK3_PRY"];
Assert.Equal("imperator1000", ck3Country.GetHolderId(conversionDate));
Expand Down
6 changes: 4 additions & 2 deletions ImperatorToCK3.UnitTests/CK3/Titles/LandedTitlesTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,8 @@ public void GovernorshipsCanBeRecognizedAsCountyLevel() {
var ck3LocDB = new TestCK3LocDB();

// Import country 589.
var governmentMapper = new GovernmentMapper(ck3GovernmentIds: Array.Empty<string>());
var enabledCK3Dlcs = Array.Empty<string>();
titles.ImportImperatorCountries(
imperatorWorld.Countries,
imperatorWorld.Dependencies,
Expand All @@ -309,7 +311,7 @@ public void GovernorshipsCanBeRecognizedAsCountyLevel() {
ck3LocDB,
provinceMapper,
coaMapper,
new GovernmentMapper(ck3GovernmentIds: Array.Empty<string>()),
governmentMapper,
new SuccessionLawMapper(),
definiteFormMapper,
religionMapper,
Expand All @@ -319,7 +321,7 @@ public void GovernorshipsCanBeRecognizedAsCountyLevel() {
conversionDate,
config,
new List<KeyValuePair<Country, Dependency?>>(),
enabledCK3Dlcs: []);
enabledCK3Dlcs);
Assert.Collection(titles,
title => Assert.Equal("c_county1", title.Id),
title => Assert.Equal("b_barony1", title.Id),
Expand Down
30 changes: 20 additions & 10 deletions ImperatorToCK3.UnitTests/CK3/Titles/RulerTermTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,19 +51,26 @@ public void ImperatorRulerTermIsCorrectlyConverted() {
var impRulerTerm = ImperatorToCK3.Imperator.Countries.RulerTerm.Parse(reader);
var govReader = new BufferedReader("link = {ir=dictatorship ck3=feudal_government }");
var govMapper = new GovernmentMapper(govReader, ck3GovernmentIds: new List<string> {"feudal_government"});
var ck3Religions = new ReligionCollection(new Title.LandedTitles());
var landedTitles = new Title.LandedTitles();
var ck3Religions = new ReligionCollection(landedTitles);
var ck3RegionMapper = new CK3RegionMapper();
var ck3RulerTerm = new RulerTerm(impRulerTerm,
var colorFactory = new ColorFactory();
var ck3ModFlags = new OrderedDictionary<string, bool>();

var testTitle = landedTitles.Add("k_test_title");
var ck3RulerTerm = new RulerTerm(
testTitle,
impRulerTerm,
new ImperatorToCK3.CK3.Characters.CharacterCollection(),
govMapper,
new LocDB("english"),
new TestCK3LocDB(),
new ReligionMapper(ck3Religions, irRegionMapper, ck3RegionMapper),
new CultureMapper(irRegionMapper, ck3RegionMapper, new CultureCollection(new ColorFactory(), new PillarCollection(new ColorFactory(), []), [])),
new CultureMapper(irRegionMapper, ck3RegionMapper, new CultureCollection(colorFactory, new PillarCollection(colorFactory, ck3ModFlags), ck3ModFlags)),
new NicknameMapper("TestFiles/configurables/nickname_map.txt"),
new ProvinceMapper(),
new Configuration(),
enabledCK3Dlcs: []
enabledCK3Dlcs: Array.Empty<string>()
);
Assert.Equal("imperator69", ck3RulerTerm.CharacterId);
Assert.Equal(new Date(500, 2, 3, AUC: true), ck3RulerTerm.StartDate);
Expand All @@ -84,7 +91,8 @@ public void PreImperatorTermIsCorrectlyConverted() {
);
var impRulerTerm = new ImperatorToCK3.Imperator.Countries.RulerTerm(preImpTermReader, countries);

var ck3Religions = new ReligionCollection(new Title.LandedTitles());
var landedTitles = new Title.LandedTitles();
var ck3Religions = new ReligionCollection(landedTitles);
ck3Religions.LoadReligions(ck3ModFs, new ColorFactory());
var govReader = new BufferedReader("link = {ir=dictatorship ck3=feudal_government }");
var govMapper = new GovernmentMapper(govReader, ck3GovernmentIds: new List<string> {"feudal_government"});
Expand All @@ -96,7 +104,11 @@ public void PreImperatorTermIsCorrectlyConverted() {
ck3RegionMapper
);
var ck3Characters = new ImperatorToCK3.CK3.Characters.CharacterCollection();
var ck3RulerTerm = new RulerTerm(impRulerTerm,

var testTitle = landedTitles.Add("k_test_title");
var ck3RulerTerm = new RulerTerm(
testTitle,
impRulerTerm,
ck3Characters,
govMapper,
new LocDB("english"),
Expand All @@ -106,13 +118,11 @@ public void PreImperatorTermIsCorrectlyConverted() {
new NicknameMapper("TestFiles/configurables/nickname_map.txt"),
new ProvinceMapper(),
new Configuration(),
enabledCK3Dlcs: []
enabledCK3Dlcs: Array.Empty<string>()
);
Assert.NotNull(ck3RulerTerm.CharacterId);
Assert.Equal("imperatorRegnalSPAAlexander504_1_1BC", ck3RulerTerm.CharacterId);
Assert.Equal(new Date(250, 1, 1, AUC: true), ck3RulerTerm.StartDate);
var ruler = ck3RulerTerm.PreImperatorRuler;
Assert.NotNull(ruler);
Assert.Equal("Alexander", ruler.Name);

var conversionDate = new Date(1000, 1, 1);
var ck3Character = ck3Characters["imperatorRegnalSPAAlexander504_1_1BC"];
Expand Down
24 changes: 12 additions & 12 deletions ImperatorToCK3/CK3/Titles/LandedTitles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -245,13 +245,13 @@ internal Title Add(
Imperator.Provinces.ProvinceCollection irProvinces,
Imperator.Characters.CharacterCollection imperatorCharacters,
bool regionHasMultipleGovernorships,
bool staticDeJure,
LocDB irLocDB,
CK3LocDB ck3LocDB,
ProvinceMapper provinceMapper,
CoaMapper coaMapper,
DefiniteFormMapper definiteFormMapper,
ImperatorRegionMapper imperatorRegionMapper
ImperatorRegionMapper imperatorRegionMapper,
Configuration config
) {
var newTitle = new Title(this,
id,
Expand All @@ -260,13 +260,13 @@ ImperatorRegionMapper imperatorRegionMapper
irProvinces,
imperatorCharacters,
regionHasMultipleGovernorships,
staticDeJure,
irLocDB,
ck3LocDB,
provinceMapper,
coaMapper,
definiteFormMapper,
imperatorRegionMapper
imperatorRegionMapper,
config
);
dict[newTitle.Id] = newTitle;
return newTitle;
Expand Down Expand Up @@ -650,15 +650,15 @@ List<Governorship> countyLevelGovernorships
irWorld.Provinces,
irWorld.Characters,
governorshipsPerRegion[governorship.Region.Id] > 1,
config.StaticDeJure,
tagTitleMapper,
irLocDB,
ck3LocDB,
provinceMapper,
definiteFormMapper,
imperatorRegionMapper,
coaMapper,
countyLevelGovernorships
countyLevelGovernorships,
config
);
++counter;
}
Expand All @@ -672,15 +672,15 @@ private void ImportImperatorGovernorship(
Imperator.Provinces.ProvinceCollection irProvinces,
Imperator.Characters.CharacterCollection imperatorCharacters,
bool regionHasMultipleGovernorships,
bool staticDeJure,
TagTitleMapper tagTitleMapper,
LocDB irLocDB,
CK3LocDB ck3LocDB,
ProvinceMapper provinceMapper,
DefiniteFormMapper definiteFormMapper,
ImperatorRegionMapper imperatorRegionMapper,
CoaMapper coaMapper,
List<Governorship> countyLevelGovernorships
List<Governorship> countyLevelGovernorships,
Configuration config
) {
var country = governorship.Country;

Expand All @@ -703,12 +703,12 @@ List<Governorship> countyLevelGovernorships
irProvinces,
imperatorCharacters,
regionHasMultipleGovernorships,
staticDeJure,
irLocDB,
ck3LocDB,
provinceMapper,
definiteFormMapper,
imperatorRegionMapper
imperatorRegionMapper,
config
);
} else {
Add(
Expand All @@ -718,13 +718,13 @@ List<Governorship> countyLevelGovernorships
irProvinces,
imperatorCharacters,
regionHasMultipleGovernorships,
staticDeJure,
irLocDB,
ck3LocDB,
provinceMapper,
coaMapper,
definiteFormMapper,
imperatorRegionMapper
imperatorRegionMapper,
config
);
}
}
Expand Down
20 changes: 12 additions & 8 deletions ImperatorToCK3/CK3/Titles/RulerTerm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ internal sealed class RulerTerm {
public string? CharacterId { get; }
public Date StartDate { get; }
public string? Government { get; }
public Imperator.Countries.RulerTerm.PreImperatorRulerInfo? PreImperatorRuler { get; }

public RulerTerm(
Title ck3Title,
Imperator.Countries.RulerTerm imperatorRulerTerm,
Characters.CharacterCollection characters,
GovernmentMapper governmentMapper,
Expand All @@ -33,22 +33,26 @@ public RulerTerm(
}
StartDate = imperatorRulerTerm.StartDate;
if (imperatorRulerTerm.Government is not null) {
Government = governmentMapper.GetCK3GovernmentForImperatorGovernment(imperatorRulerTerm.Government, rank: null, null, enabledCK3Dlcs);
Government = governmentMapper.GetCK3GovernmentForImperatorGovernment(
irGovernmentId: imperatorRulerTerm.Government,
rank: ck3Title.Rank,
irCultureId: ck3Title.ImperatorCountry?.PrimaryCulture,
enabledCK3Dlcs);
}

PreImperatorRuler = imperatorRulerTerm.PreImperatorRuler;
if (PreImperatorRuler?.BirthDate is null) {
var preImperatorRuler = imperatorRulerTerm.PreImperatorRuler;
if (preImperatorRuler?.BirthDate is null) {
return;
}
if (PreImperatorRuler.DeathDate is null) {
if (preImperatorRuler.DeathDate is null) {
return;
}
if (PreImperatorRuler.Country is not null) {
if (preImperatorRuler.Country is not null) {
// create a new ruler character
var character = new Character(
PreImperatorRuler,
preImperatorRuler,
StartDate,
PreImperatorRuler.Country,
preImperatorRuler.Country,
characters,
irLocDB,
ck3LocDB,
Expand Down
Loading
Loading