import Foundation enum InventoryModeAvailability { static let dollhouseAssetCandidates: [(name: String, ext: String)] = [ ("Building", "usdz"), ("Building", "scn"), ] static func hasShippedDollhouseAsset(in bundle: Bundle = .main) -> Bool { dollhouseAssetCandidates.contains { candidate in bundle.url(forResource: candidate.name, withExtension: candidate.ext) != nil } } static func productionVisibleModes(hasDollhouseAsset: Bool) -> [InventoryStore.Mode] { [.sunseeker, .dreamWeaver] } static func sanitizedProductionSelection( _ candidate: InventoryStore.Mode, hasDollhouseAsset: Bool ) -> InventoryStore.Mode { productionVisibleModes(hasDollhouseAsset: hasDollhouseAsset).contains(candidate) ? candidate : .sunseeker } static func modeSummaryText(hasDollhouseAsset: Bool) -> String { let base = productionVisibleModes(hasDollhouseAsset: hasDollhouseAsset).map(\.rawValue) return hasDollhouseAsset ? (base + ["Map-to-Dollhouse"]).joined(separator: " · ") : base.joined(separator: " · ") } }