import Adamantium
import SwiftUI

public struct CloudSkyViewComponent: View {
    private let id: String
    private let timeScale: Float
    private let cloudscale: Float
    private let speed: Float
    private let clouddark: Float
    private let cloudlight: Float
    private let cloudcover: Float
    private let cloudalpha: Float
    private let skytint: Float
    private let skycolour1: SIMD3<Float>
    private let skycolour2: SIMD3<Float>
    private let frameRate: Int
    private let isPaused: Bool

    public init(
        id: String,
        timeScale: Float,
        cloudscale: Float = 1.1,
        speed: Float = 0.03,
        clouddark: Float = 0.5,
        cloudlight: Float = 0.3,
        cloudcover: Float = 0.2,
        cloudalpha: Float = 8.0,
        skytint: Float = 0.5,
        skycolour1: SIMD3<Float> = .init(0.2, 0.4, 0.6),
        skycolour2: SIMD3<Float> = .init(0.4, 0.7, 1.0),
        frameRate: Int = 60,
        isPaused: Bool
    ) {
        self.id = id
        self.timeScale = timeScale
        self.cloudscale = cloudscale
        self.speed = speed
        self.clouddark = clouddark
        self.cloudlight = cloudlight
        self.cloudcover = cloudcover
        self.cloudalpha = cloudalpha
        self.skytint = skytint
        self.skycolour1 = skycolour1
        self.skycolour2 = skycolour2
        self.frameRate = frameRate
        self.isPaused = isPaused
    }

    public var body: some View {
        #if targetEnvironment(simulator)
            Color.black
        #else
            CloudySkyView(
                id: id,
                timeScale: timeScale,
                cloudscale: cloudscale,
                speed: clouddark,
                clouddark: clouddark,
                cloudlight: cloudlight,
                cloudcover: cloudcover,
                cloudalpha: cloudalpha,
                skytint: skytint,
                skycolour1: skycolour1,
                skycolour2: skycolour2,
                frameRate: frameRate,
                isPaused: isPaused
            )
        #endif
    }
}
