56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  FortuneWheelModel.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 2023/12/07.
 | 
						|
//
 | 
						|
 | 
						|
import SwiftUI
 | 
						|
 | 
						|
struct FortuneWheelModel {
 | 
						|
    
 | 
						|
    let titles: [String]
 | 
						|
    let size: CGFloat
 | 
						|
    let onSpinEnd: ((Int) -> ())?
 | 
						|
    let colors: [Color]
 | 
						|
    let pointerColor: Color
 | 
						|
    let strokeWidth: CGFloat
 | 
						|
    let strokeColor: Color
 | 
						|
    let animDuration: Double
 | 
						|
    let animation: Animation
 | 
						|
    let getWheelItemIndex: (() -> (Int))?
 | 
						|
    
 | 
						|
    public init(
 | 
						|
        titles: [String], size: CGFloat, onSpinEnd: ((Int) -> ())?,
 | 
						|
        colors: [Color]? = nil,
 | 
						|
        pointerColor: Color = .red,
 | 
						|
        strokeWidth: CGFloat = 5,
 | 
						|
        strokeColor: Color = .white,
 | 
						|
        animDuration: Double = Double(2),
 | 
						|
        animation: Animation? = nil,
 | 
						|
        getWheelItemIndex: (() -> (Int))? = nil
 | 
						|
    ) {
 | 
						|
        self.titles = titles
 | 
						|
        self.size = size
 | 
						|
        self.onSpinEnd = onSpinEnd
 | 
						|
        self.colors = colors ?? [
 | 
						|
            Color(hex: "#D73535"),
 | 
						|
            Color(hex: "#FF5151"),
 | 
						|
            Color(hex: "#FF7C32"),
 | 
						|
            Color(hex: "#FFAF13"),
 | 
						|
            Color(hex: "#FFC658"),
 | 
						|
            Color(hex: "#8BDA70"),
 | 
						|
            Color(hex: "#06AB97"),
 | 
						|
            Color(hex: "#12AAFF"),
 | 
						|
            Color(hex: "#0052B3"),
 | 
						|
            Color(hex: "#7444FF"),
 | 
						|
        ]
 | 
						|
        self.pointerColor = pointerColor
 | 
						|
        self.strokeWidth = strokeWidth
 | 
						|
        self.strokeColor = strokeColor
 | 
						|
        self.animDuration = animDuration
 | 
						|
        self.animation = animation ?? Animation.timingCurve(0.51, 0.97, 0.56, 0.99, duration: animDuration)
 | 
						|
        self.getWheelItemIndex = getWheelItemIndex
 | 
						|
    }
 | 
						|
}
 |