Skip to content

Commit 4585cd1

Browse files
authored
Fix exception when loading heritage parameters (#2487) #patch
Sentry event ID: d6fc38d7b2af4d46bcd0165313488fd6
1 parent d69ec71 commit 4585cd1

File tree

5 files changed

+18
-11
lines changed

5 files changed

+18
-11
lines changed

ImperatorToCK3/CK3/Cultures/PillarCollection.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,7 @@ private void InitPillarDataParser(ColorFactory colorFactory, OrderedDictionary<s
119119
}
120120
});
121121
pillarDataParser.RegisterKeyword("parameters", reader => {
122-
pillarData.Parameters = reader.GetAssignments()
123-
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
122+
pillarData.Parameters = reader.GetAssignmentsAsDict();
124123
});
125124
pillarDataParser.RegisterRegex(CommonRegexes.String, (reader, keyword) => {
126125
pillarData.Attributes.Add(new KeyValuePair<string, StringOfItem>(keyword, reader.GetStringOfItem()));

ImperatorToCK3/CK3/Titles/LandedTitles.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1727,9 +1727,7 @@ public void LoadCulturalNamesFromConfigurables() {
17271727

17281728
var parser = new Parser();
17291729
parser.RegisterRegex(CommonRegexes.String, (reader, titleId) => {
1730-
var nameListToLocKeyDict = reader.GetAssignments()
1731-
.GroupBy(a => a.Key)
1732-
.ToDictionary(g => g.Key, g => g.Last().Value);
1730+
var nameListToLocKeyDict = reader.GetAssignmentsAsDict();
17331731

17341732
if (!TryGetValue(titleId, out var title)) {
17351733
return;

ImperatorToCK3/CK3/Titles/Title.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1153,9 +1153,7 @@ private void RegisterKeys(Parser parser) {
11531153
parser.RegisterKeyword("de_jure_drift_disabled", reader => DeJureDriftDisabled = reader.GetBool());
11541154
parser.RegisterKeyword("can_be_named_after_dynasty", reader => CanBeNamedAfterDynasty = reader.GetBool());
11551155
parser.RegisterKeyword("male_names", reader => MaleNames = reader.GetStrings());
1156-
parser.RegisterKeyword("cultural_names", reader => CulturalNames = reader.GetAssignments()
1157-
.GroupBy(a => a.Key)
1158-
.ToDictionary(g => g.Key, g => g.Last().Value));
1156+
parser.RegisterKeyword("cultural_names", reader => CulturalNames = reader.GetAssignmentsAsDict());
11591157

11601158
parser.RegisterRegex(CommonRegexes.Catchall, (reader, token) => {
11611159
IgnoredTokens.Add(token);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using commonItems;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
namespace ImperatorToCK3.CommonUtils;
6+
7+
internal static class BufferedReaderExtensions {
8+
internal static Dictionary<string, string> GetAssignmentsAsDict(this BufferedReader reader) {
9+
return reader.GetAssignments()
10+
.GroupBy(a => a.Key)
11+
.ToDictionary(g => g.Key, g => g.Last().Value);
12+
}
13+
}

ImperatorToCK3/Imperator/Religions/ReligionCollection.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using commonItems;
22
using commonItems.Collections;
33
using commonItems.Mods;
4+
using ImperatorToCK3.CommonUtils;
45
using System.Collections.Generic;
56
using System.Linq;
67

@@ -61,9 +62,7 @@ public void LoadHolySiteDatabase(BufferedReader deityManagerReader) {
6162
var databaseParser = new Parser();
6263
databaseParser.RegisterRegex(CommonRegexes.Integer, (reader, holySiteIdStr) => {
6364
var holySiteId = ulong.Parse(holySiteIdStr);
64-
var assignmentsDict = reader.GetAssignments()
65-
.GroupBy(a => a.Key)
66-
.ToDictionary(g => g.Key, g => g.Last().Value);
65+
var assignmentsDict = reader.GetAssignmentsAsDict();
6766
if (assignmentsDict.TryGetValue("deity", out var deityIdWithQuotes)) {
6867
holySiteIdToDeityIdDict[holySiteId] = deityIdWithQuotes.RemQuotes();
6968
} else {

0 commit comments

Comments
 (0)