38 lines
		
	
	
		
			764 B
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			764 B
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  RouletteViewDialog.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 2023/12/07.
 | 
						|
//
 | 
						|
 | 
						|
import SwiftUI
 | 
						|
 | 
						|
struct RouletteViewDialog: View {
 | 
						|
    @Binding var isShowing: Bool
 | 
						|
    
 | 
						|
    let options: [String]
 | 
						|
    let selectedOption: String
 | 
						|
    let complete: () -> Void
 | 
						|
    
 | 
						|
    var body: some View {
 | 
						|
        let model = FortuneWheelModel(
 | 
						|
            titles: options,
 | 
						|
            size: 320,
 | 
						|
            onSpinEnd: onSpinEnd,
 | 
						|
            getWheelItemIndex: getWheelItemIndex
 | 
						|
        )
 | 
						|
        ZStack {
 | 
						|
            FortuneWheel(model: model)
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    private func onSpinEnd(index: Int) {
 | 
						|
        complete()
 | 
						|
        isShowing = false
 | 
						|
    }
 | 
						|
    
 | 
						|
    private func getWheelItemIndex() -> Int {
 | 
						|
        return options.firstIndex(of: selectedOption) ?? 0
 | 
						|
    }
 | 
						|
}
 |