diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.pbxproj b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7057ea1 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.pbxproj @@ -0,0 +1,419 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + F3562F6E2353EAA800BD7068 /* FlagGame.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3562F6D2353EAA800BD7068 /* FlagGame.swift */; }; + F380E2F623580E630048B6F3 /* FlagButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F380E2F523580E630048B6F3 /* FlagButton.swift */; }; + F38E7AC123535BF600773357 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F38E7AC023535BF600773357 /* AppDelegate.swift */; }; + F38E7AC323535BF600773357 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F38E7AC223535BF600773357 /* SceneDelegate.swift */; }; + F38E7AC523535BF600773357 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F38E7AC423535BF600773357 /* MainView.swift */; }; + F38E7AC723535BF800773357 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F38E7AC623535BF800773357 /* Assets.xcassets */; }; + F38E7ACA23535BF800773357 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F38E7AC923535BF800773357 /* Preview Assets.xcassets */; }; + F38E7ACD23535BF800773357 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F38E7ACB23535BF800773357 /* LaunchScreen.storyboard */; }; + F3C87F18235386FB000EEBA2 /* CityFlag.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C87F17235386FB000EEBA2 /* CityFlag.swift */; }; + F3C87F1D2353BF15000EEBA2 /* FlagsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C87F1C2353BF15000EEBA2 /* FlagsStore.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + F3562F6D2353EAA800BD7068 /* FlagGame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagGame.swift; sourceTree = ""; }; + F380E2F523580E630048B6F3 /* FlagButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagButton.swift; sourceTree = ""; }; + F38E7ABD23535BF600773357 /* GuessTheFlag 2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "GuessTheFlag 2.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + F38E7AC023535BF600773357 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + F38E7AC223535BF600773357 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + F38E7AC423535BF600773357 /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; }; + F38E7AC623535BF800773357 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + F38E7AC923535BF800773357 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + F38E7ACC23535BF800773357 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + F38E7ACE23535BF800773357 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F3C87F17235386FB000EEBA2 /* CityFlag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CityFlag.swift; sourceTree = ""; }; + F3C87F1C2353BF15000EEBA2 /* FlagsStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagsStore.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F38E7ABA23535BF600773357 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + F380E2F423580E590048B6F3 /* Views */ = { + isa = PBXGroup; + children = ( + F380E2F523580E630048B6F3 /* FlagButton.swift */, + ); + path = Views; + sourceTree = ""; + }; + F38E7AB423535BF600773357 = { + isa = PBXGroup; + children = ( + F38E7ABF23535BF600773357 /* GuessTheFlag */, + F38E7ABE23535BF600773357 /* Products */, + ); + sourceTree = ""; + }; + F38E7ABE23535BF600773357 /* Products */ = { + isa = PBXGroup; + children = ( + F38E7ABD23535BF600773357 /* GuessTheFlag 2.app */, + ); + name = Products; + sourceTree = ""; + }; + F38E7ABF23535BF600773357 /* GuessTheFlag */ = { + isa = PBXGroup; + children = ( + F38E7ACE23535BF800773357 /* Info.plist */, + F38E7AC023535BF600773357 /* AppDelegate.swift */, + F38E7AC223535BF600773357 /* SceneDelegate.swift */, + F3C87F1A2353BED5000EEBA2 /* Data */, + F38E7ACB23535BF800773357 /* LaunchScreen.storyboard */, + F38E7AC823535BF800773357 /* Preview Content */, + F3C87F142353862D000EEBA2 /* Resources */, + F3C87F1523538657000EEBA2 /* Reusables */, + F3C87F1923538732000EEBA2 /* Scenes */, + ); + path = GuessTheFlag; + sourceTree = ""; + }; + F38E7AC823535BF800773357 /* Preview Content */ = { + isa = PBXGroup; + children = ( + F38E7AC923535BF800773357 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + F3C87F142353862D000EEBA2 /* Resources */ = { + isa = PBXGroup; + children = ( + F38E7AC623535BF800773357 /* Assets.xcassets */, + ); + path = Resources; + sourceTree = ""; + }; + F3C87F1523538657000EEBA2 /* Reusables */ = { + isa = PBXGroup; + children = ( + F380E2F423580E590048B6F3 /* Views */, + F3562F6D2353EAA800BD7068 /* FlagGame.swift */, + ); + path = Reusables; + sourceTree = ""; + }; + F3C87F162353865B000EEBA2 /* Models */ = { + isa = PBXGroup; + children = ( + F3C87F17235386FB000EEBA2 /* CityFlag.swift */, + ); + path = Models; + sourceTree = ""; + }; + F3C87F1923538732000EEBA2 /* Scenes */ = { + isa = PBXGroup; + children = ( + F38E7AC423535BF600773357 /* MainView.swift */, + ); + path = Scenes; + sourceTree = ""; + }; + F3C87F1A2353BED5000EEBA2 /* Data */ = { + isa = PBXGroup; + children = ( + F3C87F1B2353BEE6000EEBA2 /* Stores */, + F3C87F162353865B000EEBA2 /* Models */, + ); + path = Data; + sourceTree = ""; + }; + F3C87F1B2353BEE6000EEBA2 /* Stores */ = { + isa = PBXGroup; + children = ( + F3C87F1C2353BF15000EEBA2 /* FlagsStore.swift */, + ); + path = Stores; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + F38E7ABC23535BF600773357 /* GuessTheFlag 2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = F38E7AD123535BF800773357 /* Build configuration list for PBXNativeTarget "GuessTheFlag 2" */; + buildPhases = ( + F38E7AB923535BF600773357 /* Sources */, + F38E7ABA23535BF600773357 /* Frameworks */, + F38E7ABB23535BF600773357 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "GuessTheFlag 2"; + productName = GuessTheFlag; + productReference = F38E7ABD23535BF600773357 /* GuessTheFlag 2.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F38E7AB523535BF600773357 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1110; + LastUpgradeCheck = 1110; + ORGANIZATIONNAME = CypherPoet; + TargetAttributes = { + F38E7ABC23535BF600773357 = { + CreatedOnToolsVersion = 11.1; + }; + }; + }; + buildConfigurationList = F38E7AB823535BF600773357 /* Build configuration list for PBXProject "GuessTheFlag" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = F38E7AB423535BF600773357; + productRefGroup = F38E7ABE23535BF600773357 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + F38E7ABC23535BF600773357 /* GuessTheFlag 2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + F38E7ABB23535BF600773357 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F38E7ACD23535BF800773357 /* LaunchScreen.storyboard in Resources */, + F38E7ACA23535BF800773357 /* Preview Assets.xcassets in Resources */, + F38E7AC723535BF800773357 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F38E7AB923535BF600773357 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F380E2F623580E630048B6F3 /* FlagButton.swift in Sources */, + F3C87F1D2353BF15000EEBA2 /* FlagsStore.swift in Sources */, + F38E7AC123535BF600773357 /* AppDelegate.swift in Sources */, + F38E7AC323535BF600773357 /* SceneDelegate.swift in Sources */, + F3562F6E2353EAA800BD7068 /* FlagGame.swift in Sources */, + F38E7AC523535BF600773357 /* MainView.swift in Sources */, + F3C87F18235386FB000EEBA2 /* CityFlag.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + F38E7ACB23535BF800773357 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F38E7ACC23535BF800773357 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + F38E7ACF23535BF800773357 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + F38E7AD023535BF800773357 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + F38E7AD223535BF800773357 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"GuessTheFlag/Preview Content\""; + DEVELOPMENT_TEAM = QRXXH2RKAG; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = GuessTheFlag/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.cypherpoet.GuessTheFlag; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F38E7AD323535BF800773357 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"GuessTheFlag/Preview Content\""; + DEVELOPMENT_TEAM = QRXXH2RKAG; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = GuessTheFlag/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.cypherpoet.GuessTheFlag; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F38E7AB823535BF600773357 /* Build configuration list for PBXProject "GuessTheFlag" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F38E7ACF23535BF800773357 /* Debug */, + F38E7AD023535BF800773357 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F38E7AD123535BF800773357 /* Build configuration list for PBXNativeTarget "GuessTheFlag 2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F38E7AD223535BF800773357 /* Debug */, + F38E7AD323535BF800773357 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = F38E7AB523535BF600773357 /* Project object */; +} diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/xcshareddata/xcschemes/GuessTheFlag 2.xcscheme b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/xcshareddata/xcschemes/GuessTheFlag 2.xcscheme new file mode 100644 index 0000000..2bbe12a --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag.xcodeproj/xcshareddata/xcschemes/GuessTheFlag 2.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/AppDelegate.swift b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/AppDelegate.swift new file mode 100644 index 0000000..f786a67 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/AppDelegate.swift @@ -0,0 +1,37 @@ +// +// AppDelegate.swift +// GuessTheFlag +// +// Created by Brian Sipple on 10/13/19. +// Copyright © 2019 CypherPoet. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Base.lproj/LaunchScreen.storyboard b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Data/Models/CityFlag.swift b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Data/Models/CityFlag.swift new file mode 100644 index 0000000..b537fcd --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Data/Models/CityFlag.swift @@ -0,0 +1,34 @@ +// +// CityFlag.swift +// GuessTheFlag +// +// Created by CypherPoet on 10/13/19. +// ✌️ +// + +import Foundation + + +struct CityFlag: Identifiable { + let id = UUID() + + var cityName: String + var imageName: String +} + +extension CityFlag: Hashable {} + + +extension CityFlag { + static var amsterdam = CityFlag(cityName: "Amsterdam", imageName: "amsterdam") + static var berlin = CityFlag(cityName: "Berlin", imageName: "berlin") + static var chicago = CityFlag(cityName: "Chicago", imageName: "chicago") + static var denver = CityFlag(cityName: "Denver", imageName: "denver") + static var hongKong = CityFlag(cityName: "Hong-Kong", imageName: "hong-kong") + static var london = CityFlag(cityName: "London", imageName: "london") + static var losAngeles = CityFlag(cityName: "Los Angeles", imageName: "los-angeles") + static var paris = CityFlag(cityName: "Paris", imageName: "paris") + static var riga = CityFlag(cityName: "Riga", imageName: "riga") + static var toronto = CityFlag(cityName: "Toronto", imageName: "toronto") + static var washingtonDC = CityFlag(cityName: "Washington DC", imageName: "washington-dc") +} diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Data/Stores/FlagsStore.swift b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Data/Stores/FlagsStore.swift new file mode 100644 index 0000000..439cc05 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Data/Stores/FlagsStore.swift @@ -0,0 +1,36 @@ +// +// FlagsStore.swift +// GuessTheFlag +// +// Created by CypherPoet on 10/13/19. +// ✌️ +// + +import Foundation +import Combine + + +final class FlagsStore: ObservableObject { + @Published var flags: [CityFlag] + + init(flags: [CityFlag] = defaultFlags) { + self.flags = flags + } +} + + +extension FlagsStore { + static let defaultFlags: [CityFlag] = [ + .amsterdam, + .berlin, + .chicago, + .denver, + .hongKong, + .london, + .losAngeles, + .paris, + .riga, + .toronto, + .washingtonDC, + ] +} diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Info.plist b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Info.plist new file mode 100644 index 0000000..9742bf0 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Info.plist @@ -0,0 +1,60 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + + + + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Preview Content/Preview Assets.xcassets/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/Contents.json new file mode 100644 index 0000000..e0527f0 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "amsterdam.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "amsterdam@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "amsterdam@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam.png new file mode 100644 index 0000000..e180667 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam@2x.png new file mode 100644 index 0000000..c346c59 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam@3x.png new file mode 100644 index 0000000..b00a09e Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/amsterdam.imageset/amsterdam@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/Contents.json new file mode 100644 index 0000000..503270b --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "berlin.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "berlin@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "berlin@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin.png new file mode 100644 index 0000000..6734326 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin@2x.png new file mode 100644 index 0000000..54460e0 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin@3x.png new file mode 100644 index 0000000..34e51f0 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/berlin.imageset/berlin@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/Contents.json new file mode 100644 index 0000000..3c65eac --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "chicago.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "chicago@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "chicago@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago.png new file mode 100644 index 0000000..55fc8cf Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago@2x.png new file mode 100644 index 0000000..eac975b Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago@3x.png new file mode 100644 index 0000000..8a1a271 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/chicago.imageset/chicago@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/Contents.json new file mode 100644 index 0000000..fcb9b9d --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "denver.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "denver@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "denver@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver.png new file mode 100644 index 0000000..88ad4d9 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver@2x.png new file mode 100644 index 0000000..f3f5719 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver@3x.png new file mode 100644 index 0000000..2d82a90 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/denver.imageset/denver@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/Contents.json new file mode 100644 index 0000000..d0a798a --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "hong-kong.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "hong-kong@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "hong-kong@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong.png new file mode 100644 index 0000000..f121fba Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong@2x.png new file mode 100644 index 0000000..0bcf5d4 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong@3x.png new file mode 100644 index 0000000..5e9686a Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/hong-kong.imageset/hong-kong@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/Contents.json new file mode 100644 index 0000000..33eba29 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "london.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "london@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "london@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london.png new file mode 100644 index 0000000..63fb639 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london@2x.png new file mode 100644 index 0000000..8fa517e Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london@3x.png new file mode 100644 index 0000000..7394ae0 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/london.imageset/london@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/Contents.json new file mode 100644 index 0000000..ae90a47 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "los-angeles.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "los-angeles@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "los-angeles@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles.png new file mode 100644 index 0000000..ece38e2 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles@2x.png new file mode 100644 index 0000000..877cdd8 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles@3x.png new file mode 100644 index 0000000..e675277 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/los-angeles.imageset/los-angeles@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/Contents.json new file mode 100644 index 0000000..487dcf1 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "paris.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "paris@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "paris@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris.png new file mode 100644 index 0000000..5e0ee15 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris@2x.png new file mode 100644 index 0000000..a493d7e Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris@3x.png new file mode 100644 index 0000000..5d07d3a Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/paris.imageset/paris@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/Contents.json new file mode 100644 index 0000000..b3954ce --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "riga.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "riga@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "riga@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga.png new file mode 100644 index 0000000..3919626 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga@2x.png new file mode 100644 index 0000000..897884e Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga@3x.png new file mode 100644 index 0000000..1379162 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/riga.imageset/riga@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/Contents.json new file mode 100644 index 0000000..4e187a8 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "toronto.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "toronto@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "toronto@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto.png new file mode 100644 index 0000000..6242cac Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto@2x.png new file mode 100644 index 0000000..afaef66 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto@3x.png new file mode 100644 index 0000000..0f59bc9 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/toronto.imageset/toronto@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/Contents.json b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/Contents.json new file mode 100644 index 0000000..3061efb --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "washington-dc.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "washington-dc@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "washington-dc@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc.png new file mode 100644 index 0000000..7def2db Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc@2x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc@2x.png new file mode 100644 index 0000000..28c870b Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc@2x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc@3x.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc@3x.png new file mode 100644 index 0000000..78c1a79 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Resources/Assets.xcassets/washington-dc.imageset/washington-dc@3x.png differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Reusables/FlagGame.swift b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Reusables/FlagGame.swift new file mode 100644 index 0000000..465845f --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Reusables/FlagGame.swift @@ -0,0 +1,77 @@ +// +// FlagGame.swift +// GuessTheFlag +// +// Created by CypherPoet on 10/13/19. +// ✌️ +// + +import Combine +import SwiftUI + + +final class FlagGame: ObservableObject { + @ObservedObject var flagsStore = FlagsStore() + + @Published var currentRound: Int = -1 + @Published var currentScore: Int = -1 + @Published var flagChoices: [CityFlag] = [] + + @Published var previousChoice: CityFlag? + + @Published var flagToGuess: CityFlag! + @Published var latestChoice: CityFlag? = nil + @Published var latestChoiceWasCorrect = false + + + init() { + startNewGame() + } +} + + +// MARK: - Public Methods +extension FlagGame { + + /// - Parameter completionHandler: Returns a `Bool` indicating whether or not the + /// choice was correct. + func makeGuess( + with flag: CityFlag, + then completionHandler: ((Bool) -> Void) + ) { + latestChoice = flag + + if flag == flagToGuess { + currentScore += 1 + latestChoiceWasCorrect = true + completionHandler(true) + } else { + currentScore = max(0, currentScore - 3) + latestChoiceWasCorrect = false + completionHandler(false) + } + } + + + public func startNewGame() { + currentRound = 1 + currentScore = 0 + + computedNewFlagChoices() + } + + + public func incrementRound() { + currentRound += 1 + computedNewFlagChoices() + } +} + + +// MARK: - Private Helpers +extension FlagGame { + private func computedNewFlagChoices() { + flagChoices = Array(flagsStore.flags.shuffled()[0...2]) + flagToGuess = flagChoices.randomElement() + } +} diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Reusables/Views/FlagButton.swift b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Reusables/Views/FlagButton.swift new file mode 100644 index 0000000..71649b2 --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Reusables/Views/FlagButton.swift @@ -0,0 +1,38 @@ +// +// FlagButton.swift +// GuessTheFlag +// +// Created by CypherPoet on 10/16/19. +// ✌️ +// + +import SwiftUI + + +struct FlagButton: View { + let flag: CityFlag + let onTap: (() -> Void) + + var body: some View { + Button(action: onTap) { + Image(flag.imageName) + .renderingMode(.original) + .resizable() + .aspectRatio(1.75, contentMode: .fit) + .clipped() + .cornerRadius(42) + .shadow(color: .purple, radius: 9, x: 0, y: -1.3) + } + } +} + + +struct FlagButton_Previews: PreviewProvider { + + static var previews: some View { + FlagButton( + flag: CityFlag.amsterdam, + onTap: {} + ) + } +} diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/SceneDelegate.swift b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/SceneDelegate.swift new file mode 100644 index 0000000..23918ad --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/SceneDelegate.swift @@ -0,0 +1,69 @@ +// +// SceneDelegate.swift +// GuessTheFlag +// +// Created by Brian Sipple on 10/13/19. +// Copyright © 2019 CypherPoet. All rights reserved. +// + +import UIKit +import SwiftUI + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + + // Create the SwiftUI view that provides the window contents. + let contentView = MainView( + flagGame: FlagGame() + ) + + + // Use a UIHostingController as window root view controller. + if let windowScene = scene as? UIWindowScene { + let window = UIWindow(windowScene: windowScene) + + window.rootViewController = UIHostingController(rootView: contentView) + + self.window = window + window.makeKeyAndVisible() + } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Scenes/MainView.swift b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Scenes/MainView.swift new file mode 100644 index 0000000..341372f --- /dev/null +++ b/day-034/Challenges/Project2Refactor/GuessTheFlag/GuessTheFlag/Scenes/MainView.swift @@ -0,0 +1,154 @@ +// +// MainView.swift +// GuessTheFlag +// +// Created by Brian Sipple on 10/13/19. +// Copyright © 2019 CypherPoet. All rights reserved. +// + +import SwiftUI + +struct MainView: View { + @ObservedObject var flagGame: FlagGame + + @State private var isShowingAlert = false + @State private var answerWasCorrect = false + + + @State private var flagRotations: [Double] = [ + 0.0, + 0.0, + 0.0 + ] + + + var body: some View { + ZStack { + LinearGradient( + gradient: Gradient(colors: [.white, .blue, .gray]), + startPoint: .top, + endPoint: .bottom + ) + .edgesIgnoringSafeArea(.all) + + + VStack(spacing: 36) { + VStack { + Text("Tap the flag of:") + .font(.headline) + Text(flagGame.flagToGuess!.cityName) + .fontWeight(.black) + .font(.largeTitle) + } + .foregroundColor(.black) + + + ForEach(0 ..< flagGame.flagChoices.count) { index in + FlagButton( + flag: self.flagGame.flagChoices[index], + onTap: { + self.flagGame.makeGuess(with: self.flagGame.flagChoices[index]) { (wasCorrect) in + self.answerWasCorrect = wasCorrect + self.isShowingAlert = true + } + } + ) + .rotation3DEffect( + .radians(self.flagRotations[index]), + axis: (x: 0, y: 1, z: 0) + ) + .animation(.easeInOut(duration: 0.5)) + } + + + HStack(alignment: .firstTextBaseline) { + Text("Current Score:") + .font(.headline) + .fontWeight(.semibold) + + Text("\(flagGame.currentScore)") + .font(.title) + .fontWeight(.bold) + } + .foregroundColor(.yellow) + + + Spacer() + } + .padding() + } + .navigationBarTitle("City Flags") + .alert(isPresented: $isShowingAlert) { + Alert( + title: Text(self.alertTitle), + message: Text(self.alertMessage), + dismissButton: .default( + Text("Continue"), + action: { + if self.flagGame.latestChoiceWasCorrect { + self.performVictorySpin() + } else { + self.flagGame.incrementRound() + } + } + ) + ) + } + } +} + + +// MARK: Computeds +extension MainView { + private var alertTitle: String { answerWasCorrect ? "Correct 👏" : "Sorry" } + + + private var alertFeedbackLine: String { + guard + let latestChoice = flagGame.latestChoice, + !answerWasCorrect + else { return "" } + + return "That's the flag of \(latestChoice.cityName)\n" + } + + + private var alertMessage: String { + let scoreLine = "Your score is now \(flagGame.currentScore)" + + return "\(alertFeedbackLine)\(scoreLine)" + } +} + + +// MARK: - Private Helpers +extension MainView { + + func performVictorySpin() { + guard + let latestChoice = flagGame.latestChoice, + let indexToSpin = flagGame.flagChoices.firstIndex(of: latestChoice) + else { + fatalError("No flag found for spinning") + } + + let spinDuration = 0.4 + let spinAnimation = Animation.easeInOut(duration: spinDuration) + + withAnimation(spinAnimation) { + self.flagRotations[indexToSpin] += 2 * .pi + } + + DispatchQueue.main.asyncAfter(deadline: .now() + (spinDuration + 0.2)) { + self.flagGame.incrementRound() + } + } +} + + +struct MainView_Previews: PreviewProvider { + static var previews: some View { + MainView(flagGame: FlagGame()) + } +} + diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-1.gif b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-1.gif new file mode 100644 index 0000000..bfd2d92 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-1.gif differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-1.mp4 b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-1.mp4 new file mode 100644 index 0000000..14de6b9 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-1.mp4 differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-2.gif b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-2.gif new file mode 100644 index 0000000..9eeff7c Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-2.gif differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-2.mp4 b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-2.mp4 new file mode 100644 index 0000000..4c6725a Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/recording-2.mp4 differ diff --git a/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/screenshot-1.png b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/screenshot-1.png new file mode 100644 index 0000000..4eca683 Binary files /dev/null and b/day-034/Challenges/Project2Refactor/GuessTheFlag/Screenshots/screenshot-1.png differ diff --git a/day-034/README.md b/day-034/README.md new file mode 100644 index 0000000..cf38bf3 --- /dev/null +++ b/day-034/README.md @@ -0,0 +1,46 @@ +# Day 34: _Project 6: Animation_ (Part Three) + +_Follow along at https://www.hackingwithswift.com/100/swiftui/34_. + + +# 📒 Field Notes + +This day covers Part Three of _`Project 6: Animation`_ in the [100 Days of SwiftUI Challenge](https://www.hackingwithswift.com/100/swiftui/34). (Project 6 files can be found in the [directory for Part One](../day-032/).) + +In addition to recapping the material covered during the project's other days, Day 34 focuses on extending the project according to a set of challenges. + + +# 🥅 Challenges + +> Go back to the `Guess the Flag` project and add some animation. + + +## Challenge 1 + +> When you tap the correct flag, make it spin around 360 degrees on the Y axis. + +- 🔗 [Commit]() + + + +## Challenge 2 + +> Make the other two buttons fade out to 25% opacity. + +- 🔗 [Commit]() + + + +## Challenge 3 + +> If you tap on the wrong flag? Well, that’s down to you – get creative! + +- 🔗 [Commit]() + + + +# 📸 Screenshots + +
+ +