From cf575423035f5a659cd7132c454c7dcec19d87a9 Mon Sep 17 00:00:00 2001 From: Bronson Date: Thu, 23 Apr 2020 00:20:26 -0700 Subject: [PATCH 1/2] Working on file tasks --- Contained/Contained.xcodeproj/project.pbxproj | 367 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 30918 bytes .../xcschemes/xcschememanagement.plist | 14 + Contained/Contained/AppDelegate.swift | 37 ++ .../AppIcon.appiconset/Contents.json | 98 +++++ .../Contained/Assets.xcassets/Contents.json | 6 + .../game_controller.imageset/Contents.json | 23 ++ .../game_controller.png | Bin 0 -> 360 bytes .../game_controller@2x.png | Bin 0 -> 654 bytes .../game_controller@3x.png | Bin 0 -> 971 bytes .../info.imageset/Contents.json | 23 ++ .../Assets.xcassets/info.imageset/info.png | Bin 0 -> 304 bytes .../Assets.xcassets/info.imageset/info@2x.png | Bin 0 -> 520 bytes .../Assets.xcassets/info.imageset/info@3x.png | Bin 0 -> 884 bytes .../settings.imageset/Contents.json | 23 ++ .../settings.imageset/settings.png | Bin 0 -> 418 bytes .../settings.imageset/settings@2x.png | Bin 0 -> 841 bytes .../settings.imageset/settings@3x.png | Bin 0 -> 1406 bytes .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../Contained/Base.lproj/Main.storyboard | 133 +++++++ Contained/Contained/GameViewController.swift | 43 ++ Contained/Contained/Info.plist | 62 +++ Contained/Contained/Info.storyboard | 132 +++++++ Contained/Contained/InfoViewController.swift | 33 ++ Contained/Contained/SceneDelegate.swift | 53 +++ Contained/Contained/Settings.swift | 17 + .../Contained/SettingsViewController.swift | 37 ++ Contained/Contained/ViewController.swift | 20 + 30 files changed, 1161 insertions(+) create mode 100644 Contained/Contained.xcodeproj/project.pbxproj create mode 100644 Contained/Contained.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Contained/Contained.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Contained/Contained.xcodeproj/project.xcworkspace/xcuserdata/bronson.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Contained/Contained.xcodeproj/xcuserdata/bronson.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Contained/Contained/AppDelegate.swift create mode 100644 Contained/Contained/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Contained/Contained/Assets.xcassets/Contents.json create mode 100644 Contained/Contained/Assets.xcassets/game_controller.imageset/Contents.json create mode 100644 Contained/Contained/Assets.xcassets/game_controller.imageset/game_controller.png create mode 100644 Contained/Contained/Assets.xcassets/game_controller.imageset/game_controller@2x.png create mode 100644 Contained/Contained/Assets.xcassets/game_controller.imageset/game_controller@3x.png create mode 100644 Contained/Contained/Assets.xcassets/info.imageset/Contents.json create mode 100644 Contained/Contained/Assets.xcassets/info.imageset/info.png create mode 100644 Contained/Contained/Assets.xcassets/info.imageset/info@2x.png create mode 100644 Contained/Contained/Assets.xcassets/info.imageset/info@3x.png create mode 100644 Contained/Contained/Assets.xcassets/settings.imageset/Contents.json create mode 100644 Contained/Contained/Assets.xcassets/settings.imageset/settings.png create mode 100644 Contained/Contained/Assets.xcassets/settings.imageset/settings@2x.png create mode 100644 Contained/Contained/Assets.xcassets/settings.imageset/settings@3x.png create mode 100644 Contained/Contained/Base.lproj/LaunchScreen.storyboard create mode 100644 Contained/Contained/Base.lproj/Main.storyboard create mode 100644 Contained/Contained/GameViewController.swift create mode 100644 Contained/Contained/Info.plist create mode 100644 Contained/Contained/Info.storyboard create mode 100644 Contained/Contained/InfoViewController.swift create mode 100644 Contained/Contained/SceneDelegate.swift create mode 100644 Contained/Contained/Settings.swift create mode 100644 Contained/Contained/SettingsViewController.swift create mode 100644 Contained/Contained/ViewController.swift diff --git a/Contained/Contained.xcodeproj/project.pbxproj b/Contained/Contained.xcodeproj/project.pbxproj new file mode 100644 index 00000000..f69da301 --- /dev/null +++ b/Contained/Contained.xcodeproj/project.pbxproj @@ -0,0 +1,367 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + E38E19A4245162B9000DAA94 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19A3245162B9000DAA94 /* AppDelegate.swift */; }; + E38E19A6245162B9000DAA94 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19A5245162B9000DAA94 /* SceneDelegate.swift */; }; + E38E19AB245162B9000DAA94 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E38E19A9245162B9000DAA94 /* Main.storyboard */; }; + E38E19AD245162BA000DAA94 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E38E19AC245162BA000DAA94 /* Assets.xcassets */; }; + E38E19B0245162BA000DAA94 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E38E19AE245162BA000DAA94 /* LaunchScreen.storyboard */; }; + E38E19B8245166E9000DAA94 /* Crab.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E38E19B7245166E9000DAA94 /* Crab.xcassets */; }; + E38E19BA24516703000DAA94 /* SKSpriteNode+Utility.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19B924516703000DAA94 /* SKSpriteNode+Utility.swift */; }; + E38E19BC24516734000DAA94 /* Info.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E38E19BB24516734000DAA94 /* Info.storyboard */; }; + E38E19BE24516775000DAA94 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19BD24516775000DAA94 /* Settings.swift */; }; + E38E19C0245170B2000DAA94 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19BF245170B2000DAA94 /* GameViewController.swift */; }; + E38E19C2245170C9000DAA94 /* InfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19C1245170C9000DAA94 /* InfoViewController.swift */; }; + E38E19C4245170ED000DAA94 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19C3245170ED000DAA94 /* SettingsViewController.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + E38E19A0245162B9000DAA94 /* Contained.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Contained.app; sourceTree = BUILT_PRODUCTS_DIR; }; + E38E19A3245162B9000DAA94 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + E38E19A5245162B9000DAA94 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + E38E19AA245162B9000DAA94 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + E38E19AC245162BA000DAA94 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + E38E19AF245162BA000DAA94 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + E38E19B1245162BA000DAA94 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E38E19B7245166E9000DAA94 /* Crab.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Crab.xcassets; path = ../../Crab.xcassets; sourceTree = ""; }; + E38E19B924516703000DAA94 /* SKSpriteNode+Utility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "SKSpriteNode+Utility.swift"; path = "../../SKSpriteNode+Utility.swift"; sourceTree = ""; }; + E38E19BB24516734000DAA94 /* Info.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Info.storyboard; sourceTree = ""; }; + E38E19BD24516775000DAA94 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = ""; }; + E38E19BF245170B2000DAA94 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; + E38E19C1245170C9000DAA94 /* InfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoViewController.swift; sourceTree = ""; }; + E38E19C3245170ED000DAA94 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + E38E199D245162B9000DAA94 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + E38E1997245162B9000DAA94 = { + isa = PBXGroup; + children = ( + E38E19A2245162B9000DAA94 /* Contained */, + E38E19A1245162B9000DAA94 /* Products */, + ); + sourceTree = ""; + }; + E38E19A1245162B9000DAA94 /* Products */ = { + isa = PBXGroup; + children = ( + E38E19A0245162B9000DAA94 /* Contained.app */, + ); + name = Products; + sourceTree = ""; + }; + E38E19A2245162B9000DAA94 /* Contained */ = { + isa = PBXGroup; + children = ( + E38E19A3245162B9000DAA94 /* AppDelegate.swift */, + E38E19A5245162B9000DAA94 /* SceneDelegate.swift */, + E38E19BB24516734000DAA94 /* Info.storyboard */, + E38E19A9245162B9000DAA94 /* Main.storyboard */, + E38E19B924516703000DAA94 /* SKSpriteNode+Utility.swift */, + E38E19B7245166E9000DAA94 /* Crab.xcassets */, + E38E19AC245162BA000DAA94 /* Assets.xcassets */, + E38E19AE245162BA000DAA94 /* LaunchScreen.storyboard */, + E38E19B1245162BA000DAA94 /* Info.plist */, + E38E19BD24516775000DAA94 /* Settings.swift */, + E38E19BF245170B2000DAA94 /* GameViewController.swift */, + E38E19C1245170C9000DAA94 /* InfoViewController.swift */, + E38E19C3245170ED000DAA94 /* SettingsViewController.swift */, + ); + path = Contained; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + E38E199F245162B9000DAA94 /* Contained */ = { + isa = PBXNativeTarget; + buildConfigurationList = E38E19B4245162BA000DAA94 /* Build configuration list for PBXNativeTarget "Contained" */; + buildPhases = ( + E38E199C245162B9000DAA94 /* Sources */, + E38E199D245162B9000DAA94 /* Frameworks */, + E38E199E245162B9000DAA94 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Contained; + productName = Contained; + productReference = E38E19A0245162B9000DAA94 /* Contained.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + E38E1998245162B9000DAA94 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1140; + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = "Bronson Mullens"; + TargetAttributes = { + E38E199F245162B9000DAA94 = { + CreatedOnToolsVersion = 11.4.1; + }; + }; + }; + buildConfigurationList = E38E199B245162B9000DAA94 /* Build configuration list for PBXProject "Contained" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = E38E1997245162B9000DAA94; + productRefGroup = E38E19A1245162B9000DAA94 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + E38E199F245162B9000DAA94 /* Contained */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + E38E199E245162B9000DAA94 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E38E19B0245162BA000DAA94 /* LaunchScreen.storyboard in Resources */, + E38E19B8245166E9000DAA94 /* Crab.xcassets in Resources */, + E38E19AD245162BA000DAA94 /* Assets.xcassets in Resources */, + E38E19BC24516734000DAA94 /* Info.storyboard in Resources */, + E38E19AB245162B9000DAA94 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + E38E199C245162B9000DAA94 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E38E19C0245170B2000DAA94 /* GameViewController.swift in Sources */, + E38E19BA24516703000DAA94 /* SKSpriteNode+Utility.swift in Sources */, + E38E19C4245170ED000DAA94 /* SettingsViewController.swift in Sources */, + E38E19A4245162B9000DAA94 /* AppDelegate.swift in Sources */, + E38E19BE24516775000DAA94 /* Settings.swift in Sources */, + E38E19C2245170C9000DAA94 /* InfoViewController.swift in Sources */, + E38E19A6245162B9000DAA94 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + E38E19A9245162B9000DAA94 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E38E19AA245162B9000DAA94 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + E38E19AE245162BA000DAA94 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E38E19AF245162BA000DAA94 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + E38E19B2245162BA000DAA94 /* 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.4; + 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; + }; + E38E19B3245162BA000DAA94 /* 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.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + E38E19B5245162BA000DAA94 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = JA7B9846WV; + INFOPLIST_FILE = Contained/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.bronsonmullens.Contained; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + E38E19B6245162BA000DAA94 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = JA7B9846WV; + INFOPLIST_FILE = Contained/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.bronsonmullens.Contained; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + E38E199B245162B9000DAA94 /* Build configuration list for PBXProject "Contained" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E38E19B2245162BA000DAA94 /* Debug */, + E38E19B3245162BA000DAA94 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E38E19B4245162BA000DAA94 /* Build configuration list for PBXNativeTarget "Contained" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E38E19B5245162BA000DAA94 /* Debug */, + E38E19B6245162BA000DAA94 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = E38E1998245162B9000DAA94 /* Project object */; +} diff --git a/Contained/Contained.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Contained/Contained.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..078aecf1 --- /dev/null +++ b/Contained/Contained.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Contained/Contained.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Contained/Contained.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Contained/Contained.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Contained/Contained.xcodeproj/project.xcworkspace/xcuserdata/bronson.xcuserdatad/UserInterfaceState.xcuserstate b/Contained/Contained.xcodeproj/project.xcworkspace/xcuserdata/bronson.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..28b45d037f168cf2cf92e9272458a28ef477e78b GIT binary patch literal 30918 zcmeIbcYIUz{y%=+XLg2kPug_PbWdjYprtF_EltxTZ31mmlavjfgNOqJWQn3e%SIGI zK|y4RfP%^v0g)ja6$gll@_U_}qyzBY`}y8`e}7&22t9f4@qEAEuk(IAU#~WGv}z5; zn3&@j!f=ehNQ}a0jKOTG1IMcM2Cc5WCQzYQYP9gJJkY4?s1DRMjaDm-21g9dSSA+_ zD3TSZC#Y5F=0ry@E6ln=W>gr}EZX3JS7WxA9p;9)V;)#E7K6oNaacT-fF)u{STdG^ zrDEAw4wj4MVfol7Oo^$m(O5gC!wi@a8;?!EreIUCY1mWPGuX4(EbIkrCAJD%jjh4f zV(YLsu=UuR*jv~J>>X?y_5rp7+lhUI?ZZCDzQ7J+$FSqr3G5_x4*Lc>k6pt4!0uyz zVt-)|5QY%K5rIfVA!{T?4#*LCA}{2P1|lC6j6%?Gl!nq#2FgTPC>!OVT$G3M(MVK| z>d`3FfaItJX%LGzGz~q4rlY6P4D<|o7CncaN3+pFv{06KO;`kwIhPZ7>Bs*P{$8QDd? zL9Qp?B;O+6C%2N@$i3vp~L>JQ)w483F6?7A=q}%9rdOSUWo=7jIU#4H7 zm(Z`$uhFm5OX+2F7u`)Sr&rJ`={M-N>234}^mck5y`Mfne?osse@-8zPts@UujwoF z4f-bi1AUwRg}y`oM*mL##o!FVkc<=K&UiDyOb8RogfUVkmPu!FnUPE>Q^C|QwM+xk z#3-3b%w%Q?GnILgVHu8@#yrJLXP#!BW9Bjom{*zCn3c>bW*zeuvyJ(H+0J~(>|j1+ z4l;+B&zR4d40E2j!Q5o-R0OtnwzeL_>@g8G025?=iEhjpb74si&1RG3V(0v<>?)mpjG;rJRA=dwoo(uNqg))Ak(3pm zke-+zjZ02QlqRI4$4fI}6SAerDOpK5shJsxIZ5f3nmw^VENU(0g?VEGF(1qqlVEH7fu(qrnYrhr?!h*37EEEgF!m$V}5|gqbb^wP8I8?-;1`a*RAr`hO z4n4(YKliownU*NLL!QV_~mW$;F;o>Sje}t1(-pHR|-H9o&$k(^r%g8tP5S z)H0<;-KK^Dgs)|t?OAGrQQNLC!Z{%q#}q0I#!OvXN2?kNEa8t2gAqC|WXn((;FRF2 z(;6p~sXKIf7?A;%!Ku==t90WG&MHXG?y2vksEW)U9y#s8v15 z-OJQUNF%h_QW)Q4Ys)we!iHl}E3m=X5Ns$mj1{vEtRw5R0!zcvu?#Geb!HE<7daHh zkBqchsZ*(=VD<{M#;E>J-jM`R!N0ecl zw%K?TQ)A6o3#O?R7F)ZbOvv>)29k8P)~Q%h^~q(e#tVrm#cVVemYh-wi!`w>n`fj53(EU(;sq z{b-~{H*Tc1UE8MUkc<5u8_n;UnL2otP_)4A>HF9;`R!x125nQT8V-X;OKDY1&~+NK z$HTe8znnmtM@up4T3TAws!R=kfPE3nPN4;yd(Nf2Yg-nSk5 z5cXOAES%7dZO61$mOXtJwi|O@wv0^{((T1Qt}l{hY2kF$wJY?HcrT{4q}`8win(@U z2e41rRCZ7|b`U$n4rYh2$#s0E^4nGF@oGbZ$}FW6s@q$P8liDVuuaR@1P5Y!K$;jc z{S%XxQoqDb^QE4`zGBnZ^gg9lG(&$MEsx*IFJKqtVy7b6$WEgICb+k~%OR>yi@(Kw z;4ys}yMkTCu3^`)8`w?k7WN(XJ)6a5vpH-oo5$v}BiI7AkR7=WyWNB7JJ?<9SNQfD zThxQ;GPZ)Pgl|>+|9MO!8ZeC*w%CkmWCNH+w#bhEuqAA%>60LK7E@;MASdK% zf+TVQNXh^_$Q>YA&L%$uLkA)`AT87kJ!Hx4i~LQ{Lw*3g>c7uzNgs;h0Zu3kg`)@* ziKHkBMWYxLi{jW?wvMf5N3jj8oNZ(kY!jNE(Ti{gm*e%jBxfQ5dfKnAesf7naEkH^0D3q+@0t6soa5H2&J5eK2 z3P5TCAdUI^yq5G@WaNP~8jV4%s13Cv9qK?&AU!g$ZEQQMV>{RM z0n$V>kfyTZdVn<145TUl1JZv7NHcjL&0@z}fHa5Sm*!%d`42k*7BT-x5ZhX&_a*d- z0Hv1!N|Sgvyb4g7{3w*DIhHJ4XoY~F<$$26f1kyYejVD(Bj^pZ9=(a)LL1QAXd~K$ z-a+rOEX%Re*r(X(?9=QF_8InB_PKRvOAmrRK-*1Q(N6aH9t6F>&NXdCFa8ff{~ZJ! z;t}*2JJW)o!#skH0D|Dd&VsS$KM7(7%k-W?X9NVD1_aIK;qWyeXwIVuLJ`Uxo_GR`J zb_x3```S8muLnwhqQB4sYzdCo*L$GU&8}ou!MD}_gVKKmO1KE1gb!esnxTX{0+etk z+?oHd%h)c{Cqe8f_A*Z}?uGl9z=RJ3Ff9i_;1U4SibugjW(A~0nS~_Wk~;(sH^B)H z130bu``niFG5BDB6CR7l;qiC^o`@&m$#@E$iVtGfv2U>J**Dp@*bVI4>_&DI`_4Li zhy_k~I-bGH+;}$oZV#N^XFo8>+}r;Lr~eL|%6K@**v%F=Rq}AE!mIfYyM=wv^hppq zisLO4EXSJ!I4J;5TX{gJ08ZN;g%dF{AT6ff-h_|F+XOJR0+>Gh`@ELA4ER(YOh&vD zAB&H}$Kw<5iTEUZGCqaf$?jrzvwPT&*uCt>>^^osdte>@WDl683xX2c2%j7P@mkU7Z1|S{c!LSm5^x308LNZI1 zb@-bCe%1qizWDnrmh|u7ASQL;@3Kd_@Gb1Iepk=<2c~40l{ zOT9brJy_Iod?&sO-_0IpPp~JK;~(LB@sHUr+4JlL9)FSjF7nN~60=sqqJJpVDNQO7 zxDt9?@)EsztX9`)C|BrP)MnL1Ca+DBi-R9ix?BkBo7!|egCFFl?GSs4O*oE!fgi?? zU<2@@_%Zwg{6tO9OUiR?s@gMn~{ea(QFR_=q@t^RY z*{d9K?GLVdCUAW#7uWuq;ELw;T~Vz(x}rydrX$MGqr>T=IKclj)ptcMF8+7xldfZ4@DdtBr=6QyPT`caDpssVn9L3s}5^*x;D93+>-zlirNmf zAz-*!J`WgvSU3z#i;nPzMMng%zpx3G)&vt_u(=T-L@0ZQz1vNM6A|pM>^(NQ!lWV| zrPQ@IYg;04POpWonQCm%7R#b~Ym|#a zOe-=fKLhk}kWJRvWSr2Uj^dMPOEkK6b&@<*+pg5e#bNzZg2u>PexLH93bid7xIXvq zpSHNS0Z}EO4%I8Ppw9!1I+4u}U=D|HHlen*G*w!WE-f9MZ0Y+5q7Zg|0yNiT7cr7U z6puy^e$oosb>rHLJB|FMH4lp_t;(ngNb5LnnjK62GNJ~HT1Ci+a-xE$B&vvN4lx|E z;*d3mY&c}gA-h#XEm23*6QhU*Yzc?#IV9o`sLP!>&oR~Hy-+GRk^OCkXL1zA)f_M4-^!T`B~+*UMu3pN2a$ziJ&uA z_f`Y=6DA`=p|2FQ9|6Np@4G$iQr-&C_)bbnjERbkNlr|PjZck9NllKAkCY@tC8xy1 z#l$5gCdZ}3CnY5%PZ0)qG@RbV7^0PEBicD6=8yx29698~k9XxnX>*x$oGzudO`9mq zER>dN6t(*7eCfzSY3o>HZ9#LTw7FcGs*14;XeTjN*hhQTfhA@l!T#;e!V%M8XPHhs z%^^1q4dk~L9}fBU?8d~i#H`0G;n~C-_D2r6bI60u=&4ZX)_fi}3pnK2yYgNl_zRof zmA8a=l|x<}^5!`h|9qV-BUb*4>r80DdXqZD()|s@#)pw=iP}tT{}({`A+dwlN$eta z^B|OP$d5z*917u3C=bGb;g{xU$6cr|=I1{#Au1&%F*Y$NH8mk2F+MppDN>S>7?qNe zl9Zg1k{p|ok{TNuZ=V1C{QMsvJ|R9O4ss}fLxCI$;!rTm{}ZFfN^@$ZMPn7UZKLC* z={jkQOjFz1SuD+JlD4Kd)mErdq!TiwM!mt(m!rh7znT9piPLbP5~ql-I26vI$Zp~c zah5|-9Lnr>rVaq9o+DAg;P`jjUe zn%9Y+fHFbcAZ`-3i0_E+i64mD1OPLdLopnRdZnQ*O>OeQ3hqJRtXwLsRDRCkXI;4$`d=yK?7Q0-^l?D zA5X!7M5A~e>{!@DP4OmllN3oW<4}r8bR(@uYfvbf^>m=ZUk)KQm=;JE@I^>(C!`0_ zEk7ea)66+3HkaGm@PM?|U43_G(t&jBCzz2gB%J15q$`Jpb&;_2O}gg+>hT>4P)!QM zlw}a=^d<*F8`Fd~+K|58e4`qK{_^9&_stAk(w_|IUr#U@{ePKMGKP#Li22xHok_rwLbEt$vP*xd-psaEZRdA@1Lse@@ zC6LgTkj-QZsUfxGXbg6oYG9$k`l#VhEr;qjRL`MN5R_bFG`;x9vI=UohU`{t3$N`5 zp-%`F4#Ipxl@@44YW}52+>^diq1P(-li0a$TFdJeyblP$CN8oOxL6=s_5=#$<|x{< ztrO&8m%at?!Y!;dp3(JCBVcTldSJ7`3y8LZmyHbCwoV{B>GZMjQ3*gudni;c9;O;= zRG9=T=|gdYl9RGy;^N~IrP+ze>C%Mk)GTRwR$`7cJ~cTfJ~bgd754Ya@hM62q=ZUA z5~~${#l}UZSSDu*$-%)%P9>itfzl`EP$P#F%gJfvQ{;3GHF0PvhuZj!CI)7?Ki$qu z%>!XX*4fquGywqsGIa}2$%27)emoP)293xYAfKUuG2J-AbPAz0LEvkStE7PV0gmg&|j!7O} zB;Dky$Mt13xrU#IF&t_&%|k$%P!3iqsW6fIEMu{OeCILwv1R0DatjORg^oiVY)09j z$5j0Rx$`ku33qZgxrY~@^c*N8Gt4bNO74UGXg_&?C+w+!8CdM#x~9p(`bRiHQZ)1b z&i1#mF4yaHMxgqO{cY`>oPB&H;Ste;hYTGSG(5AQaAZ+&MNMs8gR;3}-1x~)nz^<1 zq5)zDN1*MQM_l0a!GV)*ge|G5)2KE8r`C@pYGj>CrCJTgz%dtBk(=kh$1rib-91>6 zrMkVmffwt|x>Od)a)7A^DKmAgI{gVh|A0VIP;f|S7{ti56V*^}b55(G#lTZ$)If;P zb^tmclHU^p(t?Evb9hz^99xFn7aX=G^4#N+ zROD9}fJViixO#ZE?vupbQi?fAPt;LYQCdbjGZILmKVwLvp~uMfeOksol9bCpy>J* zJ2+@C%s~V1_^mh~v<C{)J~s1q%k!?Sjt)l|k8tVQ2`3G1rtGdLxEe2SRwjIAaI@oCnX& zW6H}i;kh2etnAErAsF+`1(vH`tCZvdwM_#2%{GN3E-Fp}7e&1A&L{cL{%dRPy_~!%+BU~qH%B$en2cAc?Hx(7b^B{QEC=Hpl@C=+LqFbZR z=jRE=jQCV*%rA#$sE_zwuPfuzhhrEyM5WHk7Q)HqF}ec24gL`Ru3@Z<4>z@Wq9&7X zC)7or9IY5p0?)9Ck-w;0bNTd84&~WlEaA(9?^ITMYY|^>8ayvj8%+I$@6<`7rktO% zI1HoxjrwvvFSLyY`f5%-Jm|3_~r}3i&Ld60jyyoAdEy@K$AfF23ArrgD|$`l6t| zOrMolC&X)jYS<3{OMota-V`z(+Sdl(Ga{ESQlOF2D^xRASdG)*1c4@zPEAER66H-)<-~#HRj)EQ2IqEnjf#2U! zC#Y-ibcQ+$KVS8!2>_`JaV+~zZOC*2oR8^G==bU(F#BOygb^@-Z>M>d8h-Kum8dA4U|Ewtw<=cT93})~-)5 z$$IhD1EyL`qkV#Wzy6rr{>jblb3Hpc8dgpIL*3CE%g=-QnWDQz*tE!)w_|R_tcY13 z^K;C(-V`xk#(WoZBBl#sZW8l}&BTYqR$?1*2$R6KZNzS3tLbSyu^oOk_T=l2aA6(w zM>vldr5VwDAC2ZU*BASJ*Em03meJzVTV`ssY1AH_iN1*8XY5~VQQva_Gk!a>ij2_bz-Xa&2T zcE~Xf+M$PW?M+ZX@qspw@ruYOmp~{l>oMsv1C5%OvRXlOow}sH1jjRTMdC9 zeyh=Fau`@!rtte%-yZNURi^RcceKa1zVFIV(}U;`I-3qLm2K)Bods5iIhcfw z<-_S{dIUVD@~MpK@gRF(Sf;LHf}Yn*NI+}Rs+Q!pE2APMaWS!Qy74j-p9aHzE;Y$Q z$n}u2Q$JP+Bl%wxW&`q+GuSNqU;%JiOQBcEU_+J$*2*KmgsL2Dq#B?f8kk8vjO=8L z!)9PJ!3bj^SXeB@R)Br-Ti7P-Jz(wc28-l_V2^wPI|Jv*WuUU(2A29C2q6a90~Oi> z`Jy0TCdZ)^Gz_eb3sD)W0d8sw5KKGKWUw!uiRPhKP#4$|Z$w+sZm=Leg1$l*&~@N^ z{SJ1+c0eN<2$sRoK-ftKo8WS=0&W58---Biu=`z%cjN2vE%ZNl)Ml_gJpuNncWIh-h51Q_ zd8?sE)05~~U?IAJ-bEjwFVS}xhVft`n4wHDqhO584CZBKJ+qTJ%3NmdS=n0oTE$uA zSk+p!TTQcCWVOy}ht*N5t5$zli>-sK2U!&w=E*f`jP*bKEP zw;652*(|ns%jRR7vo=55+S>ZtrrMU;YHeBD#kOzT9Fy_8}(g(%mk!l-Fc??rtd9T;63 z{bKa~=)YnTV_M;KI}_^|J0f;k?6%mS;=<#UaZBQk$J@u}#6KDTe*BLK5ee#q*Aq@9 zIwg)wd?s;E;-5*$N&2L>lCCEQCO0O(n*3#ob4p3dtds+(RBA@*ld0QNe;brE$T(=z zpdSWH2ag%NZt%4sAw$$dRt&i`)PJaAXxGs5!z9BRhbb2u1!T92GKZ z{HRYFJR4dYK9moTE9CDqQjJxO>l*JXiWS|8J5BjbuQuIQW-4D&-c+Tj7O1YPhpOkP zuQm^Dp4WV>WoXO%mg}0~nnjvh+Dz>$+8;;fjb1wX*D=LoR*!kmTGhIt&8n@jZEL$@ z`2pBVJS!Y6L)3-qfD$S}(AzR?+8Fb{Qxc0S#CVeGK6OUB+C zS2^yT@ebqL#~+#yKH<3uS10C7TseuHq@1*8vfpHG@`WksQ@W<2sZCS&JQ?uh^d~Qa z0nr-Hh8x3uHZ5k_ylKBYRrS=i=>w;;(=R=p`}7+#L^Jd=zI?#UO2zqn?e!@P;} zF3le~f6D^Ng69|fvQWP8lSK)OmcC^3Qs+zO7Z)ym|K-4!=e~UZ70oLrmSim1@T&K# z&%OHVYpU0dzMl5_TT2Hnow@Y)W!hz@x^la=bO(1YT23z?yZp+E$`$)prmS4M%5&As zRe!E-UwwW}*_yp;lh>|Y=e=&u8~7WYZ(Ltrzy9!>S#Q4omh`Qz4XztzzKy-z`Sy*C zjT=vHD%iB=os@UpdN=6ZS2sItetrwuGGWW@_cZUFf4}DaBU?vo-Lq}*w#^?zeXx4F z-}WURx_mfihs}=ZJ09$uxbx1gj$OBQx9q;ON51FGN7Wx4-&?x(^N$NYKCmxm-$(n? z_wPI~^uYE{27R*i)09u&JD7BE%b~nM~5HX zeJtzPzT^4F51uGGapYvh$x~m}e|i3t>eRKbTEF`7^w`sX0O5!_`~279uNR&3KG*$C z*f$%_C!PQBLe_;t7iAaETvA@T`K{sG`+PECLDQEczAQM}OfMj)SKWJ6wc|frjjYyMd>X zWbh**15YBgxEgN<&gNA78So#n#N;nzD}DrggWSSzg9Kqk*n!`VI3T4A11}$iz_(Bk z?Zi{W43Hsa5wnT8#LM8rV+FAuq=~nQO)fqz0WL8v@h)jD*)AhpN?a;jM!Uf65&sWI z!f)&;^KbJnmuValjKIlH$%CVM?g_Kt7JE4a9m3#(M#g`$T&jOgo&d!=C>RctN63XB zn;bW(8OCyG9B3LiG@e5fR*^4ZzmliOuYk1tD`*{9&|gjD&}85%SMs_C|9`9`;O{;E zX(DJ7BntV*CGm-5#tFRY>z|}72MV7lVk~ermQ}GQ!v-3SU zw+nM*i9Sl4pU7W8HOU8dk#{)6S@fUxdXoxy?~`+vK|bNj18mbetb{@oP7xFd_go{1 zuZUBWH7nr|=u2jB=vfXu5BK+;z$7s731;y;j~?|tB@)#8PyhdCz)d*`RX+0{uu%UO zdSq)MKVX5<-ZQlJ^|%z#1vlJkZh z-Ekj>4*#HXf1&ah{>$`A6N!TgqNG^VYATotp+c!JDjZ%<09l}(oXepXIW&($^Em{B zqJ^ueC~OH8L&Z{Iyb_y3i+Hv5OB`AZsdybWPbdV3E+!WxIeO3%2?R+Ypj^=etgR}Z zt7tM?uhJSdGSI8Hsv!o*JA6)yD;Ob%yhv6CYf=ZylU7*Qunq8g7^sf>CWXwsBno*- zc6Lf^Vot0yJ3BE;nh=wjDosyJPL^h7W+lX>B&Wy6ro@9Oyk)~t_teJ#NUX%aAwl4GVsN+!i7#KZvmC?iVV z!ybNmcupN8%Qt|hGT0m|^7FGm2bFK&dAWkFN2@m&ArokCfTap9O-yubULOe2J*5_! zd=D5P+O!#uR2asXR8B&jJwu+KB~+WM?=aN^Ey!1mhkaH^SJcT9Wm&`$ENx}Y;?}Sx zNR|-~U@6u?j5&y`Hi#WTTNxe!%EsiO!-i*r8nr|ws7}GhK$0XjCPl)}f+RU9RT2X~ zu?Yz=l9c3RNhP#(P(1Jw-2cuc1_&d4Q6@C01WpMEweYKZad#{lE=&@V_|xX`{*Sui zS*xx@a6%+L1{AbGgNH!XFg(DSP`3-iRZ)?jC5S>MIjC89ws)Q+5-*vE>Wca`as}{Wez66Kh-A`GRD?tT6J~dYdBnG}5XKJnu>%&-dY}Q4LfR zusJ9>)kp!us+&X0IkaLqrKA)T&|_A@7Y^;?yXI|XSPRandU_OPYG4oBUajhh0Y1Us zWPt@K5brJXF^1BE;7qkrZB#p@qdF*H?yTa_Y7VX8&{__y-(}V|XpN9*A2&95QiffHeReH?^`H*y#qInQl7ufL7#|m66-i zUVh(!I9}^*E)FKLxV?1(I2vn*6E&k%ryOJ8k7Dyt3$%G7&p#BVoKI%Y6Y0!iq_T% zmU1#nDg<=#&DDVCFTJ|moX5vfw#B|e7$p!G%nZ>0NRZhHbkKHVp`sJ$`Z8h2%XpHg z8f*aItTTz;)B=+3rWR6*IP?yO-UW(hFPW)JeJL4w%o>8`OI0O$ugq zD~CSh&`u8Rf;S0jBeei!VhOaY{Ju<=k+b-9Mej3m|)yHJRI#}sP` z+$RL?HU$FGfervLlo*7mmNe`1lAakH=JezP;h)g>L)2%2^x1C=dwT*d_+XU+d`wm% z-PGrNM|f%VUrJxkA5f`@s>JxXlo;S+_MUlh$*~|R#>P#t(EdPS3q0lds< zmFCSOSFh{r0MQ<3JFSWiSkW01c$ap-OX3@0w)zt);1363~F6w&@9p>#B_$p2NsUh9Kmtoo1exmsIaq4Fd9qFR(aOfzT(YwGc ziGHK*16QB=o%(}A$2fGHfBfC_c#O>`c_cke&{R(gXqrPOS&M}ZZB5(u)JNNK=*u3X z4tfCXz(+wH$Gd1p4xQ?aa-n&WH|@%yuewY%n~sdXlTyviroCw}fj18X?aQGvz0L5a z`_sGWU^oUAe<=)|CfxyKF0H4 z&5kG^_9OZDCIYzI;pF6ry_SJap~3pU8&s%+IP@)tE_d^5kY9JE^N&B+4E*t02!2Ch z5tzxnThm>j*Xt>;C^Qg{ZP#m`J8hpu*EL2$Oh#CY}OG@s?X%p^$ZJ&nqz zK}hVPK`gx9MHh1D2A|P^C&62UEYkuv?frBKId?f-N|(_x4&CI?Z4Uj^duc^i(zTfD za=MDHrfWC^3kwV$zh6#eVL|jL5IOnN{s$n&L)pD&Lp}ek_w`r|U-?FkRJ6c3-l+nr z=o5l?Yw4$o);z9~5l{*6ftT@>{K$estCxG^fUjZ>_v7#!0Wc1NRHFv^V~;c}5hUM{;9yn@3VBlu@VI#zy6`e27sm-Z zcIBtMD2iF+0KS^FDI-wR8nCSU2Q{<%Pgv_zX<5iA0*6Ew+O zrKur8D?tl>UWt6 zg8KmT%onPgjpe#Bo~|Lrj?o9{L)ZW`5ZgwB1mge~HN4!&i-4A(O~8M^5sn6__#WxS5j#|1N)J_0WNC4GuoNuQ?AaJVmr!};|QhdXe%k6avW z-jyv!yjctvWZbBp4X@|5O4yRlVVhRb-_Ymj3-m=`Ieg3EP8{yS;cgu6!QoyU?%gAp z(pTZ-YBPsB^Y2yLq1R*iH&3lfFu4tt4+=Ajg!C=!S3aRDueN}MPW%xHn^a%-w3ehl znxseE-7GyiK6=_(Qo7Q7q3A0P_k>c#HWvBw4?+GsZYsf&_<>ODKvQ5%kNhbnPUA-y zilKqbVTBD~tntH)4P%ROj6EX)_x#(K0gM=HWW$AR$cjyTq00h7hWRhF6+u;fuvOtiKw-C&Ody2Ev(l_wo;&e*Z zPwXmAOVmvwAzjskG0~tS9Q;ZM&BqQPQ0Dhas1D7-Y^cg0Q!-D{e93BjgJNa|3K-;c@ zcRZ*n1^jz&g3&Am;w%mp^W5k zY41AjzmopZI$|n?brki`Iyz?Z<8c_)O+D7g!l4?&VgeTB4A?L{4p7~Uf=A)wq9C-R zvkB}&1^>%Z!B*0|4KgZ52Yz}OHPg(rFd9b7jAq6#txOx!&f##VCvZ3{izE(D=I|5_ zPv!7I96p%Chpb~d1dlyH*6I|zi7^v6e5grcge=23JdIt+I~3z^lhy10TnYC&9OfMu zz?Feu#hVF2jIipW3?PjBA6yADGr%C8d4|J>ncem<&%^b{qb|iPbNwPSPjDG*30TN1 z=AH5!U|wQjX4AWgX}E;9)qm8(m?g*SOc$Ty6tj#?ntQT(H`t3=k-L0E>lh4dw%RL%tY3l~&U2yx)yv=N6HZkvT zcrJ(MadS zs#$8=$?WB8+r{i=_Anqe6ms}T4lm;H;uWw^HWSm}y(f`h=mX8KKPF37*xO7;x9MG| zOfgP)y$1uc{;}qJ2ANXFQx7ElBKda8z`sVXr4sD@uKkjjO6Rv;OJl!aj)1Vp9Om%S zE|Y^N{GsbE-$QWWM5XnOU@C&Vp#ke9fHW@Ny0ZX~c5h!(3o4 zKSnZS-o}EMYcLVKWLUw!2ThXn6)2fo%v&|Ks3Axf1l(h z_zNX>>3a- z0REi=PwE6u%&zBYs`nC0-{6a|-be@hJSZF-gt*Zhh&FThrtd*9cmpWIK1Yt z)8UdMS6c+&Bd z<7vn1j<+1|IN?r=leLqrli118$=S)(Daa|#Dc33AslaKZQ?XO2lgz2YsmiIwsm`gx zN$+HI8tXLPX`<6)r>Rb?(=?~)PBWaAJMD40;%wy{>0IP&bYATIp7TlPZ=5eWf9rh3 z`3L8F&c8d~cmB%-bHQCm7Y7$t7k3v=7he}YU}6OUuQ=Hy%O&5X0N7Y%F6F>7u6Aj0 zF}ghGGSlS+mpLvky3BW3=<<@w%fLN;&1I9zyDnQ?-gnvNvfX8e%PyBaE_+?}xg2o0 z>`Jo&n{n%f+=1#XMn7Q4OXw$!c5ZMoYfx1Das-A=llay#vI*6p0zdAEyh z-@09KyXN+%+XHvxPPkLC-)flVt0f4LieriXFQNckVlq>(xcTw z=kbJx!DF(=(;m-wJm)df;{}g7z=odhvCLzo$7+wY9&dTP?Xk(@U5}4E_IZ5aam3@C z$0d);9#=hXd3^72+v6usOG#{dRcjedzE+@z2*bM`U9^WUc0>ZcpdaQ?sd}Zl-Fsm zvtH-C&U;<-`oZfLue)CNy#Dlh;ElWqZ%1zzZy)an?-=hm?*#8u@4?^;?+^`7QE-TP(lCEl-jFZJ#M?)FOW)!u8p-|&9Zdjs&eZw?$V zFm_^0)Q3_ZRy+`MdZJ z^RM-9_g~=urvEno-Toi>f9${C|8xJt{zv_f`=9i`96$$n1o#I;1SA9`2c!lJ4#*1_ z8BiQh8c-Qf9Z(xkAJ7!g5il#@<$&&h6#=UP)zcqd?UzBRDuXBserUJUBi$Ew~_fWN>kCX|OD~BDgVF8QdJK2_6&N9^4T;C3t%9jNoU3 zpAUX9cz*Dr;Fp7!1g{8wGx+V`cY-$u?+M-?{7LY^;KRYkf=>pY3jQSoh1i7Hg@{7L zA&wzlAp=8vL;OMlLxMx1Lt;YWLWYNAgk*>0g%pI045d=-@ZD?!gj?jalpM`!AdNfQF<`oth79AEBmIxLAgTsb} zrH5sORfJWC)rB>LDZ*4?En%a>+QM{U&xI`vTNCzC*paYr!|sNY;r8L8aEEZu@R0DR z@PzQ8;lsky!xiD9!^ee>51$Y|Dg4>+nc=g;UkqOmz9@W6_{Q)};hV#Egntx%H2j;y}cSh?5atMtl`g|a#W-|QW2?&Y>6Bl*%sLmsgE>9PK|sH zY#cU69*VpWc~>fuhDe7>i=}g=FG*jQu9a?)ekk1~{Ybh``kC~w^qBOd^i-5>RB+Vr zsJtjyRAp36RDF~@swqkxrH`5rH96`@u#R{xYF5;osCiKfqCSke8SNG=i4KX5jUE=A z9i10l5M2~q5nUZ!7u^uu7_E&S6a7T=)aa+9pN*awJv(|~^h?pNM86ijG`c%_ee~Ao zUC|#!?~DE<`f&8o=o8VWqEAO(h`tg1Q_kx-T{-J=-p|>YvoGgZ&iR~6IahM7=iJKq zA?K%@2f27InakwbZcZP@6kF_pRLba(Ct)$UT^QJoilQ`P_SXC{LW{mgkY@ zpBI!Dk{6zroHrSM_p%>lzsUY7w=Z`s_bB%+ z_bpE-&n>Sk*OotB{!IDv&*H>?--dMe(dS~^n>OIw8R3EKAQGKfVO!e0_sK%zosm8U&qsF_&x5mGw zqGoo@$2AXX?P?uroon4{y=#4HCAI#wgKFz*wY9Cax>|j$v36|jg4(Xy6}78t*VVpR zyP@`@+C#O+YERaFReQGfo7!8oKiA%^{jK(X9Z^TuS=HIr+1Gj1h1LzO%c?7_tFEi7 zYp7GyY3jz*wbgah>FXxdJzF=YZXVd)EUsHx*Il=wZgt(-y6trz*B!0hFoudwo`eM}4Q71;78g+WqrBT;L-5mA(s2@lD z)j%~^HP|+Y8eAIO!R}{ZgKtAvLtMk~hMb1{hQfy8hRTMThPsA^hQ8tct1}Q_85lX2tNjX%R2G&nG$~-(CQe~HNg>sd0gYskLr^@rnyDCEEuJTg(sQgrc zst{GUN~(%c#jBE31*#%diK + + + + SchemeUserState + + Contained.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Contained/Contained/AppDelegate.swift b/Contained/Contained/AppDelegate.swift new file mode 100644 index 00000000..67e42de9 --- /dev/null +++ b/Contained/Contained/AppDelegate.swift @@ -0,0 +1,37 @@ +// +// AppDelegate.swift +// Contained +// +// Created by Bronson Mullens on 4/22/20. +// Copyright © 2020 Bronson Mullens. 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/Contained/Contained/Assets.xcassets/AppIcon.appiconset/Contents.json b/Contained/Contained/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..9221b9bb --- /dev/null +++ b/Contained/Contained/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Contained/Contained/Assets.xcassets/Contents.json b/Contained/Contained/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Contained/Contained/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Contained/Contained/Assets.xcassets/game_controller.imageset/Contents.json b/Contained/Contained/Assets.xcassets/game_controller.imageset/Contents.json new file mode 100644 index 00000000..3749084c --- /dev/null +++ b/Contained/Contained/Assets.xcassets/game_controller.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "game_controller.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "game_controller@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "game_controller@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Contained/Contained/Assets.xcassets/game_controller.imageset/game_controller.png b/Contained/Contained/Assets.xcassets/game_controller.imageset/game_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..df0891d50a57cd2afb5874ad0f7916e39de8f438 GIT binary patch literal 360 zcmV-u0hj)XP)np)db4V1*t^4gE2SiO}~kOZBdf%bj(LGpBgUwF@#0D0000ENo2MkOM*nkb#fDPDy4cLGU zxG5Q5V-h0r00aPh(eoHGeo;>K31BO~V*ooDZvn*2ysK?%mCFMWouL9z55W74H)$<@ zL@c^x=2-nSGZ(4=t^k|>a7*16u7*awv9kZ&KE{x&4a;(d8!IavW zd6|oq?5x)^mu3L-T$h%^KxI&cP`GCvW&n#K;HbsGu6aKy%ELj0*qCMgZhbCxC@H&C zT3(cxE+u6bHOzA95dD=f>v}lpG4SM~^FT!303Le^d|>9MG;ps!*kWe-cWG&c4MGOj zE*+*zi>zzTxnX8%LIG@Q+P2Pe>1B-xzZ%Ztp{(I5%e?EMONn^QdOLV+mD2aPP1rY;HMREbkZPUg^@TM%9YfJ^ZveWMeMJ+`bMD7c`Ypme)YU$+ oFX9c@fDPDy4cLGU*nk_7Uq9BL|H>-OzW@LL07*qoM6N<$f;NF6j{pDw literal 0 HcmV?d00001 diff --git a/Contained/Contained/Assets.xcassets/game_controller.imageset/game_controller@3x.png b/Contained/Contained/Assets.xcassets/game_controller.imageset/game_controller@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8ac924c7ab8329e2c3ddac51b32426588e423d GIT binary patch literal 971 zcmV;+12p`JP)bKoEuB7-~bAn0XH6Y6pxx1Vt*V22y0Fq#ExgS^ax1=np3M#$Mh=8C8nj&a| zCTNPF37R5kf+lE+pb45HXo4nailC22U#1#ZL<#@}fEj?&eO$WtZ?7)`5Bm?m+P!YK zUa#HzMpc_h=9_XWOGK(Ikj0i=O}xN10GcgZ187xsl{IJw^bKN_3Cy7vVfA()OfG<` z2Af-@cK}`h=!w{ioAWG+Sp?*{^LKip)&iI(1r1iqWkJY$b>Z09q<13n0^mEj?$vKqy|e<&8}zzUWEt!_MC2z?dKGMg zee@+!_NuS|{ev8PRa$^9$#FQN-e4#qEmOPxd|Fj!(JR{Zj0xEzpLVRGT?gHUk^4vq z`Vqjjv&W19S)FIumuz=6l4`^?TWZ5&rL;QboV~kucx@!b3|j3uR+S-W%kylySoXP& zsO_i&TR-az-9~G8tg9#=?Ne3;!f!JKeZS|kyA-AP*@BsJ91^` zmR&?=BSBe5Upbj5YUh+)v;zWS;q9a0zvE5U;kh$@X!7@=K_&ulIZ-ey1A}4cdESSB z9t2>Z-ygjUkH{{9zvb4Y_h$p0q9@aYfYuWMount@m33H@-Xc<_F6lGub#%`4EK%ug z+C%s(y^cAY)2Gvi2^GT@6N}bbA`M$-)F=5E<002ovPDHLkV1h8mxV-=X literal 0 HcmV?d00001 diff --git a/Contained/Contained/Assets.xcassets/info.imageset/Contents.json b/Contained/Contained/Assets.xcassets/info.imageset/Contents.json new file mode 100644 index 00000000..0a927f68 --- /dev/null +++ b/Contained/Contained/Assets.xcassets/info.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "info.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "info@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "info@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Contained/Contained/Assets.xcassets/info.imageset/info.png b/Contained/Contained/Assets.xcassets/info.imageset/info.png new file mode 100644 index 0000000000000000000000000000000000000000..64c0cb1e8fcd6f3b4c43af1943ebdf7fb0b76ebc GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3oCO|{#S9GGLLkg|>2BR0px`4< z7sn8f<8P;56l_u8aVgI|BDRjjYk`UP0v7KLB5xj8o%mZ|EYl~EVDZPm__yk0^@$rM zDm4ijCI;M*_qjBwM8($A^T}c3)oR@yVGKMB{0>t-F`P-g$NeIR!DnkoBjXOX7vbwT z?(7J@dhYzbm1+;IJvLv4SIFhakXag+PYI` zZ>V^bmGTHCevZ{u>Jhem7s7SVdeb+Viq{&yx&OiTho?+Z@tEQ$d@t>&trrSy;s%+svuQM=sy85}Sb4q9e0Ou!o An%OBKeVnp2UxQoFC5^Y7&sX4t0Fe^OWc~8Y-QV2Y;D;@=kc=Tj{(OzeYgF&piMy zz>kr??gkuzx5+%+%#sfG+8VHlMh)zf&pRRD!oA8e8AqU46lkCVnv5XdM*~zT7>pXD zJr38v@65BWPoNw#es4yETzaaNJ7oMG&wkJISqwc?*i1(?ix{2Rg4cVY%o_AUAddoD zkQ2dHOimQDhk#rz81j9TljhN$C!Z7aDyFs@u#3sFWAo^G1(5MMMs)x;5#C%)P>kGw zKR#}$iyEJEx`M?UM5%ihRR)W2)3*^dmsGCGDC0RM0qyD(uo%`8+V)P+# zY&;Ki&5(8&busjG?pg1&d3F|~WgUkJCbb*rnrXedV|Y9k&rNoq<)qu^&|1B z36va>99ufcOizcJ83Aq>K+;E&nGcE)<|>(a&$GRndd;-3xdE?cwi{hnTC&Cq(~n-e zP`9M#Q_WXDrm!N=-+1~S{XB>)yYx;b&;l*cGJzIonLrElLhT>nUfJc#3-eU~0000< KMNUMnLSTYkWtI~F literal 0 HcmV?d00001 diff --git a/Contained/Contained/Assets.xcassets/settings.imageset/Contents.json b/Contained/Contained/Assets.xcassets/settings.imageset/Contents.json new file mode 100644 index 00000000..e30c46c5 --- /dev/null +++ b/Contained/Contained/Assets.xcassets/settings.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "settings.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "settings@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "settings@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Contained/Contained/Assets.xcassets/settings.imageset/settings.png b/Contained/Contained/Assets.xcassets/settings.imageset/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..8f712b18c2139cb1ff24e2041cdaac6e3de94e2b GIT binary patch literal 418 zcmV;T0bTxyP)8=4)lNrMjH=+ zS|9A&Xqdie&qCsPMU?Av$(|B&E;CtULk}##snCe;KnvW={;I0J$ket_AJp3r$Ma5S zRNw`;nk6u0t@**}N6uwtjwzTTYaB2I@J-ga?9{WVSugH4p4?<2V7=Dco_&zmPV8d} zH}gv-3PQ>~;9`o$B=}xUmmm&_7?W|F0^9szb8qWI1#ovFa{qYP5O)QkHbjWK6fXB) z+Q_Egjp?t5sFt1To4U4h9Uo4$FOcJ}%%hV;EG@c3TKo`^Zbw>ld(z^s7Xp8)^f{u~ zE4?yjQ*u#N0nV$rvwgc5W-hAJOP??z;?^d+74xdv$1o2e{x@%@Pug!Kwh8el`2YX_ M07*qoM6N<$f}UQspa1{> literal 0 HcmV?d00001 diff --git a/Contained/Contained/Assets.xcassets/settings.imageset/settings@2x.png b/Contained/Contained/Assets.xcassets/settings.imageset/settings@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed4658a4858cc94a72fafdc82def04509dbbe7f GIT binary patch literal 841 zcmV-P1GfB$P)ym}u;v&5PZ4{|cuKr$r_dL{{yPpjtYCjL z+da(EkOJ-^qqcV9{>7Yt%L|8F0KZbDFgUN8Anj7Jr}tXoK>r*L77VruTs`ls@)p4F z(cCK$?IM#A&9)yp_c(~=3IIJ3S&aE41i-rhKd0n-IAAw@0)wYS2i8mc$&el<+<_(~Lm{FQfPykC7ydO;%#NxdoRRqPc8TUm?nKL)e&a+Ln$@qbE%d*h)V&-HkUjxJx@Y%ah|7QPo5v{- T#eW+l00000NkvXXu0mjffUtMC literal 0 HcmV?d00001 diff --git a/Contained/Contained/Assets.xcassets/settings.imageset/settings@3x.png b/Contained/Contained/Assets.xcassets/settings.imageset/settings@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..674bea76318a3b8df628dd1a44c78736cf55507d GIT binary patch literal 1406 zcmV-^1%djBP)xbr9w~ z56tuB0q%gVAan(x3&`v}+-gRnBSDZ@fZ!RJ!PsMy;_k=Q;@cmP#LUPe{P-zDkb%xX z=aGTVKxd#gGKgqTM23i1rXiyJX5`-ry(1z6;OXwq&&*t8pzXk&02}}`%-lH~KPV_O zlf$_O00n>^fMMo7y28vHbqcs00KS=}!#O-M4-@B>cgJ^A=LFGv1)!U`fDM4jm(8^B$r~v#j za{LQ3AAfWoeYRL06uLX4e>L8&kJ>ox)}EO@rSpL-ix6u9>x-c_>33%>`r{;7=ySb zjY7##crS>GiK1S~XExVWf8oMhT0-x+v)4*MX-0e(CFKgmn_qj%a!D~V)biCArPM;l z%q4&a0MDzhKZ+JTm%{zOB=zYbU%9}&bxEa37X%|MfZr#4<30e`$AN$(N&-qt__-kO z4p?1k#U=QT zgEzgKDD}Hcqd*U*0)Dpl#-4fB{IM6GC9bzrNW8?HBV zSdnG}j5j@Vu&iSuR^0>-SSG&W-rYbG$tkl^7nL^?3Rwkj7M^#O;_1+MlIF?b0@|e~;>D*T!ORz_Y>d_T{v)EEh-zuc)#BB?<+^@-A%Q9> z7X^Rmx)$`Bi=<-#V|L}m$)btqKt$z?=9f;vx(t9X4u|dl7)8tOW?Zv$zV1ZQWog8u zRgU^A;eL?s7?CZg3KfcuJt3Vux*wr;rUa@3pCBbUm93^s~qHw0Q2@ z#&CWf+hJw{`s4|=#`tGTAPZ*mTn97v%v{Jmz6Sum0(eynYFx(08J7RR%;Y-({N{Mg zSHa|ZU3=SD4pi}7t`*YQY1 z`=$8~BC0Un8Tu;Vsxuo&Ry{gm5Im`59FIGBC~M2!RRQ;MpOi5O&Z8FtEgdUk|c@mnqzE)k3(cQw!|a3vckP5xkp9nMyUk3*5Vx z&SL0sa||~83a2f-{q25FjdjmRa)y%MIh!py1D!_(Is=`7&LhhB3WE+|etK?AQvd(} M07*qoM6N<$f=*|ahX4Qo literal 0 HcmV?d00001 diff --git a/Contained/Contained/Base.lproj/LaunchScreen.storyboard b/Contained/Contained/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..865e9329 --- /dev/null +++ b/Contained/Contained/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Contained/Contained/Base.lproj/Main.storyboard b/Contained/Contained/Base.lproj/Main.storyboard new file mode 100644 index 00000000..2aee4599 --- /dev/null +++ b/Contained/Contained/Base.lproj/Main.storyboard @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Contained/Contained/GameViewController.swift b/Contained/Contained/GameViewController.swift new file mode 100644 index 00000000..9d4b7832 --- /dev/null +++ b/Contained/Contained/GameViewController.swift @@ -0,0 +1,43 @@ +// +// GameViewController.swift +// Contained +// +// Created by Bronson Mullens on 4/22/20. +// Copyright © 2020 Bronson Mullens. All rights reserved. +// + +import SpriteKit +import UIKit + +class GameViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + class GamesViewController: UIViewController { + @IBOutlet weak var skview: SKView! + + var skscene: CustomScene? = nil + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + skscene = CustomScene(size: view.bounds.size) + skview.presentScene(skscene) + } + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Contained/Contained/Info.plist b/Contained/Contained/Info.plist new file mode 100644 index 00000000..b5f9c079 --- /dev/null +++ b/Contained/Contained/Info.plist @@ -0,0 +1,62 @@ + + + + + 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 + UISceneStoryboardFile + Main + + + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Contained/Contained/Info.storyboard b/Contained/Contained/Info.storyboard new file mode 100644 index 00000000..e023c76b --- /dev/null +++ b/Contained/Contained/Info.storyboard @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Contained/Contained/InfoViewController.swift b/Contained/Contained/InfoViewController.swift new file mode 100644 index 00000000..77d17680 --- /dev/null +++ b/Contained/Contained/InfoViewController.swift @@ -0,0 +1,33 @@ +// +// InfoViewController.swift +// Contained +// +// Created by Bronson Mullens on 4/22/20. +// Copyright © 2020 Bronson Mullens. All rights reserved. +// + +import UIKit + +class InfoViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + @IBAction func done(_ sender: Any) { + navigationController?.popToRootViewController(animated: true) + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Contained/Contained/SceneDelegate.swift b/Contained/Contained/SceneDelegate.swift new file mode 100644 index 00000000..3e491100 --- /dev/null +++ b/Contained/Contained/SceneDelegate.swift @@ -0,0 +1,53 @@ +// +// SceneDelegate.swift +// Contained +// +// Created by Bronson Mullens on 4/22/20. +// Copyright © 2020 Bronson Mullens. All rights reserved. +// + +import UIKit + +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). + guard let _ = (scene as? UIWindowScene) else { return } + } + + 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/Contained/Contained/Settings.swift b/Contained/Contained/Settings.swift new file mode 100644 index 00000000..e74e599b --- /dev/null +++ b/Contained/Contained/Settings.swift @@ -0,0 +1,17 @@ +// +// Settings.swift +// Contained +// +// Created by Bronson Mullens on 4/22/20. +// Copyright © 2020 Bronson Mullens. All rights reserved. +// + +import Foundation + +class Settings { + static let shared = Settings() + private init() {} + + var shouldRoll = false + var shouldZoom = false +} diff --git a/Contained/Contained/SettingsViewController.swift b/Contained/Contained/SettingsViewController.swift new file mode 100644 index 00000000..abfdde54 --- /dev/null +++ b/Contained/Contained/SettingsViewController.swift @@ -0,0 +1,37 @@ +// +// SettingsViewController.swift +// Contained +// +// Created by Bronson Mullens on 4/22/20. +// Copyright © 2020 Bronson Mullens. All rights reserved. +// + +import UIKit + +class SettingsViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + @IBAction func toggleRoll(_ sender: UISwitch) { + } + + @IBAction func toggleZoom(_ sender: UISwitch) { + } + + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Contained/Contained/ViewController.swift b/Contained/Contained/ViewController.swift new file mode 100644 index 00000000..54e1afd1 --- /dev/null +++ b/Contained/Contained/ViewController.swift @@ -0,0 +1,20 @@ +// +// ViewController.swift +// Contained +// +// Created by Bronson Mullens on 4/22/20. +// Copyright © 2020 Bronson Mullens. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + From d6b77d63ecdc4ac899a5edc789acb09e6e9fafed Mon Sep 17 00:00:00 2001 From: Bronson Date: Thu, 23 Apr 2020 00:42:05 -0700 Subject: [PATCH 2/2] Fixed bugs and cleaned up code --- Contained/Contained.xcodeproj/project.pbxproj | 4 ++ .../UserInterfaceState.xcuserstate | Bin 30918 -> 31226 bytes .../Contained/Base.lproj/Main.storyboard | 10 ++-- Contained/Contained/CustomScene.swift | 51 ++++++++++++++++++ Contained/Contained/GameViewController.swift | 34 +++--------- Contained/Contained/Info.storyboard | 32 ++++++----- Contained/Contained/InfoViewController.swift | 12 ----- .../Contained/SettingsViewController.swift | 16 +----- 8 files changed, 89 insertions(+), 70 deletions(-) create mode 100644 Contained/Contained/CustomScene.swift diff --git a/Contained/Contained.xcodeproj/project.pbxproj b/Contained/Contained.xcodeproj/project.pbxproj index f69da301..f31a2ecf 100644 --- a/Contained/Contained.xcodeproj/project.pbxproj +++ b/Contained/Contained.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ E38E19C0245170B2000DAA94 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19BF245170B2000DAA94 /* GameViewController.swift */; }; E38E19C2245170C9000DAA94 /* InfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19C1245170C9000DAA94 /* InfoViewController.swift */; }; E38E19C4245170ED000DAA94 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19C3245170ED000DAA94 /* SettingsViewController.swift */; }; + E38E19C6245179C0000DAA94 /* CustomScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38E19C5245179C0000DAA94 /* CustomScene.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -36,6 +37,7 @@ E38E19BF245170B2000DAA94 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; E38E19C1245170C9000DAA94 /* InfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoViewController.swift; sourceTree = ""; }; E38E19C3245170ED000DAA94 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; + E38E19C5245179C0000DAA94 /* CustomScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomScene.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -81,6 +83,7 @@ E38E19BF245170B2000DAA94 /* GameViewController.swift */, E38E19C1245170C9000DAA94 /* InfoViewController.swift */, E38E19C3245170ED000DAA94 /* SettingsViewController.swift */, + E38E19C5245179C0000DAA94 /* CustomScene.swift */, ); path = Contained; sourceTree = ""; @@ -163,6 +166,7 @@ E38E19C4245170ED000DAA94 /* SettingsViewController.swift in Sources */, E38E19A4245162B9000DAA94 /* AppDelegate.swift in Sources */, E38E19BE24516775000DAA94 /* Settings.swift in Sources */, + E38E19C6245179C0000DAA94 /* CustomScene.swift in Sources */, E38E19C2245170C9000DAA94 /* InfoViewController.swift in Sources */, E38E19A6245162B9000DAA94 /* SceneDelegate.swift in Sources */, ); diff --git a/Contained/Contained.xcodeproj/project.xcworkspace/xcuserdata/bronson.xcuserdatad/UserInterfaceState.xcuserstate b/Contained/Contained.xcodeproj/project.xcworkspace/xcuserdata/bronson.xcuserdatad/UserInterfaceState.xcuserstate index 28b45d037f168cf2cf92e9272458a28ef477e78b..b3409fec574a656cccb16a8982ae7089ced5bed7 100644 GIT binary patch delta 13862 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 Tyb;&*pA|lBx@rDvef<9b_(44` delta 14056 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 b2HR%a7T0D01tIwrlZ$`SRM7IjZRh_3A8=M$ diff --git a/Contained/Contained/Base.lproj/Main.storyboard b/Contained/Contained/Base.lproj/Main.storyboard index 2aee4599..b9a3db89 100644 --- a/Contained/Contained/Base.lproj/Main.storyboard +++ b/Contained/Contained/Base.lproj/Main.storyboard @@ -29,6 +29,9 @@ + + + @@ -43,7 +46,7 @@ - + @@ -84,9 +87,8 @@ - - - + + diff --git a/Contained/Contained/CustomScene.swift b/Contained/Contained/CustomScene.swift new file mode 100644 index 00000000..40478fea --- /dev/null +++ b/Contained/Contained/CustomScene.swift @@ -0,0 +1,51 @@ +// +// CustomScene.swift +// Contained +// +// Created by Bronson Mullens on 4/23/20. +// Copyright © 2020 Bronson Mullens. All rights reserved. +// + +import SpriteKit + +class CustomScene: SKScene { + let crab = SKSpriteNode() + + // Add and center child, initializing animation sequence + override func sceneDidLoad() { + super.sceneDidLoad() + addChild(crab) + crab.loadTextures(named: "HappyCrab", forKey: SKSpriteNode.textureKey) + crab.position = CGPoint(x: frame.midX, y: frame.midY) + } + + // Move to touch + public override func touchesBegan(_ touches: Set, with event: UIEvent?) { + + // Fetch a touch or leave + guard !touches.isEmpty, let touch = touches.first else { return } + + // Retrieve position + let position = touch.location(in: self) + + // Create move action + let actionDuration = 1.0 + let moveAction = SKAction.move(to: position, duration: actionDuration) + + let rollAction = SKAction.rotate(byAngle: CGFloat.pi * 2, duration: actionDuration) + let zoomAction = SKAction.scale(by: 1.3, duration: 0.3) + let unzoomAction = SKAction.scale(to: 1.0, duration: 0.1) + + switch Settings.shared.shouldZoom { + case false: + crab.run(moveAction) + case true: + let sequenceAction = SKAction.sequence([zoomAction, moveAction, unzoomAction]) + crab.run(sequenceAction) + } + + if Settings.shared.shouldRoll { + crab.run(rollAction) + } + } +} diff --git a/Contained/Contained/GameViewController.swift b/Contained/Contained/GameViewController.swift index 9d4b7832..64ff582c 100644 --- a/Contained/Contained/GameViewController.swift +++ b/Contained/Contained/GameViewController.swift @@ -10,34 +10,14 @@ import SpriteKit import UIKit class GameViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - - // Do any additional setup after loading the view. - } + @IBOutlet weak var skview: SKView! - class GamesViewController: UIViewController { - @IBOutlet weak var skview: SKView! - - var skscene: CustomScene? = nil - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - skscene = CustomScene(size: view.bounds.size) - skview.presentScene(skscene) - } - } + var skscene: CustomScene? = nil - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + skscene = CustomScene(size: view.bounds.size) + skview.presentScene(skscene) } - */ - + } diff --git a/Contained/Contained/Info.storyboard b/Contained/Contained/Info.storyboard index e023c76b..c40bcb03 100644 --- a/Contained/Contained/Info.storyboard +++ b/Contained/Contained/Info.storyboard @@ -1,5 +1,5 @@ - + @@ -7,7 +7,7 @@ - + @@ -16,7 +16,7 @@ - - - + + + @@ -37,6 +37,7 @@ + @@ -51,7 +52,7 @@ - - - + + @@ -87,15 +87,18 @@ - + + + + @@ -129,4 +132,7 @@ + + + diff --git a/Contained/Contained/InfoViewController.swift b/Contained/Contained/InfoViewController.swift index 77d17680..f4aa7b77 100644 --- a/Contained/Contained/InfoViewController.swift +++ b/Contained/Contained/InfoViewController.swift @@ -12,22 +12,10 @@ class InfoViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - - // Do any additional setup after loading the view. } @IBAction func done(_ sender: Any) { navigationController?.popToRootViewController(animated: true) } - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - } - */ - } diff --git a/Contained/Contained/SettingsViewController.swift b/Contained/Contained/SettingsViewController.swift index abfdde54..d7ad5983 100644 --- a/Contained/Contained/SettingsViewController.swift +++ b/Contained/Contained/SettingsViewController.swift @@ -12,26 +12,14 @@ class SettingsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - - // Do any additional setup after loading the view. } @IBAction func toggleRoll(_ sender: UISwitch) { + Settings.shared.shouldRoll.toggle() } @IBAction func toggleZoom(_ sender: UISwitch) { + Settings.shared.shouldZoom.toggle() } - - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - } - */ - }