From 25a1ff8411053473bfd4c3c783c9e8283e1f7277 Mon Sep 17 00:00:00 2001 From: Max Hunt Date: Tue, 11 Jun 2019 15:10:05 +0100 Subject: [PATCH] Learnability Game --- Guibe.xcodeproj/project.pbxproj | 8 + Guibe/6_SideChoiceViewController.swift | 4 +- .../buttonMedSize.imageset/Contents.json | 23 +++ .../buttonMedSize-1.png | Bin 0 -> 13899 bytes .../buttonMedSize-2.png | Bin 0 -> 13899 bytes .../buttonMedSize.imageset/buttonMedSize.png | Bin 0 -> 13899 bytes Guibe/Base.lproj/Main.storyboard | 151 +++++++++++++++++- Guibe/GameLearnViewController.swift | 133 +++++++++++++++ Guibe/SecondGameLearnViewController.swift | 126 +++++++++++++++ 9 files changed, 437 insertions(+), 8 deletions(-) create mode 100644 Guibe/Assets.xcassets/buttonMedSize.imageset/Contents.json create mode 100644 Guibe/Assets.xcassets/buttonMedSize.imageset/buttonMedSize-1.png create mode 100644 Guibe/Assets.xcassets/buttonMedSize.imageset/buttonMedSize-2.png create mode 100644 Guibe/Assets.xcassets/buttonMedSize.imageset/buttonMedSize.png create mode 100644 Guibe/GameLearnViewController.swift create mode 100644 Guibe/SecondGameLearnViewController.swift diff --git a/Guibe.xcodeproj/project.pbxproj b/Guibe.xcodeproj/project.pbxproj index eb570f3..1382a6c 100644 --- a/Guibe.xcodeproj/project.pbxproj +++ b/Guibe.xcodeproj/project.pbxproj @@ -13,6 +13,8 @@ 506421C722A339B7001E8877 /* xright.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 506421C422A339B7001E8877 /* xright.mp3 */; }; 506421C922A33D87001E8877 /* InstructionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506421C822A33D87001E8877 /* InstructionsViewController.swift */; }; 506421CD22A33EA5001E8877 /* TechSpecsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506421CC22A33EA5001E8877 /* TechSpecsViewController.swift */; }; + 50969F5A22AFD57E0000C5ED /* GameLearnViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50969F5922AFD57E0000C5ED /* GameLearnViewController.swift */; }; + 50969F5E22AFEBE80000C5ED /* SecondGameLearnViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50969F5D22AFEBE80000C5ED /* SecondGameLearnViewController.swift */; }; 50A7ADD5229D6A4200D58743 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A7ADD4229D6A4200D58743 /* AppDelegate.swift */; }; 50A7ADD7229D6A4200D58743 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A7ADD6229D6A4200D58743 /* ViewController.swift */; }; 50A7ADDA229D6A4200D58743 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 50A7ADD8229D6A4200D58743 /* Main.storyboard */; }; @@ -40,6 +42,8 @@ 506421C422A339B7001E8877 /* xright.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = xright.mp3; sourceTree = ""; }; 506421C822A33D87001E8877 /* InstructionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstructionsViewController.swift; sourceTree = ""; }; 506421CC22A33EA5001E8877 /* TechSpecsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TechSpecsViewController.swift; sourceTree = ""; }; + 50969F5922AFD57E0000C5ED /* GameLearnViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameLearnViewController.swift; sourceTree = ""; }; + 50969F5D22AFEBE80000C5ED /* SecondGameLearnViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondGameLearnViewController.swift; sourceTree = ""; }; 50A7ADD1229D6A4200D58743 /* Guibe.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Guibe.app; sourceTree = BUILT_PRODUCTS_DIR; }; 50A7ADD4229D6A4200D58743 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 50A7ADD6229D6A4200D58743 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -105,6 +109,8 @@ 50A7ADD6229D6A4200D58743 /* ViewController.swift */, 50A7ADE6229D6C7100D58743 /* Assets.xcassets */, 50A7ADD8229D6A4200D58743 /* Main.storyboard */, + 50969F5922AFD57E0000C5ED /* GameLearnViewController.swift */, + 50969F5D22AFEBE80000C5ED /* SecondGameLearnViewController.swift */, 50E3DDF222AC5F9200E04D0B /* setupTextInstructionsViewController.swift */, 50B1485D22A46F7A008B16AF /* VideoInstrictionsViewController.swift */, 50B1485B22A46EBD008B16AF /* WrittenInstructionsViewController.swift */, @@ -225,7 +231,9 @@ 50A7ADFD229D766800D58743 /* 7_ReadyViewController.swift in Sources */, 506421CD22A33EA5001E8877 /* TechSpecsViewController.swift in Sources */, 50A7ADF9229D75C100D58743 /* 5_HandChoiceViewController.swift in Sources */, + 50969F5A22AFD57E0000C5ED /* GameLearnViewController.swift in Sources */, 50B1485E22A46F7A008B16AF /* VideoInstrictionsViewController.swift in Sources */, + 50969F5E22AFEBE80000C5ED /* SecondGameLearnViewController.swift in Sources */, 50E3DDF322AC5F9200E04D0B /* setupTextInstructionsViewController.swift in Sources */, 50B1485C22A46EBD008B16AF /* WrittenInstructionsViewController.swift in Sources */, 50A7ADD7229D6A4200D58743 /* ViewController.swift in Sources */, diff --git a/Guibe/6_SideChoiceViewController.swift b/Guibe/6_SideChoiceViewController.swift index 301a4a6..e4549f8 100644 --- a/Guibe/6_SideChoiceViewController.swift +++ b/Guibe/6_SideChoiceViewController.swift @@ -17,13 +17,13 @@ class S6deChoiceViewController: UIViewController { @IBAction func topBigPressed(_ sender: Any) { defaults.set(1, forKey: "bigSide") - let nextViewController = self.storyboard?.instantiateViewController(withIdentifier: "screen7") as! R7adyViewController + let nextViewController = self.storyboard?.instantiateViewController(withIdentifier: "screen6_5") as! GameLearnViewController nextViewController.modalTransitionStyle = .crossDissolve self.present(nextViewController, animated: true, completion: nil) } @IBAction func bottomBigPressed(_ sender: Any) { defaults.set(2, forKey: "bigSide") - let nextViewController = self.storyboard?.instantiateViewController(withIdentifier: "screen7") as! R7adyViewController + let nextViewController = self.storyboard?.instantiateViewController(withIdentifier: "screen6_5") as! GameLearnViewController nextViewController.modalTransitionStyle = .crossDissolve self.present(nextViewController, animated: true, completion: nil) } diff --git a/Guibe/Assets.xcassets/buttonMedSize.imageset/Contents.json b/Guibe/Assets.xcassets/buttonMedSize.imageset/Contents.json new file mode 100644 index 0000000..e6d1abd --- /dev/null +++ b/Guibe/Assets.xcassets/buttonMedSize.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "buttonMedSize.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "buttonMedSize-1.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "buttonMedSize-2.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Guibe/Assets.xcassets/buttonMedSize.imageset/buttonMedSize-1.png b/Guibe/Assets.xcassets/buttonMedSize.imageset/buttonMedSize-1.png new file mode 100644 index 0000000000000000000000000000000000000000..35d690cb06f4c43545844b975b385e35c4c582e8 GIT binary patch literal 13899 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -204,9 +267,8 @@ - - + @@ -744,7 +806,7 @@ + @@ -901,10 +976,10 @@ - + - To turn on your guibe, press the button on the **side of the bracelet**. Your Guibe bracelet will vibrate to let you know that the connection has been successful. + To turn on your guibe, press the button on the **side of the bracelet**. Your Guibe bracelet will vibrate to let you know that the connection has been successful. Go to the main screen to search for a destination. When ready, select ‘Begin Journey’. You will feel 3 buzzes: ready, steady, go! You are now ready to start the journey and can begin walking. @@ -916,7 +991,7 @@ You are almost set, just one more instruction! When you have arrived at your des The casing of your device serves as a portable charger. Charge the casing via the mains and simply slip the guibe onto the casing dock to charge it wirelessly. -And that’s all you need to know to follow the vibe! +And that’s all you need to know to follow the vibe! @@ -1062,11 +1137,75 @@ And that’s all you need to know to follow the vibe! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Guibe/GameLearnViewController.swift b/Guibe/GameLearnViewController.swift new file mode 100644 index 0000000..2a6af8e --- /dev/null +++ b/Guibe/GameLearnViewController.swift @@ -0,0 +1,133 @@ + +// +// GameLearnViewController.swift +// Guibe +// +// Created by Max Hunt on 11/06/2019. +// Copyright © 2019 8. All rights reserved. +// + +import UIKit +import AVKit + +class GameLearnViewController: UIViewController { + + @IBOutlet weak var mainButton: UIButton! + @IBOutlet weak var textLabel: UILabel! + @IBOutlet weak var progressBar: UIProgressView! + @IBOutlet weak var nextBtn: UIButton! + + @IBAction func buttonPressed(_ sender: Any) { + + } + @IBAction func nextBtnPressed(_ sender: Any) { + stepCounter += 1 + stepThrough(ptr: stepCounter) + } + + var stepCounter: Int = 0 + + + + override func viewDidLoad() { + super.viewDidLoad() + + textLabel.text = "Now we will .......\n........." + + + // Do any additional setup after loading the view. + } + + func stepThrough(ptr:Int) { + switch ptr { + case 1: + beginJourney() + case 2: + arrivedAtDestination() + case 3: + wrongDirection() + case 4: + turnRight() + case 5: + turnLeft() + case 6: + showDone() + case 7: + nextPage() + default: + return + } + } + + func beginJourney() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'begin journey'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(0.2, animated: true) + self.textLabel.accessibilityLabel = "This means begin journey" + self.mainButton.accessibilityLabel = "Try me" + } + + func arrivedAtDestination() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'arrived at destination'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(0.4, animated: true) + self.textLabel.accessibilityLabel = "This means arrived at destination" + self.mainButton.accessibilityLabel = "Try me" + } + + func wrongDirection() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'you're walking in the wrong direction'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(0.6, animated: true) + self.textLabel.accessibilityLabel = "This means you're walking in the wrong direction" + self.mainButton.accessibilityLabel = "Try me" + } + + func turnRight() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'turn right'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(0.8, animated: true) + self.textLabel.accessibilityLabel = "This means turn right" + self.mainButton.accessibilityLabel = "Try me" + } + + func turnLeft() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'begin journey'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(1.0, animated: true) + self.textLabel.accessibilityLabel = "This means turn left" + self.mainButton.accessibilityLabel = "Try me" + } + + func showDone() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "You are finished" + self.mainButton.alpha = 0.0 + self.progressBar.alpha = 0.0 + self.textLabel.accessibilityLabel = "You are finished" + self.mainButton.accessibilityLabel = "Try me" + } + + func nextPage() { + let nextViewController = self.storyboard?.instantiateViewController(withIdentifier: "screen7") as! R7adyViewController + nextViewController.modalTransitionStyle = .crossDissolve + self.present(nextViewController, animated: true, completion: nil) + } + +} + +extension UIView { + + func fadeTransition(_ duration:CFTimeInterval) { + let animation = CATransition() + animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut) + animation.type = CATransitionType.fade + animation.duration = duration + layer.add(animation, forKey: CATransitionType.fade.rawValue) + } +} diff --git a/Guibe/SecondGameLearnViewController.swift b/Guibe/SecondGameLearnViewController.swift new file mode 100644 index 0000000..8cabf47 --- /dev/null +++ b/Guibe/SecondGameLearnViewController.swift @@ -0,0 +1,126 @@ +// +// SecondGameLearnViewController.swift +// Guibe +// +// Created by Max Hunt on 11/06/2019. +// Copyright © 2019 8. All rights reserved. +// + +import UIKit + +class SecondGameLearnViewController: UIViewController { + @IBOutlet weak var textLabel: UILabel! + @IBOutlet weak var mainButton: UIButton! + @IBOutlet weak var nextBtn: UIButton! + @IBOutlet weak var progressBar: UIProgressView! + + @IBAction func mainBtnPressed(_ sender: Any) { + + } + + @IBAction func nextBtnPressed(_ sender: Any) { + stepCounter += 1 + stepThrough(ptr: stepCounter) + } + + var stepCounter: Int = 0 + + override func viewDidLoad() { + super.viewDidLoad() + + textLabel.text = "Now we will .......\n........." + // Do any additional setup after loading the view. + } + + + func stepThrough(ptr:Int) { + switch ptr { + case 1: + beginJourney() + case 2: + arrivedAtDestination() + case 3: + wrongDirection() + case 4: + turnRight() + case 5: + turnLeft() + case 6: + showDone() + case 7: + nextPage() + default: + return + } + } + + func beginJourney() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'begin journey'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(0.2, animated: true) + self.textLabel.accessibilityLabel = "This means begin journey" + self.mainButton.accessibilityLabel = "Try me" + } + + func arrivedAtDestination() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'arrived at destination'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(0.4, animated: true) + self.textLabel.accessibilityLabel = "This means arrived at destination" + self.mainButton.accessibilityLabel = "Try me" + } + + func wrongDirection() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'you're walking in the wrong direction'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(0.6, animated: true) + self.textLabel.accessibilityLabel = "This means you're walking in the wrong direction" + self.mainButton.accessibilityLabel = "Try me" + } + + func turnRight() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'turn right'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(0.8, animated: true) + self.textLabel.accessibilityLabel = "This means turn right" + self.mainButton.accessibilityLabel = "Try me" + } + + func turnLeft() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "This means \n'begin journey'" + self.mainButton.setTitle("Try me", for: .normal) + self.progressBar.setProgress(1.0, animated: true) + self.textLabel.accessibilityLabel = "This means turn left" + self.mainButton.accessibilityLabel = "Try me" + } + + func showDone() { + self.textLabel.fadeTransition(0.5) + self.textLabel.text = "You are finished" + self.mainButton.alpha = 0.0 + self.progressBar.alpha = 0.0 + self.textLabel.accessibilityLabel = "You are finished" + self.mainButton.accessibilityLabel = "Try me" + } + + func nextPage() { + self.dismiss(animated: true, completion: nil) + } + +} + +//extension UIView { +// +// func fadeTransition(_ duration:CFTimeInterval) { +// let animation = CATransition() +// animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut) +// animation.type = CATransitionType.fade +// animation.duration = duration +// layer.add(animation, forKey: CATransitionType.fade.rawValue) +// } +//}