Share critical cell parsing across app and importer

This commit is contained in:
2026-03-15 02:10:17 +01:00
parent c5800d6878
commit 641e33f811
27 changed files with 1207 additions and 19 deletions

View File

@@ -1,3 +1,4 @@
using System.Text.Json;
using RolemasterDb.App.Features;
namespace RolemasterDb.App.Components.Shared;
@@ -35,11 +36,32 @@ public sealed class CriticalBranchEditorModel
BranchKind,
ConditionKey,
ConditionText,
ConditionJson,
RawText,
"{}",
BuildRawText(),
DescriptionText,
RawAffixText,
ParsedJson,
SerializeParsedEffects(Effects),
SortOrder,
Effects.Select(effect => effect.ToItem()).ToList());
private string BuildRawText()
{
var condition = ConditionText.Trim();
var description = DescriptionText.Trim();
var firstLine = string.IsNullOrWhiteSpace(description)
? $"{condition}:"
: $"{condition}: {description}";
if (string.IsNullOrWhiteSpace(RawAffixText))
{
return firstLine;
}
return $"{firstLine}{Environment.NewLine}{RawAffixText.Trim()}";
}
private static string SerializeParsedEffects(IReadOnlyList<CriticalEffectEditorModel> effects) =>
effects.Count == 0
? "{}"
: JsonSerializer.Serialize(new { effects = effects.Select(effect => effect.ToItem()).ToList() });
}