import SwiftUI
struct Player: {
@State var name: String
@State var points: Int = 0
@State var setPoints: Int = 0
@State var allPoints: Int = 0
@State var didStart: Bool
mutating func plus() -> Void {
points += 1
allPoints += 1
}
mutating func minus() -> Void {
points -= 1
allPoints -= 1
}
func wonGame() -> Bool {
if setPoints == 5 {return true}
else {return false}
}
class Game: ObservableObject {
@Published var gracz1: Player = Player(name: "Player 1", didStart: true)
@Published var gracz2: Player = Player(name: "Player2", didStart: false)
var toWinSet: Int = 11
var toWinGame: Int = 5
func whoServes() -> String {
let suma = gracz1.points + gracz2.points
if gracz1.didStart {
if suma % 4 == 2 || suma % 4 == 3 {return gracz2.name}
else {return gracz1.name}
} else {
if suma % 4 == 2 || suma % 4 == 3 {return gracz1.name}
else {return gracz2.name}
}
}
func whoWonSet() -> Void {
if gracz1.points == 11 {
gracz1.points = 0
gracz1.allPoints += 1
gracz1.didStart = false
gracz2.didStart = true
}
if gracz2.points == 11 {
gracz2.points = 0
gracz2.allPoints += 1
gracz2.didStart = false
gracz1.didStart = true
}
}
func didSomeoneWin() -> String? {
if gracz1.setPoints == toWinGame {return gracz1.name}
if gracz2.setPoints == toWinGame {return gracz2.name}
else {return nil}
}
struct ContentView: View {
let serves = "s.circle"
let notServes = ""
@ObservedObject var game = Game()
@State var showingSettings: Bool = false
let hh = UIScreen.main.bounds.height
var body: some View {
// MARK: - PLAYER SECTION
ZStack{
VStack{
Text(String(game.gracz2.points))
.font(.system(size: hh/3))
.frame(width: hh/2.5, height: hh/3)
Text(String(game.gracz2.setPoints))
.font(.system(size: hh/15))
}
HStack{
Button(action: {
game.gracz2.minus()
}, label: {
Text("-")
.foregroundColor(.primary)
.padding()
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .bottomLeading)
})
Button(action: {
game.gracz2.plus();
game.whoWonSet()
}, label: {
Text("+")
.foregroundColor(.primary)
.padding()
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .bottomTrailing)
})
}
}
.background(Color("C2"))
.cornerRadius(26)
.padding()
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}