@@ -56,7 +56,12 @@ public class DeckShuffleAnimation: ObservableObject {
56
56
57
57
58
58
/// This data type defines shuffle rotation and offsets.
59
- public typealias ShuffleData = ( Angle , x: Double , y: Double )
59
+ public struct ShuffleData {
60
+
61
+ public let angle : Angle
62
+ public let xOffset : Double
63
+ public let yOffset : Double
64
+ }
60
65
61
66
private var shuffleData : [ ShuffleData ] = [ ]
62
67
}
@@ -72,8 +77,8 @@ public extension View {
72
77
in deck: Deck < Item >
73
78
) -> some View {
74
79
let data = animation. shuffleData ( for: item, in: deck)
75
- return self . rotationEffect ( data? . 0 ?? . zero)
76
- . offset ( x: data? . 1 ?? 0 , y: data? . 2 ?? 0 )
80
+ return self . rotationEffect ( data? . angle ?? . zero)
81
+ . offset ( x: data? . xOffset ?? 0 , y: data? . yOffset ?? 0 )
77
82
. animation ( . default, value: animation. animationTrigger)
78
83
}
79
84
}
@@ -119,10 +124,10 @@ private extension DeckShuffleAnimation {
119
124
120
125
func randomizeShuffleData< Item> ( for deck: Binding < Deck < Item > > ) {
121
126
shuffleData = ( 0 ..< deck. wrappedValue. items. count) . map { _ in
122
- (
123
- Angle . degrees ( Double . random ( in: - maxDegrees... maxDegrees) ) ,
124
- Double . random ( in: - maxOffsetX... maxOffsetX) ,
125
- Double . random ( in: - maxOffsetY... maxOffsetY)
127
+ ShuffleData (
128
+ angle : Angle . degrees ( Double . random ( in: - maxDegrees... maxDegrees) ) ,
129
+ xOffset : Double . random ( in: - maxOffsetX... maxOffsetX) ,
130
+ yOffset : Double . random ( in: - maxOffsetY... maxOffsetY)
126
131
)
127
132
}
128
133
}
@@ -144,7 +149,13 @@ private extension DeckShuffleAnimation {
144
149
}
145
150
146
151
func easeOutShuffleState< Item> ( for deck: Binding < Deck < Item > > ) {
147
- shuffleData = shuffleData. map { ( $0. 0 / 2 , $0. 1 / 2 , $0. 2 / 2 ) }
152
+ shuffleData = shuffleData. map {
153
+ ShuffleData (
154
+ angle: $0. angle/ 2 ,
155
+ xOffset: $0. xOffset/ 2 ,
156
+ yOffset: $0. yOffset/ 2
157
+ )
158
+ }
148
159
animationTrigger. toggle ( )
149
160
performAfterDelay {
150
161
self . resetShuffleState ( for: deck)
0 commit comments