Implement critical editor override state

This commit is contained in:
2026-03-15 11:40:12 +01:00
parent e9e386aa6c
commit 8b345a7c37
16 changed files with 650 additions and 141 deletions

View File

@@ -20,6 +20,10 @@ public sealed class CriticalCellEditorModel
public string? RawAffixText { get; set; }
public string ParseStatus { get; set; } = string.Empty;
public string ParsedJson { get; set; } = "{}";
public bool IsDescriptionOverridden { get; set; }
public bool IsRawAffixTextOverridden { get; set; }
public bool AreEffectsOverridden { get; set; }
public bool AreBranchesOverridden { get; set; }
public List<string> ValidationMessages { get; set; } = [];
public List<CriticalEffectEditorModel> Effects { get; set; } = [];
public List<CriticalBranchEditorModel> Branches { get; set; } = [];
@@ -42,18 +46,27 @@ public sealed class CriticalCellEditorModel
RawAffixText = response.RawAffixText,
ParseStatus = response.ParseStatus,
ParsedJson = response.ParsedJson,
IsDescriptionOverridden = response.IsDescriptionOverridden,
IsRawAffixTextOverridden = response.IsRawAffixTextOverridden,
AreEffectsOverridden = response.AreEffectsOverridden,
AreBranchesOverridden = response.AreBranchesOverridden,
ValidationMessages = response.ValidationMessages.ToList(),
Effects = response.Effects.Select(CriticalEffectEditorModel.FromItem).ToList(),
Branches = response.Branches.Select(CriticalBranchEditorModel.FromItem).ToList()
};
public CriticalCellUpdateRequest ToRequest() =>
new(
public CriticalCellUpdateRequest ToRequest()
{
var request = new CriticalCellUpdateRequest(
RawCellText,
DescriptionText,
RawAffixText,
ResolveParseStatus(Effects, Branches),
SerializeParsedEffects(Effects),
IsDescriptionOverridden,
IsRawAffixTextOverridden,
AreEffectsOverridden,
AreBranchesOverridden,
Effects.Select(effect => effect.ToItem()).ToList(),
Branches
.OrderBy(branch => branch.SortOrder)
@@ -64,6 +77,12 @@ public sealed class CriticalCellEditorModel
})
.ToList());
return request with
{
ParsedJson = CriticalCellEditorSnapshot.FromRequest(request).ToJson()
};
}
private static string ResolveParseStatus(
IReadOnlyList<CriticalEffectEditorModel> effects,
IReadOnlyList<CriticalBranchEditorModel> branches) =>