From 71070fce4b65ab4e3b517fb7bf55d5c6764d52c9 Mon Sep 17 00:00:00 2001 From: Gabriel Busto Date: Wed, 11 Sep 2019 19:26:52 -1000 Subject: [PATCH 1/2] Updated levels to have a share button. Need to update classic mode to be the same. Then I also need to make the Share button functional because right now it does nothing. --- .../Contents.json | 15 +++ .../win_lose_text_background.pdf | Bin 0 -> 41932 bytes Ballz1/Controllers/LevelsGameController.swift | 43 +++++++- Ballz1/Views/BrickBreak.storyboard | 97 ++++++++++++++++++ Ballz1/Views/LevelsGameScene.swift | 64 ++++++++---- 5 files changed, 196 insertions(+), 23 deletions(-) create mode 100644 Ballz1/Assets.xcassets/win_lose_text_background.imageset/Contents.json create mode 100644 Ballz1/Assets.xcassets/win_lose_text_background.imageset/win_lose_text_background.pdf diff --git a/Ballz1/Assets.xcassets/win_lose_text_background.imageset/Contents.json b/Ballz1/Assets.xcassets/win_lose_text_background.imageset/Contents.json new file mode 100644 index 0000000..8fa58ec --- /dev/null +++ b/Ballz1/Assets.xcassets/win_lose_text_background.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "win_lose_text_background.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "preserves-vector-representation" : true + } +} \ No newline at end of file diff --git a/Ballz1/Assets.xcassets/win_lose_text_background.imageset/win_lose_text_background.pdf b/Ballz1/Assets.xcassets/win_lose_text_background.imageset/win_lose_text_background.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e514c2a8ec4d03fbeb78ef850ad3bf11cb0f3371 GIT binary patch literal 41932 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 HRp|c!a_%ma literal 0 HcmV?d00001 diff --git a/Ballz1/Controllers/LevelsGameController.swift b/Ballz1/Controllers/LevelsGameController.swift index 43a4eb5..7da8bc9 100644 --- a/Ballz1/Controllers/LevelsGameController.swift +++ b/Ballz1/Controllers/LevelsGameController.swift @@ -21,6 +21,7 @@ class LevelsGameController: UIViewController, @IBOutlet var rowCountLabel: UILabel! @IBOutlet var heartImageView: UIImageView! + /* XXX REMOVE THESE NEXT 3 LINES */ @IBOutlet var gameOverView: UIView! @IBOutlet var gameOverLevelCount: UILabel! @IBOutlet var gameOverLevelScore: UILabel! @@ -31,6 +32,11 @@ class LevelsGameController: UIViewController, @IBOutlet weak var bannerAdView: GADBannerView! + @IBOutlet var gameOverViewNew: UIView! + @IBOutlet weak var gameOverTextBackground: UIImageView! + @IBOutlet weak var gameOverShareButton: UIButton! + @IBOutlet weak var gameOverNextButton: UIButton! + private var interstitialAd: GADInterstitial! private var rewardAdViewController: RewardAdViewController! @@ -269,6 +275,24 @@ class LevelsGameController: UIViewController, } } + @IBAction func gameOverShareButtonClicked(_ sender: Any) { + print("USER WANTS TO SHARE THIS!!!") + } + + @IBAction func gameOverNextButtonClicked(_ sender: Any) { + let scene = self.scene as! LevelsGameScene + scene.removeConfetti() + scene.removeGameOverView() + + // Show an interstitial ad + if self.interstitialAd.isReady { + self.interstitialAd.present(fromRootViewController: self) + } + + // Replay the game scene; state should have already been saved + self.goToGameScene() + } + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Prepare for a segue } @@ -323,7 +347,14 @@ class LevelsGameController: UIViewController, resumeButton.layer.cornerRadius = resumeButton.frame.height * 0.5 gameMenuButton.layer.cornerRadius = gameMenuButton.frame.height * 0.5 - gameOverView.center = CGPoint(x: view.frame.midX, y: view.frame.midY) + // XXX REMOVE ME gameOverView.center = CGPoint(x: view.frame.midX, y: view.frame.midY) + gameOverViewNew.center = CGPoint(x: view.frame.midX, y: view.frame.midY) + + gameOverNextButton.imageView?.contentMode = .scaleAspectFit + gameOverShareButton.imageView?.contentMode = .scaleAspectFit + + gameOverNextButton.layer.cornerRadius = gameOverNextButton.frame.height * 0.5 + gameOverShareButton.layer.cornerRadius = gameOverShareButton.frame.height * 0.5 view.presentScene(scene) view.ignoresSiblingOrder = true @@ -435,6 +466,7 @@ class LevelsGameController: UIViewController, currentLevelCount -= 1 } + /* XXX REMOVE ME gameOverLevelCount.attributedText = NSAttributedString(string: "Level \(currentLevelCount)", attributes: strokeTextAttributes) gameOverLevelScore.attributedText = NSAttributedString(string: "\(scene.gameModel!.gameScore)", @@ -443,19 +475,26 @@ class LevelsGameController: UIViewController, // If they beat their high score, let them know scene.showGameOverView(win: win, gameOverView: gameOverView) + */ if win { // Used for determining when we might be able to prompt the use for a positive review (they're more likely to be happy if they've completed more than 1 level successfully) numConsecutiveWins += 1 // Used in analytics to determine how many levels were completed in a session numLevelsCompleted += 1 + gameOverNextButton.setTitle("Next", for: .normal) } else { numConsecutiveWins = 0 // Increment the number of levels failed numLevelsFailed += 1 + + // Change the text of the button to say "Try Again" instead of "Next" + gameOverNextButton.setTitle("Try Again", for: .normal) } + scene.showGameOverView(win: win, gameOverView: gameOverViewNew) + let winInt = win ? 1 : 0 let userRescuedInt = userWasRescued ? 1 : 0 // Analytics log event: level ending; send over the level number that just endedNS whether or not they just beat this level @@ -466,6 +505,7 @@ class LevelsGameController: UIViewController, "rescued": userRescuedInt as NSNumber, ]) + /* XXX REWORK ME let _ = Timer.scheduledTimer(withTimeInterval: 3.0, repeats: false) { _ in let scene = self.scene as! LevelsGameScene if win { @@ -482,6 +522,7 @@ class LevelsGameController: UIViewController, // Replay the game scene; state should have already been saved self.goToGameScene() } + */ } // MARK: Private functions diff --git a/Ballz1/Views/BrickBreak.storyboard b/Ballz1/Views/BrickBreak.storyboard index 29d45a6..e4765f6 100644 --- a/Ballz1/Views/BrickBreak.storyboard +++ b/Ballz1/Views/BrickBreak.storyboard @@ -820,6 +820,49 @@ + @@ -907,7 +950,11 @@ + + + + @@ -991,6 +1038,55 @@ + @@ -1044,5 +1140,6 @@ + diff --git a/Ballz1/Views/LevelsGameScene.swift b/Ballz1/Views/LevelsGameScene.swift index 9be09b0..2ebaa4a 100644 --- a/Ballz1/Views/LevelsGameScene.swift +++ b/Ballz1/Views/LevelsGameScene.swift @@ -506,6 +506,7 @@ class LevelsGameScene: GameScene { let blurView = UIVisualEffectView(effect: blur) blurView.frame = view!.frame + /* XXX let imageView = UIImageView(image: UIImage(named: "score_background_yellow_fade")) // Set the center of the image to be the center of the main view imageView.center = view!.center @@ -529,6 +530,14 @@ class LevelsGameScene: GameScene { // Add the background image for the labels view!.addSubview(imageView2) + */ + + // Add the blur view to the screen first + view!.addSubview(blurView) + + // Set the alphas to 0 so we can fade it in + blurView.alpha = 0 + gameOverView.alpha = 0 // Unhide the level cleared view gameOverView.isHidden = false @@ -536,61 +545,72 @@ class LevelsGameScene: GameScene { // Add the level cleared view on top of the blur view and the level cleared view view!.addSubview(gameOverView) - // Set a flag so that the update scene tick will fade the view in - showingGameOverView = true - - activeViews = [blurView, gameOverView, imageView, imageView2] + var imageView: UIImageView? = nil if win { if gameModel!.gameScore > gameModel!.highScore { - let _ = Timer.scheduledTimer(withTimeInterval: 1.5, repeats: false) { _ in - self.addHighScoreStamp() - } + imageView = addHighScoreStamp() } else { - let _ = Timer.scheduledTimer(withTimeInterval: 1.5, repeats: false) { _ in - self.addLevelPassedStamp() - } + imageView = addLevelPassedStamp() } } else { - let _ = Timer.scheduledTimer(withTimeInterval: 1.5, repeats: false) { _ in - self.addLevelFailedStamp() - } + imageView = addLevelFailedStamp() } + + view!.addSubview(imageView!) + + // XXX activeViews = [blurView, gameOverView, imageView, imageView2] + activeViews = [blurView, gameOverView, imageView!] + + // Set a flag so that the update scene tick will fade the view in + showingGameOverView = true } - public func addLevelPassedStamp() { + public func addLevelPassedStamp() -> UIImageView { let levelPassedStampView = UIImageView(image: UIImage(named: "level_passed_narrow4")) levelPassedStampView.center = view!.center levelPassedStampView.center.y -= 70 levelPassedStampView.contentMode = .scaleAspectFit + levelPassedStampView.alpha = 0 + /* XXX REMOVE ME view!.addSubview(levelPassedStampView) activeViews.append(levelPassedStampView) + */ + return levelPassedStampView } - public func addLevelFailedStamp() { - let levelPassedStampView = UIImageView(image: UIImage(named: "level_failed_narrow4")) - levelPassedStampView.center = view!.center - levelPassedStampView.center.y -= 70 - levelPassedStampView.contentMode = .scaleAspectFit + public func addLevelFailedStamp() -> UIImageView { + let levelFailedStampView = UIImageView(image: UIImage(named: "level_failed_narrow4")) + levelFailedStampView.center = view!.center + levelFailedStampView.center.y -= 70 + levelFailedStampView.contentMode = .scaleAspectFit + levelFailedStampView.alpha = 0 - view!.addSubview(levelPassedStampView) + /* XXX REMOVE ME + view!.addSubview(levelFailedStampView) - activeViews.append(levelPassedStampView) + activeViews.append(levelFailedStampView) + */ + return levelFailedStampView } - public func addHighScoreStamp() { + public func addHighScoreStamp() -> UIImageView { let highScoreStamp = UIImageView(image: UIImage(named: "high_score_narrow4")) highScoreStamp.center = view!.center highScoreStamp.center.y -= 70 highScoreStamp.contentMode = .scaleAspectFit + highScoreStamp.alpha = 0 + /* XXX REMOVE ME view!.addSubview(highScoreStamp) activeViews.append(highScoreStamp) + */ + return highScoreStamp } public func removeGameOverView() { From a1f183f795c982cf1a73348733671288af1a34b3 Mon Sep 17 00:00:00 2001 From: Gabriel Busto Date: Wed, 11 Sep 2019 20:49:20 -1000 Subject: [PATCH 2/2] Added screenshot for sharing levels win. Need to take a different screenshot to share --- Ballz1/Controllers/LevelsGameController.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Ballz1/Controllers/LevelsGameController.swift b/Ballz1/Controllers/LevelsGameController.swift index 7da8bc9..a2e76f4 100644 --- a/Ballz1/Controllers/LevelsGameController.swift +++ b/Ballz1/Controllers/LevelsGameController.swift @@ -276,7 +276,16 @@ class LevelsGameController: UIViewController, } @IBAction func gameOverShareButtonClicked(_ sender: Any) { - print("USER WANTS TO SHARE THIS!!!") + let layer = UIApplication.shared.keyWindow!.layer + let scale = UIScreen.main.scale + // Creates UIImage of same size as view + UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale); + layer.render(in: UIGraphicsGetCurrentContext()!) + let screenshot = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + + let activityViewController = UIActivityViewController(activityItems: [screenshot], applicationActivities: []) + self.present(activityViewController, animated: true, completion: nil) } @IBAction func gameOverNextButtonClicked(_ sender: Any) {