Files
purchases-ios/Examples/MagicWeatherSwiftUI/Shared/Sources/Helpers/SampleData.swift
T

97 lines
2.7 KiB
Swift

//
// SampleData.swift
// Magic Weather SwiftUI
//
// Created by Cody Kerns on 12/16/20.
//
import SwiftUI
#if os(macOS)
typealias CompatibilityColor = NSColor
#else
import UIKit
typealias CompatibilityColor = UIColor
#endif
/*
Sample data for Magic Weather.
*/
struct SampleWeatherData {
enum TemperatureUnit: String {
case f
case c
}
enum Environment: String {
case mercury
case venus
case earth
case mars
case jupiter
case saturn
case uranus
case neptune
/*
Pluto is still a planet in my ❤️
*/
case pluto
}
var emoji: String
var temperature: String
var unit: TemperatureUnit = .f
var environment: Environment = .earth
static let testCold = SampleWeatherData.init(emoji: "❄️", temperature: "14")
static let testHot = SampleWeatherData.init(emoji: "☀️", temperature: "85")
static func generateSampleData(for environment: SampleWeatherData.Environment, temperature: Int? = nil) -> SampleWeatherData {
let temperature = temperature ?? Int.random(in: -20...120)
var emoji: String
switch temperature {
case 0...32:
emoji = "❄️"
case 33...60:
emoji = "☁️"
case 61...90:
emoji = "🌤"
case 91...120:
emoji = "🥵"
default:
if temperature < 0 {
emoji = "🥶"
} else {
emoji = "☄️"
}
}
return .init(emoji: emoji, temperature: "\(temperature)", unit: .f, environment: environment)
}
}
extension SampleWeatherData {
var weatherColor: CompatibilityColor? {
switch self.emoji {
case "🥶":
return #colorLiteral(red: 0.012122632, green: 0.2950853705, blue: 0.5183202624, alpha: 1)
case "❄️":
return #colorLiteral(red: 0, green: 0.1543088555, blue: 0.3799687922, alpha: 1)
case "☁️":
return #colorLiteral(red: 0.2000069618, green: 1.306866852e-05, blue: 0.2313408554, alpha: 1)
case "🌤":
return #colorLiteral(red: 0.8323764622, green: 0.277771439, blue: 0.2446353115, alpha: 1)
case "🥵":
return #colorLiteral(red: 0.7131021281, green: 1.25857805e-05, blue: 0.2313565314, alpha: 1)
case "☄️":
return #colorLiteral(red: 0.8000227213, green: 1.210316441e-05, blue: 0.2313722372, alpha: 1)
default:
return #colorLiteral(red: 0.8000227213, green: 1.210316441e-05, blue: 0.2313722372, alpha: 1)
}
}
}