Skip to content

Commit a201256

Browse files
authored
Skip country adjective when region has 1 governorship (#333)
* Extract methods * cut out some weird region->title mappings * Skip country adj when region has 1 governorship * Cleanup
1 parent 31084a6 commit a201256

File tree

3 files changed

+73
-43
lines changed

3 files changed

+73
-43
lines changed

ImperatorToCK3/CK3/Titles/Title.cs

Lines changed: 52 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public Title(
4949
Governorship governorship,
5050
Country country,
5151
Dictionary<ulong, Character> imperatorCharacters,
52+
bool regionHasMultipleGovernorships,
5253
LocalizationMapper localizationMapper,
5354
LandedTitles landedTitles,
5455
ProvinceMapper provinceMapper,
@@ -63,10 +64,10 @@ ImperatorRegionMapper imperatorRegionMapper
6364
governorship,
6465
country,
6566
imperatorCharacters,
67+
regionHasMultipleGovernorships,
6668
localizationMapper,
6769
landedTitles,
6870
provinceMapper,
69-
coaMapper,
7071
definiteFormMapper,
7172
imperatorRegionMapper
7273
);
@@ -217,10 +218,10 @@ public static string DetermineName(Governorship governorship, Country country, T
217218
public void InitializeFromGovernorship(Governorship governorship,
218219
Country country,
219220
Dictionary<ulong, Character> imperatorCharacters,
221+
bool regionHasMultipleGovernorships,
220222
LocalizationMapper localizationMapper,
221223
LandedTitles landedTitles,
222224
ProvinceMapper provinceMapper,
223-
CoaMapper coaMapper,
224225
DefiniteFormMapper definiteFormMapper,
225226
ImperatorRegionMapper imperatorRegionMapper
226227
) {
@@ -280,35 +281,57 @@ ImperatorRegionMapper imperatorRegionMapper
280281
}
281282
}
282283

283-
// ------------------ Country Name Locs
284-
var nameSet = false;
285-
LocBlock? regionLocBlock = localizationMapper.GetLocBlockForKey(governorship.RegionName);
286-
country.CK3Title.Localizations.TryGetValue(country.CK3Title.Name + "_adj", out var countryAdjectiveLocBlock);
287-
if (regionLocBlock is not null && countryAdjectiveLocBlock is not null) {
288-
var nameLocBlock = new LocBlock(regionLocBlock);
289-
nameLocBlock.ModifyForEveryLanguage(countryAdjectiveLocBlock,
290-
(ref string orig, string adj) => orig = $"{adj} {orig}"
291-
);
292-
Localizations[Name] = nameLocBlock;
293-
nameSet = true;
294-
}
295-
if (!nameSet && regionLocBlock is not null) {
296-
Localizations[Name] = new LocBlock(regionLocBlock);
297-
nameSet = true;
298-
}
299-
if (!nameSet) {
300-
Logger.Warn($"{Name} needs help with localization!");
301-
}
284+
TrySetNameFromGovernorship(governorship, country, regionHasMultipleGovernorships, localizationMapper);
285+
TrySetAdjectiveFromGovernorship(country);
286+
}
302287

