diff --git a/CrabbedApp.xcodeproj/project.pbxproj b/CrabbedApp.xcodeproj/project.pbxproj new file mode 100644 index 00000000..b60889b5 --- /dev/null +++ b/CrabbedApp.xcodeproj/project.pbxproj @@ -0,0 +1,365 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 0B624A502450093200D95FE4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B624A4F2450093200D95FE4 /* AppDelegate.swift */; }; + 0B624A522450093200D95FE4 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B624A512450093200D95FE4 /* SceneDelegate.swift */; }; + 0B624A572450093200D95FE4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0B624A552450093200D95FE4 /* Main.storyboard */; }; + 0B624A592450093400D95FE4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0B624A582450093400D95FE4 /* Assets.xcassets */; }; + 0B624A5C2450093400D95FE4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0B624A5A2450093400D95FE4 /* LaunchScreen.storyboard */; }; + 0B624A66245009D400D95FE4 /* SKSpriteNode+Utility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B624A65245009D400D95FE4 /* SKSpriteNode+Utility.swift */; }; + 0B624A68245009E700D95FE4 /* Info.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0B624A67245009E700D95FE4 /* Info.storyboard */; }; + 0B624A6A245009FB00D95FE4 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B624A69245009FB00D95FE4 /* Settings.swift */; }; + 0B624A6C24500CC800D95FE4 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B624A6B24500CC800D95FE4 /* GameViewController.swift */; }; + 0B624A6E24500CD500D95FE4 /* InfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B624A6D24500CD500D95FE4 /* InfoViewController.swift */; }; + 0B624A7024500CE600D95FE4 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B624A6F24500CE600D95FE4 /* SettingsViewController.swift */; }; + 0B624A722450139E00D95FE4 /* CustomScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B624A712450139E00D95FE4 /* CustomScene.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0B624A4C2450093200D95FE4 /* CrabbedApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CrabbedApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0B624A4F2450093200D95FE4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 0B624A512450093200D95FE4 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 0B624A562450093200D95FE4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 0B624A582450093400D95FE4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 0B624A5B2450093400D95FE4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 0B624A5D2450093400D95FE4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0B624A65245009D400D95FE4 /* SKSpriteNode+Utility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "SKSpriteNode+Utility.swift"; path = "/Users/claytonwatkins/Development/Tabbed Navigations HW/Contained/CrabbedApp/SKSpriteNode+Utility.swift"; sourceTree = ""; }; + 0B624A67245009E700D95FE4 /* Info.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Info.storyboard; sourceTree = ""; }; + 0B624A69245009FB00D95FE4 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = ""; }; + 0B624A6B24500CC800D95FE4 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; + 0B624A6D24500CD500D95FE4 /* InfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoViewController.swift; sourceTree = ""; }; + 0B624A6F24500CE600D95FE4 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; + 0B624A712450139E00D95FE4 /* CustomScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomScene.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0B624A492450093200D95FE4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0B624A432450093200D95FE4 = { + isa = PBXGroup; + children = ( + 0B624A4E2450093200D95FE4 /* CrabbedApp */, + 0B624A4D2450093200D95FE4 /* Products */, + ); + sourceTree = ""; + }; + 0B624A4D2450093200D95FE4 /* Products */ = { + isa = PBXGroup; + children = ( + 0B624A4C2450093200D95FE4 /* CrabbedApp.app */, + ); + name = Products; + sourceTree = ""; + }; + 0B624A4E2450093200D95FE4 /* CrabbedApp */ = { + isa = PBXGroup; + children = ( + 0B624A4F2450093200D95FE4 /* AppDelegate.swift */, + 0B624A512450093200D95FE4 /* SceneDelegate.swift */, + 0B624A552450093200D95FE4 /* Main.storyboard */, + 0B624A67245009E700D95FE4 /* Info.storyboard */, + 0B624A582450093400D95FE4 /* Assets.xcassets */, + 0B624A5A2450093400D95FE4 /* LaunchScreen.storyboard */, + 0B624A5D2450093400D95FE4 /* Info.plist */, + 0B624A65245009D400D95FE4 /* SKSpriteNode+Utility.swift */, + 0B624A69245009FB00D95FE4 /* Settings.swift */, + 0B624A6B24500CC800D95FE4 /* GameViewController.swift */, + 0B624A712450139E00D95FE4 /* CustomScene.swift */, + 0B624A6D24500CD500D95FE4 /* InfoViewController.swift */, + 0B624A6F24500CE600D95FE4 /* SettingsViewController.swift */, + ); + path = CrabbedApp; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0B624A4B2450093200D95FE4 /* CrabbedApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0B624A602450093400D95FE4 /* Build configuration list for PBXNativeTarget "CrabbedApp" */; + buildPhases = ( + 0B624A482450093200D95FE4 /* Sources */, + 0B624A492450093200D95FE4 /* Frameworks */, + 0B624A4A2450093200D95FE4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CrabbedApp; + productName = CrabbedApp; + productReference = 0B624A4C2450093200D95FE4 /* CrabbedApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0B624A442450093200D95FE4 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1140; + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = "Clayton Watkins"; + TargetAttributes = { + 0B624A4B2450093200D95FE4 = { + CreatedOnToolsVersion = 11.4.1; + }; + }; + }; + buildConfigurationList = 0B624A472450093200D95FE4 /* Build configuration list for PBXProject "CrabbedApp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 0B624A432450093200D95FE4; + productRefGroup = 0B624A4D2450093200D95FE4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0B624A4B2450093200D95FE4 /* CrabbedApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 0B624A4A2450093200D95FE4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B624A5C2450093400D95FE4 /* LaunchScreen.storyboard in Resources */, + 0B624A592450093400D95FE4 /* Assets.xcassets in Resources */, + 0B624A68245009E700D95FE4 /* Info.storyboard in Resources */, + 0B624A572450093200D95FE4 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0B624A482450093200D95FE4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B624A6C24500CC800D95FE4 /* GameViewController.swift in Sources */, + 0B624A66245009D400D95FE4 /* SKSpriteNode+Utility.swift in Sources */, + 0B624A7024500CE600D95FE4 /* SettingsViewController.swift in Sources */, + 0B624A502450093200D95FE4 /* AppDelegate.swift in Sources */, + 0B624A6A245009FB00D95FE4 /* Settings.swift in Sources */, + 0B624A722450139E00D95FE4 /* CustomScene.swift in Sources */, + 0B624A6E24500CD500D95FE4 /* InfoViewController.swift in Sources */, + 0B624A522450093200D95FE4 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 0B624A552450093200D95FE4 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 0B624A562450093200D95FE4 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 0B624A5A2450093400D95FE4 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 0B624A5B2450093400D95FE4 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 0B624A5E2450093400D95FE4 /* 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; + }; + 0B624A5F2450093400D95FE4 /* 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; + }; + 0B624A612450093400D95FE4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = CrabbedApp/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.claytonwatkins.CrabbedApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 0B624A622450093400D95FE4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = CrabbedApp/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.claytonwatkins.CrabbedApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0B624A472450093200D95FE4 /* Build configuration list for PBXProject "CrabbedApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0B624A5E2450093400D95FE4 /* Debug */, + 0B624A5F2450093400D95FE4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0B624A602450093400D95FE4 /* Build configuration list for PBXNativeTarget "CrabbedApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0B624A612450093400D95FE4 /* Debug */, + 0B624A622450093400D95FE4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0B624A442450093200D95FE4 /* Project object */; +} diff --git a/CrabbedApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CrabbedApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..283360b1 --- /dev/null +++ b/CrabbedApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/CrabbedApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/CrabbedApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/CrabbedApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/CrabbedApp/AppDelegate.swift b/CrabbedApp/AppDelegate.swift new file mode 100644 index 00000000..9006e4c8 --- /dev/null +++ b/CrabbedApp/AppDelegate.swift @@ -0,0 +1,37 @@ +// +// AppDelegate.swift +// CrabbedApp +// +// Created by Clayton Watkins on 4/21/20. +// Copyright © 2020 Clayton Watkins. 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/CrabbedApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/CrabbedApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..9221b9bb --- /dev/null +++ b/CrabbedApp/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/Crab.xcassets/Contents.json b/CrabbedApp/Assets.xcassets/Contents.json similarity index 100% rename from Crab.xcassets/Contents.json rename to CrabbedApp/Assets.xcassets/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab000.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab000.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab000.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab000.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab000.imageset/happycrab000.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab000.imageset/happycrab000.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab000.imageset/happycrab000.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab000.imageset/happycrab000.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab001.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab001.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab001.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab001.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab001.imageset/happycrab001.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab001.imageset/happycrab001.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab001.imageset/happycrab001.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab001.imageset/happycrab001.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab002.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab002.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab002.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab002.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab002.imageset/happycrab002.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab002.imageset/happycrab002.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab002.imageset/happycrab002.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab002.imageset/happycrab002.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab003.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab003.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab003.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab003.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab003.imageset/happycrab003.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab003.imageset/happycrab003.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab003.imageset/happycrab003.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab003.imageset/happycrab003.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab004.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab004.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab004.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab004.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab004.imageset/happycrab004.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab004.imageset/happycrab004.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab004.imageset/happycrab004.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab004.imageset/happycrab004.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab005.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab005.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab005.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab005.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab005.imageset/happycrab005.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab005.imageset/happycrab005.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab005.imageset/happycrab005.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab005.imageset/happycrab005.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab006.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab006.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab006.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab006.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab006.imageset/happycrab006.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab006.imageset/happycrab006.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab006.imageset/happycrab006.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab006.imageset/happycrab006.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab007.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab007.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab007.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab007.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab007.imageset/happycrab007.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab007.imageset/happycrab007.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab007.imageset/happycrab007.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab007.imageset/happycrab007.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab008.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab008.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab008.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab008.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab008.imageset/happycrab008.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab008.imageset/happycrab008.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab008.imageset/happycrab008.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab008.imageset/happycrab008.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab009.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab009.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab009.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab009.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab009.imageset/happycrab009.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab009.imageset/happycrab009.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab009.imageset/happycrab009.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab009.imageset/happycrab009.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab010.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab010.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab010.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab010.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab010.imageset/happycrab010.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab010.imageset/happycrab010.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab010.imageset/happycrab010.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab010.imageset/happycrab010.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab011.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab011.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab011.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab011.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab011.imageset/happycrab011.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab011.imageset/happycrab011.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab011.imageset/happycrab011.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab011.imageset/happycrab011.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab012.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab012.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab012.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab012.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab012.imageset/happycrab012.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab012.imageset/happycrab012.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab012.imageset/happycrab012.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab012.imageset/happycrab012.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab013.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab013.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab013.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab013.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab013.imageset/happycrab013.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab013.imageset/happycrab013.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab013.imageset/happycrab013.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab013.imageset/happycrab013.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab014.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab014.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab014.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab014.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab014.imageset/happycrab014.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab014.imageset/happycrab014.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab014.imageset/happycrab014.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab014.imageset/happycrab014.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab015.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab015.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab015.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab015.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab015.imageset/happycrab015.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab015.imageset/happycrab015.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab015.imageset/happycrab015.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab015.imageset/happycrab015.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab016.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab016.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab016.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab016.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab016.imageset/happycrab016.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab016.imageset/happycrab016.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab016.imageset/happycrab016.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab016.imageset/happycrab016.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab017.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab017.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab017.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab017.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab017.imageset/happycrab017.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab017.imageset/happycrab017.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab017.imageset/happycrab017.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab017.imageset/happycrab017.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab018.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab018.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab018.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab018.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab018.imageset/happycrab018.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab018.imageset/happycrab018.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab018.imageset/happycrab018.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab018.imageset/happycrab018.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab019.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab019.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab019.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab019.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab019.imageset/happycrab019.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab019.imageset/happycrab019.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab019.imageset/happycrab019.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab019.imageset/happycrab019.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab020.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab020.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab020.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab020.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab020.imageset/happycrab020.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab020.imageset/happycrab020.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab020.imageset/happycrab020.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab020.imageset/happycrab020.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab021.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab021.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab021.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab021.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab021.imageset/happycrab021.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab021.imageset/happycrab021.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab021.imageset/happycrab021.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab021.imageset/happycrab021.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab022.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab022.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab022.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab022.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab022.imageset/happycrab022.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab022.imageset/happycrab022.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab022.imageset/happycrab022.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab022.imageset/happycrab022.png diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab023.imageset/Contents.json b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab023.imageset/Contents.json similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab023.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab023.imageset/Contents.json diff --git a/Crab.xcassets/HappyCrab.spriteatlas/happycrab023.imageset/happycrab023.png b/CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab023.imageset/happycrab023.png similarity index 100% rename from Crab.xcassets/HappyCrab.spriteatlas/happycrab023.imageset/happycrab023.png rename to CrabbedApp/Assets.xcassets/HappyCrab.spriteatlas/happycrab023.imageset/happycrab023.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab000.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab000.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab000.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab000.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab000.imageset/waitingcrab000.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab000.imageset/waitingcrab000.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab000.imageset/waitingcrab000.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab000.imageset/waitingcrab000.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab001.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab001.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab001.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab001.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab001.imageset/waitingcrab001.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab001.imageset/waitingcrab001.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab001.imageset/waitingcrab001.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab001.imageset/waitingcrab001.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab002.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab002.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab002.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab002.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab002.imageset/waitingcrab002.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab002.imageset/waitingcrab002.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab002.imageset/waitingcrab002.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab002.imageset/waitingcrab002.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab003.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab003.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab003.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab003.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab003.imageset/waitingcrab003.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab003.imageset/waitingcrab003.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab003.imageset/waitingcrab003.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab003.imageset/waitingcrab003.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab004.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab004.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab004.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab004.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab004.imageset/waitingcrab004.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab004.imageset/waitingcrab004.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab004.imageset/waitingcrab004.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab004.imageset/waitingcrab004.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab005.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab005.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab005.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab005.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab005.imageset/waitingcrab005.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab005.imageset/waitingcrab005.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab005.imageset/waitingcrab005.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab005.imageset/waitingcrab005.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab006.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab006.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab006.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab006.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab006.imageset/waitingcrab006.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab006.imageset/waitingcrab006.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab006.imageset/waitingcrab006.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab006.imageset/waitingcrab006.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab007.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab007.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab007.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab007.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab007.imageset/waitingcrab007.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab007.imageset/waitingcrab007.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab007.imageset/waitingcrab007.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab007.imageset/waitingcrab007.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab008.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab008.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab008.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab008.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab008.imageset/waitingcrab008.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab008.imageset/waitingcrab008.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab008.imageset/waitingcrab008.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab008.imageset/waitingcrab008.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab009.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab009.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab009.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab009.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab009.imageset/waitingcrab009.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab009.imageset/waitingcrab009.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab009.imageset/waitingcrab009.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab009.imageset/waitingcrab009.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab010.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab010.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab010.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab010.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab010.imageset/waitingcrab010.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab010.imageset/waitingcrab010.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab010.imageset/waitingcrab010.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab010.imageset/waitingcrab010.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab011.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab011.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab011.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab011.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab011.imageset/waitingcrab011.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab011.imageset/waitingcrab011.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab011.imageset/waitingcrab011.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab011.imageset/waitingcrab011.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab012.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab012.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab012.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab012.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab012.imageset/waitingcrab012.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab012.imageset/waitingcrab012.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab012.imageset/waitingcrab012.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab012.imageset/waitingcrab012.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab013.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab013.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab013.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab013.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab013.imageset/waitingcrab013.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab013.imageset/waitingcrab013.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab013.imageset/waitingcrab013.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab013.imageset/waitingcrab013.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab014.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab014.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab014.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab014.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab014.imageset/waitingcrab014.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab014.imageset/waitingcrab014.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab014.imageset/waitingcrab014.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab014.imageset/waitingcrab014.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab015.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab015.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab015.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab015.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab015.imageset/waitingcrab015.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab015.imageset/waitingcrab015.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab015.imageset/waitingcrab015.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab015.imageset/waitingcrab015.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab016.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab016.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab016.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab016.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab016.imageset/waitingcrab016.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab016.imageset/waitingcrab016.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab016.imageset/waitingcrab016.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab016.imageset/waitingcrab016.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab017.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab017.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab017.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab017.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab017.imageset/waitingcrab017.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab017.imageset/waitingcrab017.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab017.imageset/waitingcrab017.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab017.imageset/waitingcrab017.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab018.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab018.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab018.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab018.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab018.imageset/waitingcrab018.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab018.imageset/waitingcrab018.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab018.imageset/waitingcrab018.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab018.imageset/waitingcrab018.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab019.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab019.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab019.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab019.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab019.imageset/waitingcrab019.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab019.imageset/waitingcrab019.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab019.imageset/waitingcrab019.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab019.imageset/waitingcrab019.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab020.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab020.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab020.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab020.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab020.imageset/waitingcrab020.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab020.imageset/waitingcrab020.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab020.imageset/waitingcrab020.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab020.imageset/waitingcrab020.png diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab021.imageset/Contents.json b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab021.imageset/Contents.json similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab021.imageset/Contents.json rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab021.imageset/Contents.json diff --git a/Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab021.imageset/waitingcrab021.png b/CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab021.imageset/waitingcrab021.png similarity index 100% rename from Crab.xcassets/WaitingCrab.spriteatlas/waitingcrab021.imageset/waitingcrab021.png rename to CrabbedApp/Assets.xcassets/WaitingCrab.spriteatlas/waitingcrab021.imageset/waitingcrab021.png diff --git a/CrabbedApp/Assets.xcassets/game_controller.imageset/Contents.json b/CrabbedApp/Assets.xcassets/game_controller.imageset/Contents.json new file mode 100644 index 00000000..3749084c --- /dev/null +++ b/CrabbedApp/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/Art/game_controller.png b/CrabbedApp/Assets.xcassets/game_controller.imageset/game_controller.png similarity index 100% rename from Art/game_controller.png rename to CrabbedApp/Assets.xcassets/game_controller.imageset/game_controller.png diff --git a/Art/game_controller@2x.png b/CrabbedApp/Assets.xcassets/game_controller.imageset/game_controller@2x.png similarity index 100% rename from Art/game_controller@2x.png rename to CrabbedApp/Assets.xcassets/game_controller.imageset/game_controller@2x.png diff --git a/Art/game_controller@3x.png b/CrabbedApp/Assets.xcassets/game_controller.imageset/game_controller@3x.png similarity index 100% rename from Art/game_controller@3x.png rename to CrabbedApp/Assets.xcassets/game_controller.imageset/game_controller@3x.png diff --git a/CrabbedApp/Assets.xcassets/info.imageset/Contents.json b/CrabbedApp/Assets.xcassets/info.imageset/Contents.json new file mode 100644 index 00000000..0a927f68 --- /dev/null +++ b/CrabbedApp/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/Art/info.png b/CrabbedApp/Assets.xcassets/info.imageset/info.png similarity index 100% rename from Art/info.png rename to CrabbedApp/Assets.xcassets/info.imageset/info.png diff --git a/Art/info@2x.png b/CrabbedApp/Assets.xcassets/info.imageset/info@2x.png similarity index 100% rename from Art/info@2x.png rename to CrabbedApp/Assets.xcassets/info.imageset/info@2x.png diff --git a/Art/info@3x.png b/CrabbedApp/Assets.xcassets/info.imageset/info@3x.png similarity index 100% rename from Art/info@3x.png rename to CrabbedApp/Assets.xcassets/info.imageset/info@3x.png diff --git a/CrabbedApp/Assets.xcassets/settings.imageset/Contents.json b/CrabbedApp/Assets.xcassets/settings.imageset/Contents.json new file mode 100644 index 00000000..e30c46c5 --- /dev/null +++ b/CrabbedApp/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/Art/settings.png b/CrabbedApp/Assets.xcassets/settings.imageset/settings.png similarity index 100% rename from Art/settings.png rename to CrabbedApp/Assets.xcassets/settings.imageset/settings.png diff --git a/Art/settings@2x.png b/CrabbedApp/Assets.xcassets/settings.imageset/settings@2x.png similarity index 100% rename from Art/settings@2x.png rename to CrabbedApp/Assets.xcassets/settings.imageset/settings@2x.png diff --git a/Art/settings@3x.png b/CrabbedApp/Assets.xcassets/settings.imageset/settings@3x.png similarity index 100% rename from Art/settings@3x.png rename to CrabbedApp/Assets.xcassets/settings.imageset/settings@3x.png diff --git a/CrabbedApp/Base.lproj/LaunchScreen.storyboard b/CrabbedApp/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..865e9329 --- /dev/null +++ b/CrabbedApp/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CrabbedApp/Base.lproj/Main.storyboard b/CrabbedApp/Base.lproj/Main.storyboard new file mode 100644 index 00000000..32904027 --- /dev/null +++ b/CrabbedApp/Base.lproj/Main.storyboard @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CrabbedApp/CustomScene.swift b/CrabbedApp/CustomScene.swift new file mode 100644 index 00000000..cfefed68 --- /dev/null +++ b/CrabbedApp/CustomScene.swift @@ -0,0 +1,51 @@ +// +// CustomScene.swift +// CrabbedApp +// +// Created by Clayton Watkins on 4/21/20. +// Copyright © 2020 Clayton Watkins. 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/CrabbedApp/GameViewController.swift b/CrabbedApp/GameViewController.swift new file mode 100644 index 00000000..409f3414 --- /dev/null +++ b/CrabbedApp/GameViewController.swift @@ -0,0 +1,22 @@ +// +// GameViewController.swift +// CrabbedApp +// +// Created by Clayton Watkins on 4/21/20. +// Copyright © 2020 Clayton Watkins. All rights reserved. +// + +import UIKit +import SpriteKit + +class GameViewController: 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) + } +} diff --git a/CrabbedApp/Info.plist b/CrabbedApp/Info.plist new file mode 100644 index 00000000..b5f9c079 --- /dev/null +++ b/CrabbedApp/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/CrabbedApp/Info.storyboard b/CrabbedApp/Info.storyboard new file mode 100644 index 00000000..e6b8797f --- /dev/null +++ b/CrabbedApp/Info.storyboard @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CrabbedApp/InfoViewController.swift b/CrabbedApp/InfoViewController.swift new file mode 100644 index 00000000..f3996ce4 --- /dev/null +++ b/CrabbedApp/InfoViewController.swift @@ -0,0 +1,22 @@ +// +// InfoViewController.swift +// CrabbedApp +// +// Created by Clayton Watkins on 4/21/20. +// Copyright © 2020 Clayton Watkins. All rights reserved. +// + +import UIKit + +class InfoViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + } + + @IBAction func doneButtonTapped(_ sender: Any) { + navigationController?.popToRootViewController(animated: true) + } + +} diff --git a/SKSpriteNode+Utility.swift b/CrabbedApp/SKSpriteNode+Utility.swift similarity index 100% rename from SKSpriteNode+Utility.swift rename to CrabbedApp/SKSpriteNode+Utility.swift diff --git a/CrabbedApp/SceneDelegate.swift b/CrabbedApp/SceneDelegate.swift new file mode 100644 index 00000000..271c8949 --- /dev/null +++ b/CrabbedApp/SceneDelegate.swift @@ -0,0 +1,53 @@ +// +// SceneDelegate.swift +// CrabbedApp +// +// Created by Clayton Watkins on 4/21/20. +// Copyright © 2020 Clayton Watkins. 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/CrabbedApp/Settings.swift b/CrabbedApp/Settings.swift new file mode 100644 index 00000000..31f60ec7 --- /dev/null +++ b/CrabbedApp/Settings.swift @@ -0,0 +1,17 @@ +// +// Settings.swift +// CrabbedApp +// +// Created by Clayton Watkins on 4/21/20. +// Copyright © 2020 Clayton Watkins. All rights reserved. +// + +import Foundation + +class Settings { + static let shared = Settings() + private init() {} + + var shouldRoll = false + var shouldZoom = false +} diff --git a/CrabbedApp/SettingsViewController.swift b/CrabbedApp/SettingsViewController.swift new file mode 100644 index 00000000..0a84dcfb --- /dev/null +++ b/CrabbedApp/SettingsViewController.swift @@ -0,0 +1,24 @@ +// +// SettingsViewController.swift +// CrabbedApp +// +// Created by Clayton Watkins on 4/21/20. +// Copyright © 2020 Clayton Watkins. All rights reserved. +// + +import UIKit + +class SettingsViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + } + + @IBAction func toggleRoll(_ sender: UISwitch) { + Settings.shared.shouldRoll = sender.isOn + } + + @IBAction func toggleZoom(_ sender: UISwitch) { + Settings.shared.shouldZoom = sender.isOn + } +} diff --git a/Images/demo.gif b/Images/demo.gif deleted file mode 100644 index ca25f7b9..00000000 Binary files a/Images/demo.gif and /dev/null differ diff --git a/Images/info-layout.png b/Images/info-layout.png deleted file mode 100644 index f77b3d24..00000000 Binary files a/Images/info-layout.png and /dev/null differ diff --git a/Images/main-layout.png b/Images/main-layout.png deleted file mode 100644 index e5c467c6..00000000 Binary files a/Images/main-layout.png and /dev/null differ diff --git a/README.md b/README.md deleted file mode 100644 index c502c0b1..00000000 --- a/README.md +++ /dev/null @@ -1,192 +0,0 @@ -# Module Challenge: Tabbed Navigation and Multiple Storyboards - -This challenge allows you to practice the concepts and techniques learned in today's guided lesson and apply them in a concrete project. Your lesson explored view controller containment using Navigation and Tab Bar controllers. You will demonstrate proficiency by creating an application that showcases the same features you learned in class. - -## Instructions - -This is an individual assessment but you are permitted to consult with and support other members of your cohort. You are encouraged to follow the twenty-minute rule and seek support from your TL and Instructor in your cohort help channel on Slack. - -## Commits - -Commit your code regularly and meaningfully. This helps both you (in case you ever need to return to old code for any number of reasons) and your team lead. - -## Description - -In this challenge, you build a multi-tabbed SpriteKit game. - -Your completed application will look like the following GIF: - -![](Images/demo.gif) - -## Project Setup - -Follow these steps to set up your project: - -- Create a new Single View application. -- Set the project to be portrait only (or landscape only; either works). -- Delete the ViewController.swift file and delete the ViewController instance from your Main.storyboard. -- Add the tab bar icons in the Art folder to your main asset catalog. -- Add the Crab asset catalog to your project. -- Add the SKSpriteNode+Utility.swift file to your project. -- Create a second storyboard file named `Info.storyboard`. - -## Building your Model - -- Add a new Settings.swift file to your project with the following contents: - -``` -import Foundation - -class Settings { - static let shared = Settings() - private init() {} - - var shouldRoll = false - var shouldZoom = false -} - -``` - -## Building your Interface - -Follow these steps in IB to lay out your interface - -### In `Main.storyboard`: -* Add two view controllers and embed them into a tab bar controller. Ensure the tab bar controller is the storyboard entry point. -* Create a storyboard reference and connect it to the tab bar controller as the third tab (ctrl-drag from the tab bar controller to the reference and choose "view controllers" in the relationship segue section). Choose the Info storyboard and a reference ID of `InfoNavigation` in the attributes inspector for the reference. -* Set up your tabs: Info, Play, and Settings along with the appropriate icons for each (Info will need to be added to the root view of the `Info` storyboard). - -### In `Info.storyboard`: -* Select your Info view controller in IB and embed it into a navigation controller. Give the navigation controller scene a storyboard ID of `InfoNavigation` in the identity inspector. -* Add two more view controllers to IB. Add Navigation Items to each one, and then add bar button items to the top right of the info view controller. -* Connect the info view controller to the first of the two new controllers. Add a bar button to the top right. Connect that to the final view controller. Add a final bar button to the top right. - -### File Tasks: -* Create three classes in three new files: GameViewController, InfoViewController, and SettingsViewController. Each inherits from UIViewController but is otherwise empty. Assign these classes to your view controllers using the IB identity inspector. - -Your `Main.storyboard` interface should now look like this: -![](Images/main-layout.png) - -Your `Info.storyboard` interface should now look like this: -![](Images/info-layout.png) - -You're ready to start adding content to your interface. - -## Build the Info Sequence - -Follow these steps to create content for your information tab. - -* Name the first two bar button items "Next". Set the last bar button item to the system "Done" item using the attributes inspector. -* Add an IBAction from the Done button to the InfoViewController class and have it pop back to the root view controller (you may also use an unwind segue if you'd prefer): - -``` - @IBAction func done(_ sender: Any) { - navigationController?.popToRootViewController(animated: true) - } -``` -* Add a label to your first Info view controller. Set its font to System Bold 48. Center align the text in the label. Edit the text to Crabs. -* Center it horizontally and vertically and add two constraints -* Add a label to your second Info view controller. Set its font to System 24. Set the number of lines to 2 Center align the text in the label. Edit the text to "Tap to move the crab". Use option-return to add a new line between "move" and "the crab". -* Center it horizontally and vertically and add two constraints -* Copy the label from your second Info view controller to your third. -* Center it horizontally and vertically and add two constraints -* Edit the text to say "Let's play!" -* Edit the two titles on the second and third info controllers to remove the "Title" text. - -## Build the Settings Screen - -Follow these steps to create content for your settings tab. - -* Drag two labels and two switches onto the screen -* Set both switches from "on" to "off" -* Rename the labels to Roll and Zoom -* Embed one label and one switch into a horizontal stack view. Repeat for the other. Set both stack view spaces to 8 -* Embed the two new stack views into a vertical stack view. Set the stack view space to 8. -* Make sure that the alignment and distribution for all three stack views are set to Fill. -* Center the stack view horizontally and vertically and add two constraints. -* Connect the switches to actions in SettingsViewController: `toggleRoll` and `toggleZoom`. Be sure to use a `UISwitch` type when connecting for the "sender". (Hand edit the functions if you get this wrong.) -* Have each method set the corresponding shared Settings property to the sender's `isOn` property. - -## Build the Game Screen - -* Add an Sprite Kit View to the Game view controller. Use the tie fighter button to stretch the view to each side without spaces. -* Connect the view to an `skview` property in your Games view controller and import SpriteKit to get rid of the error message. -* Add the following code to your GamesViewController.swift file. You're about to create the CustomScene file so ignore the error for now. - -``` -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) - } -} -``` - -* Create a new CustomScene.swift file. This is the same project we built in class on Monday. - -``` -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) - } - } -} -``` - -## Minimum Viable Product - -Your finished project must include all of the following requirements: - -* Three tabs that lead to fully working program elements. -* Clean layout that mimics the sample screenshots above. -* Well organized maintainable layout in Interface Builder. - -## Stretch Problems - -After finishing your required elements, push your work further. These goals may or may not be things you learned in this module but they build on the material you just studied. Time allowing, stretch your limits and see if you can deliver on the following optional goals: - -* The Crab reverts to a center position each time the user leaves from the game tab and returns. Expand the Settings to store the most recent touch point and use that value in `sceneDidLoad`. -* Add one or two more options, such as fade effects (a node's `alpha` property) or other features you can read about in the SpriteKit documentation. -* Allow the user to switch between the HappyCrab and the WaitingCrab textures via the settings screen.