77 lines
1.7 KiB
Swift
77 lines
1.7 KiB
Swift
import Foundation
|
|
|
|
public enum ClimateZone: String, CaseIterable, Codable, Equatable, Sendable {
|
|
|
|
case one = "CZ1"
|
|
case two = "CZ2"
|
|
case three = "CZ3"
|
|
case four = "CZ4"
|
|
case five = "CZ5"
|
|
case six = "CZ6"
|
|
|
|
public var label: String { rawValue }
|
|
|
|
public enum ZoneType: String, CaseIterable, Codable, Equatable, Sendable {
|
|
// NOTE: Keep in this order.
|
|
|
|
case hotHumid
|
|
case moist
|
|
case dry
|
|
case marine
|
|
|
|
// FIX: Return ZoneIdentifiers.
|
|
public var zoneIdentifiers: [String] {
|
|
switch self {
|
|
case .dry:
|
|
return ["2B", "3B", "4B", "5B", "6B", "7B"]
|
|
case .hotHumid:
|
|
return ["1A", "2A"]
|
|
case .marine:
|
|
return ["3C", "4C"]
|
|
case .moist:
|
|
return ["3A", "4A", "5A", "6A", "7A"]
|
|
}
|
|
}
|
|
|
|
public var cfmPerTon: Int {
|
|
switch self {
|
|
case .dry: return 450
|
|
case .hotHumid: return 350
|
|
case .marine, .moist: return 400
|
|
}
|
|
}
|
|
|
|
public var label: String {
|
|
return "\(self == .hotHumid ? "Hot Humid" : rawValue.capitalized) (\(zoneIdentifiers.joined(separator: ", ")))"
|
|
}
|
|
}
|
|
|
|
/// Represents climate zone identifiers.
|
|
public enum ZoneIdentifier: String, CaseIterable, Codable, Equatable, Sendable {
|
|
// A zones (hotHumid)
|
|
case oneA = "1A"
|
|
case twoA = "2A"
|
|
// A zones (moist)
|
|
case threeA = "3A"
|
|
case fourA = "4A"
|
|
case fiveA = "5A"
|
|
case sixA = "6A"
|
|
case sevenA = "7A"
|
|
|
|
// B zones (dry)
|
|
case twoB = "2B"
|
|
case threeB = "3B"
|
|
case fourB = "4B"
|
|
case fiveB = "5B"
|
|
case sixB = "6B"
|
|
case sevenB = "7B"
|
|
|
|
// C zones (marine)
|
|
case threeC = "3C"
|
|
case fourC = "4C"
|
|
|
|
public var label: String { rawValue }
|
|
|
|
}
|
|
}
|