From f4cd97cac765dc8dee3c5d62bec3784c3934f5dd Mon Sep 17 00:00:00 2001 From: Aldin Duraki Date: Thu, 2 Jul 2020 12:48:51 +0200 Subject: [PATCH] Test crash bugfix --- GoldWars/GoldWars/RoundTimer.swift | 61 ++++++++++++++---------------- 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/GoldWars/GoldWars/RoundTimer.swift b/GoldWars/GoldWars/RoundTimer.swift index 666eb7a..9844d41 100644 --- a/GoldWars/GoldWars/RoundTimer.swift +++ b/GoldWars/GoldWars/RoundTimer.swift @@ -13,6 +13,7 @@ class RoundTimer: Timer { var timer: Timer? var timeLeft: Int = 0 var isHeartbeatLocked = false + var isTimerStopped = false var calculate = false var roundEnded = "Syncing" @@ -31,48 +32,42 @@ class RoundTimer: Timer { } func stopTimer() { - guard timer != nil else { return } - timer?.invalidate() - timer = nil + isTimerStopped = true } func resumeTimer() { - timer = Timer.scheduledTimer( - timeInterval: 1.0, - target: self, - selector: #selector(onTimerFires), - userInfo: nil, - repeats: true - ) + isTimerStopped = false } @objc func onTimerFires() { - timeLeft -= 1 - EntityManager.gameEMInstance.updateTime(time: (timeLeft > 0 ? String(timeLeft) : roundEnded)) - - if timeLeft == 0 { - EntityManager.gameEMInstance.removeModal() - RoundCalculatorService.sharedInstance.resetNumberOfAttacksAndFormats() - if !MultiplayerNetwork.sharedInstance.isSending { - MultiplayerNetwork.sharedInstance.sendPlayerMoves(localRoundData: DataService.sharedInstance.localRoundData) + if !isTimerStopped { + timeLeft -= 1 + EntityManager.gameEMInstance.updateTime(time: (timeLeft > 0 ? String(timeLeft) : roundEnded)) + + if timeLeft == 0 { + EntityManager.gameEMInstance.removeModal() + RoundCalculatorService.sharedInstance.resetNumberOfAttacksAndFormats() + if !MultiplayerNetwork.sharedInstance.isSending { + MultiplayerNetwork.sharedInstance.sendPlayerMoves(localRoundData: DataService.sharedInstance.localRoundData) + } + calculate = true } - calculate = true - } - - if timeLeft <= 0 { - if calculate - && !RoundCalculatorService.sharedInstance.isCalculating - && DataService.sharedInstance.didReceiveAllData() - && GameCenterManager.sharedInstance.isServer { - RoundCalculatorService.sharedInstance.calculateRound() - calculate = false + + if timeLeft <= 0 { + if calculate + && !RoundCalculatorService.sharedInstance.isCalculating + && DataService.sharedInstance.didReceiveAllData() + && GameCenterManager.sharedInstance.isServer { + RoundCalculatorService.sharedInstance.calculateRound() + calculate = false + } + } + + if (!isHeartbeatLocked && (timeLeft % 7 == 0)){ + MultiplayerNetwork.sharedInstance.sendHeartbeatToPlayer() + isHeartbeatLocked = true; } - } - - if (!isHeartbeatLocked && (timeLeft % 7 == 0)){ - MultiplayerNetwork.sharedInstance.sendHeartbeatToPlayer() - isHeartbeatLocked = true; } } }