303-
// --------------- Adjective Locs
304-
var adjSet = false;
305-
if (countryAdjectiveLocBlock is not null) {
306-
var adjLocBlock = new LocBlock(countryAdjectiveLocBlock);
307-
Localizations.Add(Name + "_adj", adjLocBlock);
308-
adjSet = true;
288+
private void TrySetAdjectiveFromGovernorship(Country country) {
289+
var adjKey = Name + "_adj";
290+
if (!Localizations.ContainsKey(adjKey)) {
291+
var adjSet = false;
292+
var ck3Country = country.CK3Title;
293+
if (ck3Country is null) {
294+
return;
295+
}
296+
if (ck3Country.Localizations.TryGetValue(ck3Country.Name + "_adj", out var countryAdjectiveLocBlock)) {
297+
var adjLocBlock = new LocBlock(countryAdjectiveLocBlock);
298+
Localizations.Add(adjKey, adjLocBlock);
299+
adjSet = true;
300+
}
301+
if (!adjSet) {
302+
Logger.Warn($"{Name} needs help with adjective localization!");
303+
}
309304
}
310-
if (!adjSet) {
311-
Logger.Warn($"{Name} needs help with adjective localization!");
305+
}
306+
307+
private void TrySetNameFromGovernorship(
308+
Governorship governorship,
309+
Country country,
310+
bool regionHasMultipleGovernorships,
311+
LocalizationMapper localizationMapper
312+
) {
313+
if (!Localizations.ContainsKey(Name)) {
314+
var nameSet = false;
315+
LocBlock? regionLocBlock = localizationMapper.GetLocBlockForKey(governorship.RegionName);
316+
317+
if (regionHasMultipleGovernorships && regionLocBlock is not null) {
318+
var ck3Country = country.CK3Title;
319+
if (ck3Country is not null && ck3Country.Localizations.TryGetValue(ck3Country.Name + "_adj", out var countryAdjectiveLocBlock)) {
320+
var nameLocBlock = new LocBlock(regionLocBlock);
321+
nameLocBlock.ModifyForEveryLanguage(countryAdjectiveLocBlock,
322+
(ref string orig, string adj) => orig = $"{adj} {orig}"
323+
);
324+
Localizations[Name] = nameLocBlock;
325+
nameSet = true;
326+
}
327+
}
328+
if (!nameSet && regionLocBlock is not null) {
329+
Localizations[Name] = new LocBlock(regionLocBlock);
330+
nameSet = true;
331+
}
332+
if (!nameSet) {
333+
Logger.Warn($"{Name} needs help with localization!");
334+
}
312335
}
313336
}
314337

ImperatorToCK3/CK3/World.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.IO;
4-
using System.Linq;
1+
using commonItems;
52
using ImperatorToCK3.CK3.Characters;
63
using ImperatorToCK3.CK3.Dynasties;
7-
using ImperatorToCK3.CK3.Titles;
84
using ImperatorToCK3.CK3.Provinces;
5+
using ImperatorToCK3.CK3.Titles;
6+
using ImperatorToCK3.Imperator.Countries;
7+
using ImperatorToCK3.Imperator.Jobs;
98
using ImperatorToCK3.Mappers.CoA;
109
using ImperatorToCK3.Mappers.Culture;
1110
using ImperatorToCK3.Mappers.DeathReason;
@@ -18,9 +17,10 @@
1817
using ImperatorToCK3.Mappers.SuccessionLaw;
1918
using ImperatorToCK3.Mappers.TagTitle;
2019
using ImperatorToCK3.Mappers.Trait;
21-
using commonItems;
22-
using ImperatorToCK3.Imperator.Countries;
23-
using ImperatorToCK3.Imperator.Jobs;
20+
using System;
21+
using System.Collections.Generic;
22+
using System.IO;
23+
using System.Linq;
2424

2525
namespace ImperatorToCK3.CK3 {
2626
public class World {
@@ -181,19 +181,28 @@ private void ImportImperatorGovernorships(Imperator.World impWorld) {
181181
var imperatorCountries = impWorld.Countries.StoredCountries;
182182
var imperatorCharacters = impWorld.Characters.StoredCharacters;
183183

184+
var governorshipsPerRegion = governorships.GroupBy(g => g.RegionName)
185+
.ToDictionary(g => g.Key, g => g.Count());
186+
184187
// landedTitles holds all titles imported from CK3. We'll now overwrite some and
185188
// add new ones from Imperator governorships.
186189
var counter = 0;
187190
foreach (var governorship in governorships) {
188-
ImportImperatorGovernorship(governorship, imperatorCountries, imperatorCharacters);
191+
ImportImperatorGovernorship(
192+
governorship,
193+
imperatorCountries,
194+
imperatorCharacters,
195+
governorshipsPerRegion[governorship.RegionName] > 1
196+
);
189197
++counter;
190198
}
191199
Logger.Info($"Imported {counter} governorships from I:R.");
192200
}
193201
private void ImportImperatorGovernorship(
194202
Governorship governorship,
195203
Dictionary<ulong, Country> imperatorCountries,
196-
Dictionary<ulong, Imperator.Characters.Character> imperatorCharacters
204+
Dictionary<ulong, Imperator.Characters.Character> imperatorCharacters,
205+
bool regionHasMultipleGovernorships
197206
) {
198207
var country = imperatorCountries[governorship.CountryID];
199208
// Create a new title or update existing title
@@ -204,10 +213,10 @@ private void ImportImperatorGovernorship(
204213
governorship,
205214
country,
206215
imperatorCharacters,
216+
regionHasMultipleGovernorships,
207217
localizationMapper,
208218
landedTitles,
209219
provinceMapper,
210-
coaMapper,
211220
definiteFormMapper,
212221
imperatorRegionMapper
213222
);
@@ -216,6 +225,7 @@ private void ImportImperatorGovernorship(
216225
governorship,
217226
country,
218227
imperatorCharacters,
228+
regionHasMultipleGovernorships,
219229
localizationMapper,
220230
landedTitles,
221231
provinceMapper,

ImperatorToCK3/Data_Files/configurables/governorMappings.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ link = { imp = taurica_region ck3 = k_pontic_steppe rank = k }
99
link = { imp = sarmatia_asiatica_region ck3 = d_don_valley rank = d }
1010
link = { imp = greece_region ck3 = k_hellas rank = k }
1111
link = { imp = greece_region ck3 = d_achaia rank = d }
12-
link = { imp = asia_region ck3 = k_nikaea rank = k }
1312
link = { imp = cilicia_region ck3 = d_cilicia rank = d }
1413
link = { imp = galatia_region ck3 = k_anatolia rank = k }
1514
link = { imp = galatia_region ck3 = d_anatolia rank = d }
@@ -33,7 +32,6 @@ link = { imp = madhyadesa_region ck3 = k_kosala rank = k }
3332
link = { imp = pracya_region ck3 = k_bengal rank = k }
3433
link = { imp = vindhyaprstha_region ck3 = k_orissa rank = k }
3534
link = { imp = dravida_region ck3 = k_tamilakam rank = k }
36-
link = { imp = aparanta_region ck3 = k_gondwana rank = k }
3735
link = { imp = karnata_region ck3 = k_karnata rank = k }
3836
link = { imp = himalayan_region ck3 = k_himalaya rank = k }
3937
link = { imp = cyrenaica_region ck3 = d_cyrenaica rank = d }
@@ -56,7 +54,6 @@ link = { imp = colchis_region ck3 = d_georgia rank = d }
5654
link = { imp = armenia_region ck3 = k_armenian_principality rank = k }
5755
link = { imp = bohemia_area ck3 = k_bohemia rank = k }
5856
link = { imp = bohemia_area ck3 = d_bohemia rank = d }
59-
link = { imp = belgica_region ck3 = k_lotharingia rank = k }
6057
link = { imp = vistulia_region ck3 = k_galicia-volhynia rank = k }
6158
link = { imp = macedonia_region ck3 = k_thessalonika rank = k }
6259
link = { imp = germania_superior_region ck3 = d_swabia rank = d }

0 commit comments

Comments
 (0)