You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.8 KiB
98 lines
2.8 KiB
//
|
|
// WinModal.swift
|
|
// AllIn
|
|
//
|
|
// Created by Lucas on 27/09/2023.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct WinModal: View {
|
|
@Environment(\.dismiss) var dismiss
|
|
|
|
@State var xOffset: CGFloat = 0
|
|
var body: some View {
|
|
ZStack{
|
|
GeometryReader { geometry in
|
|
let size = geometry.size.width / 20
|
|
|
|
InfiniteScroller(contentWidth: geometry.size.width) {
|
|
|
|
Image("marquee").resizable().scaledToFit()
|
|
}
|
|
VStack {
|
|
ZStack(alignment: .topLeading){
|
|
HStack{
|
|
Spacer()
|
|
Image("allinIcon").resizable().frame(width: 35, height: 35)
|
|
Spacer()
|
|
}
|
|
|
|
Image("crossIcon").resizable().frame(width: 25, height: 25).onTapGesture {
|
|
dismiss()
|
|
}
|
|
|
|
}
|
|
HStack{
|
|
Text("FÉLICITATIONS").font(.system(size: 20)).foregroundColor(.white).fontWeight(.semibold).italic()
|
|
Text("PSEUDO!").padding(.top,9).font(.system(size: 33)).fontWeight(.heavy).foregroundColor(.white)
|
|
}
|
|
.rotationEffect(.degrees(-4))
|
|
.padding(.top,40)
|
|
|
|
Spacer()
|
|
AllcoinsCapsule()
|
|
Spacer()
|
|
RecapBetCard()
|
|
Spacer()
|
|
}
|
|
.padding([.all],20)
|
|
}
|
|
|
|
}.background(
|
|
Image("modalBackgroundImage")
|
|
.resizable()
|
|
.edgesIgnoringSafeArea(.all)
|
|
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
|
|
)
|
|
}
|
|
}
|
|
|
|
struct WinModal_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
WinModal()
|
|
}
|
|
}
|
|
|
|
struct InfiniteScroller<Content: View>: View {
|
|
var contentWidth: CGFloat
|
|
var content: (() -> Content)
|
|
|
|
@State
|
|
var xOffset: CGFloat = -800
|
|
|
|
var body: some View {
|
|
ScrollView(.horizontal, showsIndicators: false) {
|
|
HStack(spacing: 0) {
|
|
content()
|
|
content()
|
|
content()
|
|
}
|
|
.offset(x: xOffset, y: 0).opacity(0.3)
|
|
}
|
|
.disabled(true)
|
|
.onAppear {
|
|
withAnimation(
|
|
.linear(duration: 25)
|
|
.repeatForever(autoreverses: false)
|
|
) {
|
|
xOffset = +contentWidth
|
|
}
|
|
}
|
|
.frame(width: 1300, height: 1300)
|
|
.padding(.leading, -400)
|
|
.rotationEffect(.degrees(30))
|
|
.opacity(0.1)
|
|
}
|
|
}
|