diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index aef1da365..a9e115035 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -5227,8 +5227,9 @@ static void RequireInventoryCargoItemDetailsUseEveSurface(string root) "HandleCargoItemDetailsSurfaceCommand(", "AetheriaEveUnitySurfaceHost.RenderRuntime(", "AetheriaEveUnitySurfaceHost.Hide(_cargoItemDetailsSurfaceDocument)", - "AetheriaRuntimeCargoItemDetailsSurfaceBuilder.Build(ComposeCargoItemDetailsSurface(", - "AetheriaRuntimeCargoItemDetailsSurfaceBuilder.Compose(", + "AetheriaRuntimeCargoItemDetailsSurfaceBuilder.Build(", + "ResolveManufacturerName(typedItem)", + "FormatItemTier(typedItem, equippableItem)", "ComposeCargoItemObservation(", "AetheriaRuntimeCargoItemDetailsSurfaceCommands.TryRead(request, out var command)", "AetheriaRuntimeCargoItemDetailsCommandKind.Close" @@ -5319,6 +5320,7 @@ static void RequireInventoryCargoItemDetailsUseEveSurface(string root) "host.AddComponent", "string.Equals(request.Command, AetheriaRuntimeCargoItemDetailsSurfaceBuilder.Close", "new AetheriaRuntimeCargoItemDetailsSurfaceState(", + "ComposeCargoItemDetailsSurface(", "ProjectCargoItemDetailsSurfaceState(", "ProjectCargoItemBehaviorSections(", "ProjectCargoItemBehaviorMetric(", @@ -5349,7 +5351,7 @@ static void RequireInventoryCargoItemDetailsUseEveSurface(string root) "AetheriaRuntimeCargoItemObservation", "AetheriaRuntimeCargoItemSection", "AetheriaRuntimeCargoItemMetric", - "public static AetheriaRuntimeCargoItemDetailsSurfaceState Compose(", + "private static AetheriaRuntimeCargoItemDetailsSurfaceState ComposeState(", "ProjectBehaviorSections(", "ProjectBehaviorMetric(", "public static AetheriaRuntimeSurfaceDocument Build(" @@ -5363,6 +5365,13 @@ static void RequireInventoryCargoItemDetailsUseEveSurface(string root) "Shared cargo-item detail surface builder no longer owns the cargo inspection contract: " + string.Join(", ", missingBuilderSymbols)); } + + if (cargoItemSurfaceBuilder.Contains("public static AetheriaRuntimeCargoItemDetailsSurfaceState Compose(", StringComparison.Ordinal) || + cargoItemSurfaceBuilder.Contains("public static AetheriaRuntimeCargoItemDetailsSurfaceState Project(", StringComparison.Ordinal)) + { + throw new InvalidOperationException( + "Runtime cargo item detail composition must stay behind Build(...); do not re-expose Compose/Project as the public cargo item details surface path."); + } } static void RequireInventoryEquippedItemDetailsUseEveSurface(string root) diff --git a/Assets/Scripts/UI/Menu/InventoryMenu.cs b/Assets/Scripts/UI/Menu/InventoryMenu.cs index bec4af86f..9ec66a547 100644 --- a/Assets/Scripts/UI/Menu/InventoryMenu.cs +++ b/Assets/Scripts/UI/Menu/InventoryMenu.cs @@ -284,7 +284,13 @@ public class InventoryMenu : MonoBehaviour transform, _cargoItemDetailsSurfaceDocument, "Aetheria Inventory Cargo Item Details Surface", - AetheriaRuntimeCargoItemDetailsSurfaceBuilder.Build(ComposeCargoItemDetailsSurface(item, typedItem)), + AetheriaRuntimeCargoItemDetailsSurfaceBuilder.Build( + typedItem, + ComposeCargoItemObservation(item), + ResolveManufacturerName(typedItem), + item is EquippableItem equippableItem ? FormatItemTier(typedItem, equippableItem) : "", + FormatValue, + FormatTemperature), HandleCargoItemDetailsSurfaceCommand, _cargoItemDetailsSurfaceChrome, sortingOrder: 1001); @@ -468,19 +474,6 @@ public class InventoryMenu : MonoBehaviour ("group", groupIndex.ToString(CultureInfo.InvariantCulture))))); } - private AetheriaRuntimeCargoItemDetailsSurfaceState ComposeCargoItemDetailsSurface( - ItemInstance item, - AetheriaRuntimeCatalogItem typedItem) - { - return AetheriaRuntimeCargoItemDetailsSurfaceBuilder.Compose( - typedItem, - ComposeCargoItemObservation(item), - ResolveManufacturerName(typedItem), - item is EquippableItem equippableItem ? FormatItemTier(typedItem, equippableItem) : "", - FormatValue, - FormatTemperature); - } - private static AetheriaRuntimeCargoItemObservation ComposeCargoItemObservation(ItemInstance item) { var equippableItem = item as EquippableItem; diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCargoItemDetailsSurfaceBuilder.cs b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCargoItemDetailsSurfaceBuilder.cs index 8e1ce4ce4..9e87bbb9c 100644 --- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCargoItemDetailsSurfaceBuilder.cs +++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCargoItemDetailsSurfaceBuilder.cs @@ -118,7 +118,29 @@ namespace GameCult.Aetheria.State.Verse public const string SurfaceId = "aetheria.inventory.cargo_item_details"; public const string Close = "aetheria.inventory.cargo_item_details.close"; - public static AetheriaRuntimeCargoItemDetailsSurfaceState Compose( + public static AetheriaRuntimeSurfaceDocument Build( + AetheriaRuntimeCatalogItem typedItem, + AetheriaRuntimeCargoItemObservation item, + string manufacturer, + string tier, + Func formatValue, + Func formatTemperature, + DateTime updatedAtUtc = default(DateTime), + long version = 1) + { + return Build( + ComposeState( + typedItem, + item, + manufacturer, + tier, + formatValue, + formatTemperature, + updatedAtUtc), + version); + } + + private static AetheriaRuntimeCargoItemDetailsSurfaceState ComposeState( AetheriaRuntimeCatalogItem typedItem, AetheriaRuntimeCargoItemObservation item, string manufacturer,