private func obstructionWithObstacles() {
shipsImageView.image = shipsImagesArray.randomElement()
fishImageView.image = fishImagesArray.randomElement()
self.counterTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(counterPlusOne), userInfo: nil, repeats: true)
counterTimer.fire()
self.intersectionCheckTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(intersectionCheck), userInfo: nil, repeats: true)
intersectionCheckTimer.fire()
}
@objc private func counterPlusOne() {
self.counter += 1
self.scoreLabel.text = "\(self.counter)"
if self.counter.isMultiple(of: 10) {
self.shipsImageView.frame = CGRect(x: self.shipsImageView.frame.width + self.view.frame.maxX, y: 35, width: 75, height: 75)
self.animatorForShipImageView = UIViewPropertyAnimator(duration: self.timeInterval, curve: .linear, animations: {
self.shipsImageView.frame.origin.x = self.view.frame.minX - self.shipsImageView.frame.width
})
self.animatorForShipImageView.startAnimation()
} else if self.counter.isMultiple(of: 7) {
self.fishImageView.frame = CGRect(x: self.view.frame.maxX + self.fishImageView.frame.width, y: 100, width: 75, height: 75)
self.animatorForFishImageView = UIViewPropertyAnimator(duration: self.timeInterval - 3, curve: .linear, animations: {
self.fishImageView.frame.origin.x = self.view.frame.minX - self.fishImageView.frame.width
})
self.animatorForFishImageView.startAnimation()
}
if self.counter.isMultiple(of: 300) {
self.timeInterval -= 1
}
}
@objc private func intersectionCheck() {
guard let shipsImageView = self.shipsImageView.layer.presentation(),
let submarineImageView = self.submarineImageView.layer.presentation(),
let fishImageView = self.fishImageView.layer.presentation() else { return }
let counterResults = CounterResults()
guard let text = self.scoreLabel.text else { return }
if submarineImageView.frame.intersects(fishImageView.frame) || fishImageView.frame.intersects(submarineImageView.frame) || submarineImageView.frame.intersects(shipsImageView.frame) || shipsImageView.frame.intersects(submarineImageView.frame) {
self.boomImageView.frame = CGRect(x: self.submarineImageView.frame.origin.x, y: self.submarineImageView.frame.origin.y , width: self.submarineImageView.frame.width, height: self.submarineImageView.frame.height + 50)
self.fishImageView.removeFromSuperview()
self.submarineImageView.removeFromSuperview()
self.shipsImageView.removeFromSuperview()
counterResults.result = text
realmManager.saveResult(result: counterResults)
self.scoreLabel.text = "GAME OVER"
self.intersectionCheckTimer.invalidate()
self.counterTimer.invalidate()
self.counter = 0
}
}
}