Aplicaciones de ReEvolution y miscelaneas
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.
 
 
 

87 lines
2.9 KiB

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
}
}
}
}