import Foundation public struct BudgetedPercentEnvelope: Equatable { public var coilBudget: Percentage public var filterBudget: Percentage public var returnPlenumBudget: Percentage public var supplyPlenumBudget: Percentage public var preCoilBudget: Percentage { coilBudget + supplyPlenumBudget } public init( coilBudget: Percentage, filterBudget: Percentage, returnPlenumBudget: Percentage, supplyPlenumBudget: Percentage ) { self.coilBudget = coilBudget self.filterBudget = filterBudget self.returnPlenumBudget = returnPlenumBudget self.supplyPlenumBudget = supplyPlenumBudget } public var total: Percentage { coilBudget + filterBudget + supplyPlenumBudget + returnPlenumBudget } public init(equipmentType: EquipmentType, fanType: FanType) { switch equipmentType { case .furnaceAndCoil: switch fanType { case .constantSpeed: self.init( coilBudget: 40%, filterBudget: 20%, returnPlenumBudget: 20%, supplyPlenumBudget: 20% ) case .variableSpeed: self.init( coilBudget: 30%, filterBudget: 40%, returnPlenumBudget: 15%, supplyPlenumBudget: 15% ) } case .airHandler: self.init( coilBudget: .zero, filterBudget: 50%, returnPlenumBudget: 25%, supplyPlenumBudget: 25% ) } } }