feat: load legacy Cuts and Res runtime assets

This commit is contained in:
2026-07-18 14:32:04 +09:00
parent da8da06fac
commit 5eb4054120
32 changed files with 2893 additions and 120 deletions

View File

@@ -111,6 +111,8 @@ internal static class LegacyComparisonWorkflowCatalog
public static IReadOnlyList<LegacyComparisonTarget> FixedTargets => FixedTargetList;
internal static IReadOnlyList<LegacyComparisonActionDefinition> Actions => ActionList;
public static LegacyComparisonTarget? GetFixedTarget(string targetId) =>
targetId is not null && FixedById.TryGetValue(targetId, out var target) ? target : null;
@@ -195,13 +197,31 @@ internal static class LegacyComparisonWorkflowCatalog
LegacyComparisonTarget? first,
LegacyComparisonTarget? second)
{
var views = ActionList.Select(action =>
var placements = ActionList
.Select(action => new LegacyComparisonActionPlacement(action.ActionId, action.Section))
.ToArray();
return CreateActionViews(first, second, placements);
}
internal static IReadOnlyList<LegacyComparisonActionView> CreateActionViews(
LegacyComparisonTarget? first,
LegacyComparisonTarget? second,
IReadOnlyList<LegacyComparisonActionPlacement> placements)
{
ArgumentNullException.ThrowIfNull(placements);
var views = placements.Select(placement =>
{
if (!ActionsById.TryGetValue(placement.ActionId, out var action))
{
throw new InvalidOperationException(
"The runtime comparison layout contains an unknown action.");
}
var compatibility = GetCompatibility(action, first, second);
return new LegacyComparisonActionView(
action.ActionId,
action.Label,
action.Section,
placement.Section,
compatibility.IsAvailable,
compatibility.Reason);
}).ToArray();

View File

@@ -11,6 +11,7 @@ public sealed class LegacyComparisonWorkflowController
{
private readonly ILegacyComparisonDataService _dataService;
private readonly ILegacyComparisonPairStore _pairStore;
private readonly LegacyComparisonUiLayout _uiLayout;
private List<SearchResultState> _domesticResults = [];
private List<SearchResultState> _worldResults = [];
private List<SavedPairState> _savedPairs = [];
@@ -38,10 +39,12 @@ public sealed class LegacyComparisonWorkflowController
public LegacyComparisonWorkflowController(
ILegacyComparisonDataService dataService,
ILegacyComparisonPairStore pairStore)
ILegacyComparisonPairStore pairStore,
LegacyComparisonUiLayout? uiLayout = null)
{
_dataService = dataService ?? throw new ArgumentNullException(nameof(dataService));
_pairStore = pairStore ?? throw new ArgumentNullException(nameof(pairStore));
_uiLayout = uiLayout ?? LegacyComparisonUiLayout.Default;
}
public LegacyComparisonWorkflowSnapshot Current => CreateSnapshot();
@@ -606,7 +609,7 @@ public sealed class LegacyComparisonWorkflowController
result.Target,
result.SelectionId))
.ToArray();
var fixedTargets = LegacyComparisonWorkflowCatalog.FixedTargets
var fixedTargets = _uiLayout.FixedTargets
.Select(target => LegacyComparisonWorkflowCatalog.ToView(target, target.TargetId))
.ToArray();
var savedPairs = _savedPairs.Select((pair, index) =>
@@ -645,7 +648,7 @@ public sealed class LegacyComparisonWorkflowController
: LegacyComparisonWorkflowCatalog.ToView(_secondTarget, "comparison-draft-second"),
Array.AsReadOnly(savedPairs),
_selectedPairId,
LegacyComparisonWorkflowCatalog.CreateActionViews(
_uiLayout.CreateActionViews(
selectedPair?.First,
selectedPair?.Second),
_statusMessage,