Skip to content

Commit

Permalink
Fix exception when loading heritage parameters (#2487) #patch
Browse files Browse the repository at this point in the history
Sentry event ID: d6fc38d7b2af4d46bcd0165313488fd6
  • Loading branch information
IhateTrains authored Feb 10, 2025
1 parent d69ec71 commit 4585cd1
Showing 5 changed files with 18 additions and 11 deletions.
3 changes: 1 addition & 2 deletions ImperatorToCK3/CK3/Cultures/PillarCollection.cs
Original file line number Diff line number Diff line change
@@ -119,8 +119,7 @@ private void InitPillarDataParser(ColorFactory colorFactory, OrderedDictionary<s
}
});
pillarDataParser.RegisterKeyword("parameters", reader => {
pillarData.Parameters = reader.GetAssignments()
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
pillarData.Parameters = reader.GetAssignmentsAsDict();
});
pillarDataParser.RegisterRegex(CommonRegexes.String, (reader, keyword) => {
pillarData.Attributes.Add(new KeyValuePair<string, StringOfItem>(keyword, reader.GetStringOfItem()));
4 changes: 1 addition & 3 deletions ImperatorToCK3/CK3/Titles/LandedTitles.cs
Original file line number Diff line number Diff line change
@@ -1727,9 +1727,7 @@ public void LoadCulturalNamesFromConfigurables() {

var parser = new Parser();
parser.RegisterRegex(CommonRegexes.String, (reader, titleId) => {
var nameListToLocKeyDict = reader.GetAssignments()
.GroupBy(a => a.Key)
.ToDictionary(g => g.Key, g => g.Last().Value);
var nameListToLocKeyDict = reader.GetAssignmentsAsDict();

if (!TryGetValue(titleId, out var title)) {
return;
4 changes: 1 addition & 3 deletions ImperatorToCK3/CK3/Titles/Title.cs
Original file line number Diff line number Diff line change
@@ -1153,9 +1153,7 @@ private void RegisterKeys(Parser parser) {
parser.RegisterKeyword("de_jure_drift_disabled", reader => DeJureDriftDisabled = reader.GetBool());
parser.RegisterKeyword("can_be_named_after_dynasty", reader => CanBeNamedAfterDynasty = reader.GetBool());
parser.RegisterKeyword("male_names", reader => MaleNames = reader.GetStrings());
parser.RegisterKeyword("cultural_names", reader => CulturalNames = reader.GetAssignments()
.GroupBy(a => a.Key)
.ToDictionary(g => g.Key, g => g.Last().Value));
parser.RegisterKeyword("cultural_names", reader => CulturalNames = reader.GetAssignmentsAsDict());

parser.RegisterRegex(CommonRegexes.Catchall, (reader, token) => {
IgnoredTokens.Add(token);
13 changes: 13 additions & 0 deletions ImperatorToCK3/CommonUtils/BufferedReaderExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using commonItems;
using System.Collections.Generic;
using System.Linq;

namespace ImperatorToCK3.CommonUtils;

internal static class BufferedReaderExtensions {
internal static Dictionary<string, string> GetAssignmentsAsDict(this BufferedReader reader) {
return reader.GetAssignments()
.GroupBy(a => a.Key)
.ToDictionary(g => g.Key, g => g.Last().Value);
}
}
5 changes: 2 additions & 3 deletions ImperatorToCK3/Imperator/Religions/ReligionCollection.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using commonItems;
using commonItems.Collections;
using commonItems.Mods;
using ImperatorToCK3.CommonUtils;
using System.Collections.Generic;
using System.Linq;

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

0 comments on commit 4585cd1

Please sign in to comment.