import Foundation
|
|
import WatchConnectivity
|
|
|
|
class PadelScoreManager: NSObject, ObservableObject, WCSessionDelegate {
|
|
@Published var player1Score = 0
|
|
@Published var player2Score = 0
|
|
@Published var player1Games = 0
|
|
@Published var player2Games = 0
|
|
@Published var player1Sets = 0
|
|
@Published var player2Sets = 0
|
|
@Published var isPlayer1Serving = true
|
|
|
|
override init() {
|
|
super.init()
|
|
if WCSession.isSupported() {
|
|
let session = WCSession.default
|
|
session.delegate = self
|
|
session.activate()
|
|
}
|
|
}
|
|
|
|
func addPoint(to playerScore: inout Int, opponentScore: inout Int, playerGames: inout Int, opponentGames: inout Int) {
|
|
if playerScore < 40 {
|
|
playerScore += 15
|
|
} else if playerScore == 40 {
|
|
playerGames += 1
|
|
resetGameScores()
|
|
}
|
|
sendScoreUpdate()
|
|
}
|
|
|
|
func resetGameScores() {
|
|
player1Score = 0
|
|
player2Score = 0
|
|
}
|
|
|
|
func resetScores() {
|
|
resetGameScores()
|
|
player1Games = 0
|
|
player2Games = 0
|
|
player1Sets = 0
|
|
player2Sets = 0
|
|
sendScoreUpdate()
|
|
}
|
|
|
|
private func sendScoreUpdate() {
|
|
let message: [String: Any] = [
|
|
"player1Score": player1Score,
|
|
"player2Score": player2Score,
|
|
"player1Games": player1Games,
|
|
"player2Games": player2Games,
|
|
"player1Sets": player1Sets,
|
|
"player2Sets": player2Sets,
|
|
"isPlayer1Serving": isPlayer1Serving
|
|
]
|
|
WCSession.default.sendMessage(message, replyHandler: nil, errorHandler: nil)
|
|
}
|
|
|
|
// WCSessionDelegate methods
|
|
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {}
|
|
|
|
func sessionDidBecomeInactive(_ session: WCSession) {}
|
|
|
|
func sessionDidDeactivate(_ session: WCSession) {
|
|
session.activate()
|
|
}
|
|
|
|
func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
|
|
if let player1Score = message["player1Score"] as? Int,
|
|
let player2Score = message["player2Score"] as? Int,
|
|
let player1Games = message["player1Games"] as? Int,
|
|
let player2Games = message["player2Games"] as? Int,
|
|
let player1Sets = message["player1Sets"] as? Int,
|
|
let player2Sets = message["player2Sets"] as? Int,
|
|
let isPlayer1Serving = message["isPlayer1Serving"] as? Bool {
|
|
DispatchQueue.main.async {
|
|
self.player1Score = player1Score
|
|
self.player2Score = player2Score
|
|
self.player1Games = player1Games
|
|
self.player2Games = player2Games
|
|
self.player1Sets = player1Sets
|
|
self.player2Sets = player2Sets
|
|
self.isPlayer1Serving = isPlayer1Serving
|
|
}
|
|
}
|
|
}
|
|
}
|