From 8a7bc8f81c3fece3a58c18a76e6974b656b60ba9 Mon Sep 17 00:00:00 2001 From: Ian Becker Date: Mon, 18 May 2020 12:05:19 -0700 Subject: [PATCH 1/3] Started project. --- Crab Game/Crab Game.xcodeproj/project.pbxproj | 343 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 9609 bytes .../xcschemes/xcschememanagement.plist | 14 + Crab Game/Crab Game/AppDelegate.swift | 37 ++ .../AppIcon.appiconset/Contents.json | 98 +++++ .../Crab Game/Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../Crab Game/Base.lproj/Main.storyboard | 24 ++ Crab Game/Crab Game/Info.plist | 64 ++++ Crab Game/Crab Game/SceneDelegate.swift | 53 +++ Crab Game/Crab Game/ViewController.swift | 20 + 13 files changed, 699 insertions(+) create mode 100644 Crab Game/Crab Game.xcodeproj/project.pbxproj create mode 100644 Crab Game/Crab Game.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcuserdata/ianbecker.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Crab Game/Crab Game.xcodeproj/xcuserdata/ianbecker.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Crab Game/Crab Game/AppDelegate.swift create mode 100644 Crab Game/Crab Game/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Crab Game/Crab Game/Assets.xcassets/Contents.json create mode 100644 Crab Game/Crab Game/Base.lproj/LaunchScreen.storyboard create mode 100644 Crab Game/Crab Game/Base.lproj/Main.storyboard create mode 100644 Crab Game/Crab Game/Info.plist create mode 100644 Crab Game/Crab Game/SceneDelegate.swift create mode 100644 Crab Game/Crab Game/ViewController.swift diff --git a/Crab Game/Crab Game.xcodeproj/project.pbxproj b/Crab Game/Crab Game.xcodeproj/project.pbxproj new file mode 100644 index 00000000..aeba4123 --- /dev/null +++ b/Crab Game/Crab Game.xcodeproj/project.pbxproj @@ -0,0 +1,343 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 4B8E6737247313D200ED4570 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E6736247313D200ED4570 /* AppDelegate.swift */; }; + 4B8E6739247313D200ED4570 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E6738247313D200ED4570 /* SceneDelegate.swift */; }; + 4B8E673B247313D200ED4570 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E673A247313D200ED4570 /* ViewController.swift */; }; + 4B8E673E247313D200ED4570 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E673C247313D200ED4570 /* Main.storyboard */; }; + 4B8E6740247313D300ED4570 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E673F247313D300ED4570 /* Assets.xcassets */; }; + 4B8E6743247313D300ED4570 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E6741247313D300ED4570 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 4B8E6733247313D200ED4570 /* Crab Game.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Crab Game.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4B8E6736247313D200ED4570 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 4B8E6738247313D200ED4570 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 4B8E673A247313D200ED4570 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 4B8E673D247313D200ED4570 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 4B8E673F247313D300ED4570 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 4B8E6742247313D300ED4570 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 4B8E6744247313D300ED4570 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4B8E6730247313D200ED4570 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4B8E672A247313D200ED4570 = { + isa = PBXGroup; + children = ( + 4B8E6735247313D200ED4570 /* Crab Game */, + 4B8E6734247313D200ED4570 /* Products */, + ); + sourceTree = ""; + }; + 4B8E6734247313D200ED4570 /* Products */ = { + isa = PBXGroup; + children = ( + 4B8E6733247313D200ED4570 /* Crab Game.app */, + ); + name = Products; + sourceTree = ""; + }; + 4B8E6735247313D200ED4570 /* Crab Game */ = { + isa = PBXGroup; + children = ( + 4B8E6736247313D200ED4570 /* AppDelegate.swift */, + 4B8E6738247313D200ED4570 /* SceneDelegate.swift */, + 4B8E673A247313D200ED4570 /* ViewController.swift */, + 4B8E673C247313D200ED4570 /* Main.storyboard */, + 4B8E673F247313D300ED4570 /* Assets.xcassets */, + 4B8E6741247313D300ED4570 /* LaunchScreen.storyboard */, + 4B8E6744247313D300ED4570 /* Info.plist */, + ); + path = "Crab Game"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4B8E6732247313D200ED4570 /* Crab Game */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4B8E6747247313D300ED4570 /* Build configuration list for PBXNativeTarget "Crab Game" */; + buildPhases = ( + 4B8E672F247313D200ED4570 /* Sources */, + 4B8E6730247313D200ED4570 /* Frameworks */, + 4B8E6731247313D200ED4570 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Crab Game"; + productName = "Crab Game"; + productReference = 4B8E6733247313D200ED4570 /* Crab Game.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4B8E672B247313D200ED4570 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1140; + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = "Ian Becker"; + TargetAttributes = { + 4B8E6732247313D200ED4570 = { + CreatedOnToolsVersion = 11.4.1; + }; + }; + }; + buildConfigurationList = 4B8E672E247313D200ED4570 /* Build configuration list for PBXProject "Crab Game" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 4B8E672A247313D200ED4570; + productRefGroup = 4B8E6734247313D200ED4570 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4B8E6732247313D200ED4570 /* Crab Game */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4B8E6731247313D200ED4570 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B8E6743247313D300ED4570 /* LaunchScreen.storyboard in Resources */, + 4B8E6740247313D300ED4570 /* Assets.xcassets in Resources */, + 4B8E673E247313D200ED4570 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4B8E672F247313D200ED4570 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B8E673B247313D200ED4570 /* ViewController.swift in Sources */, + 4B8E6737247313D200ED4570 /* AppDelegate.swift in Sources */, + 4B8E6739247313D200ED4570 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 4B8E673C247313D200ED4570 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 4B8E673D247313D200ED4570 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 4B8E6741247313D300ED4570 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 4B8E6742247313D300ED4570 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 4B8E6745247313D300ED4570 /* 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; + }; + 4B8E6746247313D300ED4570 /* 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; + }; + 4B8E6748247313D300ED4570 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 4R3M5PR4UZ; + INFOPLIST_FILE = "Crab Game/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.ianbecker.Crab-Game"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 4B8E6749247313D300ED4570 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 4R3M5PR4UZ; + INFOPLIST_FILE = "Crab Game/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.ianbecker.Crab-Game"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4B8E672E247313D200ED4570 /* Build configuration list for PBXProject "Crab Game" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4B8E6745247313D300ED4570 /* Debug */, + 4B8E6746247313D300ED4570 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4B8E6747247313D300ED4570 /* Build configuration list for PBXNativeTarget "Crab Game" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4B8E6748247313D300ED4570 /* Debug */, + 4B8E6749247313D300ED4570 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 4B8E672B247313D200ED4570 /* Project object */; +} diff --git a/Crab Game/Crab Game.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Crab Game/Crab Game.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..75b2bc0c --- /dev/null +++ b/Crab Game/Crab Game.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcuserdata/ianbecker.xcuserdatad/UserInterfaceState.xcuserstate b/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcuserdata/ianbecker.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..29f8deae62ea7585747e6d822329c2425021c165 GIT binary patch literal 9609 zcmds6d3;lKwm-jL(k!HDZf=qyWGfZ~YS+*e5NMkg3T>%Pcb1qomp0HQAxWWSk)InX zqJW4iDs5R^a77eF+{JYS)Nx!G_i@mNj=p)L&r#>x+$L>-=jXlmd4E0p*xY-6+xeaK zd(LSMcKX7R?CiIJ00kMyApsPigi%f7R|ui7FW_$;?+LYa`0%Z6d?XNT8Xss~Dzrty zJdpJ}+?=l3HBaajyv2i)j)4l)^{$8~A~5m*cLFq!2&3UV7y}nVI%Gg5WI;CMfCHvL zDLA1F%3(IlfeL7c4)DQJSO%TY1%3!X5SBv-!VrN~uo@U_fa_o*Tn{(ECfE!&!w%?! zei(o~a1Y!I_rd+}Fgyl_;01UQUV%TrTktl#3x9-<;3RwsU&1N)clbN}2mAwmhTn*e zn8+AnB{pIwsbn%qCmE!G6p|t`mCPVcQbx*2HJMLp$i<|VG?FH=kSrpLNh?`GLL^Kg zq?@cDmy;{VmEVI^e(n$&J;n%whz)bvG%#6s=OE_9){i8T0xmC_FJ)gw2pkN9w! zPY6r1D*WLfIvnZf*iGg_6Qtb_^Pm!{pc>{w4O|Sh;DS1+hX!b5CYH=bv-8*(HkO&0 zg;|-6*;xu3cRw^k3oL+zut?M(xCEbDp$)vKP3N;IESKf6{HQh+;&TxzV@pNNa&vm8 z(AwSJE`)~NB1K|KRd;8^7er+c?^hG@b$LR)m7d-}cf`#(N`xhWkWl66@pbuD38jIq zpeN)D2mDn5ui&l^3!y<37~BfKwhTSGxfGYsiPsmrL;Q~(Q{ndtJvE+4hbS9S7ScHK zOniyaDseW&DJ=0IjWwc64@c1AYK34(2;+k%f<8XHI7Xf~s?TmNH7MO8c4#yLct@^s zbEeqvplG9uQEUbzY4FG>ArcjnewP!zaGZvikh@_er1ilHmf8nBY`i3dhPpWaDb94Nl z&Q=ObB6WdUUwcP{!(ea%_QL}h79PYH`w-eewJWZBm4d%L(t$cR>|2AUvs>T@E0B(T z1Rh;5Y_uN^z_#HZVvINlk3-sy9nA3#JPA+Xafjh)I0DbWv+x`|k4MCUMP;BZs;%W7&vtII?-OCAZ?D5{n-Aa0i# zcWSOksJkuF9TFs!dkK#A!OLtqn|T6Wh1Zbc*U^={*)nuSee`s85&DrC&7~MFQf8xe zNNhO<$K9L-kCcFu6iPxE0S0;N3-u%8Q7FGVN7`#Qywfkr+pz98>E8)>56SrxybmA1 zhYP%eQMSIevN_`G!qDaE3bGPb%D~MXUE=E$reC!&M@)_h52{sQaz;44-> zz#95K3gABXW{J z6hui>L`_B!4L)f}5*k!YnMT~Y8l~dq#)+yVLZQ0eppY4kh}t}oYe*_8Uql%4J#NnI zk79^Hn>%y9e#EGF&Tw_c)iHX?dN8bs`O1*_v36F^8dw$Uz$X`5GR(0Mj_5_lLX51I zRY(26#Zj)2WVC8Bn$3?}H5n^fHLDqE#OF3O$*4|{@yNgl@FAH9?~5?H)e{!b&5jt6gZC{UlA)sL^eKu1rr5!GxsRnWAoE{2z3aB$GHGZGdEv zY?8woSrcm>AX7*#$zv_d%LFk-rbpe`lp1NFB03m zs4S%-_IGm^oMU&l^lkWTiJQ|zZcb+l*vz-dOms--mdGqpOiD;;b2y4?P-1K`Tf`Q! zw*N=YD7E;xqHDif;P^2nw%KGZr1g_Iq=LEGCH-U`sbn73${Y=nd>SO)VGKT-m1l$w z;v#i!&N@O2XNq-z)RP8Loqm7Xx&7feiHKdKnY2h@+RYV2Nyr>Qh^spo41^+?(yd}- zjhu7leca>{DK9+BDfJVNcnL9QJZnrcpElw}7<%S-)G_uGL0o+9!Ps@$NhhT3Bpt*@ zmXc*`8S7+S%)gU#5kCo#APcZ=wvzQQN0SJOL^RkO#YN&%iv*XVI6itz9GJ#IZ|shzcu3EFZ4*tc-#x zw7#(;M+Z{_S6d*64mf4RV01ak0t0zl$QQ(bf$Nh;Oo{F;dTYsAuZE*LM86lU0+0=4 zBcg9|9b3@{3y?lB1;Th74s;6TzRrjc5-%Q`yoGFyL3MHy>tzmU$6FAVlUvDcY!zD* z4|-%f*>NW3B^@w{3?Tp0*lL!ZI%{=G6yV0T-$U*_YlRP2>_>T}v9-|^+=vwqlSktO z9boHX1U(Mx2FMfS5P6a@b~(Fph^VK@b7vlbDe@%pA|}Ua>@x9)<VpAXX~kd?*`EfRv!dkCUbw zSFgr8O14;1aTMgFrxfPr#VaaQP8E>cM-$jheN@S|#nLs&T#KVO8ssn4P%UaCO=LIs z(Ij>Ya}4>x*c6_cP_)#5!QocciVxI)54SQ$O>BmlTI1*0*zGJmHZYE+#&;JNIbs77 z>E!r|G`4+cMF!23Jb7$p4xJ)y;b3?5(Oh=7s8Hj&k%tHdmI#O%y`>1<+7WjSVJ)YW ze$zr&w*zq|od!BOon9n@9xnpH`Fi;+t+5I-p)z@bLV3aewzB+ZPN!0j(j;n=bex_y z7){Be&l@w=Y%$yHDdWyh9Y0}FwQE@I4{50LMLJQT^jNTy2Bfl`5W<=!CL<+cRSE-P9Ck%|JF(Ie zUWS1+c4j<%tZ+)l&JG2m=O6_Y-X6@{CEBXHyIO@1BTU8=Dm9~OEPBe>C{Bk3P$LIe zZvW}j1Dt8%q{(R)re|d4MN`jJEOB$TYS&POs=lJkFXnbwbVBVD{B1&i z(X^rR$wf1=W)_!V>noh-{m>QR zrAH3AutFEDDPyWLJ{Ku1&dV#x$So``$S5l>F3cz_DidGJoQ00O+;T^@W8rF%zv(GC zIgaeLc(tl(6zK57`m3g$sJS?+)`ggDOib1i9TJZR3)S|KW5c(I&X9_>KXC0-2e zLw;(ICKUQwk*KETxRyyL_cu+$&kGigtWPbNwm7?|U`e6F+vZ)8=kR7@D@PAwvEDuz zyEO≈-z&*oCqw__0%Xpn}m!?A+) z&{f#o*p8iyN3e@=ke;Mp)9>hSGAdKcCdg*XDrECyRkC&&lU*gdNp_2DyKJBAzG%qA z-iq`KiwA!Pe`HUxz9@jCGwCe!8-v9&F?k)pPsOke{ek!v^Nppn64LfkCoQApbT*ws zE0EB6Y=G@#yV!2FhwWwi*gbn;60N55X$`%Y)>0R(!>E2Qdy+lP-eiAZ$JlYvry5Hz zsxJ!$eEvu{+Act^iqUZFV8K)Zx?;=}!sUSwW`^N~Qdhy%)**;_wo!Vm?e-(Ii}?J} zY8VE(n3+m?C4xoiNvr|-+i@vIRI!9z;a?KK>9L>~pMIVcbw@&X@%$JQ+|+{sf+Vpe zeYBO`Hxy$8+Aa=gnX8X>u=|GwmeBxatF)7LQ9s+y9$*g+pjemF5POI{!48S+I9K`^ zBQ18LSP=*Bbgt?DN7*Xv!EBZGvWJIdt8@)r3-6Os_9%MtFv1|FdF~*b2=~ZIL zzJgxK4zS1i>3VuKJIEgYA0~FcmvYffbo0nSy_IegL;6kZsXlr$JB(%QD5B}YW|ZjF z&c+pY&|Q$c4^8M!dKbN$?x20NpAOKS>c%=uAe1vD6N91djIY=;^sb0_qgTi{V{B?pX>mzmL5?G% zFsGaZy80VZJ**x4~B_pc!hXznZx1#uW(%p0~O8GvzAG^dy=(E@h zev!V6{ovQIBm4(?Qf8OUm37Lt$sUruF8fmUgB;{kE|)9hD)}gRqI`_pEVs(-@^SK1 z`2_hyd7gZZe5HJY{7(6U^274?gRsi*l>-cI9^EUCJHGe&wUe1InkBFDu_wex&?D zd0Hh`X;dky^Ht+jIjS;Mld46vP$j6At5&EkS8Y;lR&7yjRqa(hsd`oQk?JSa&#GTk zzp05@rp{B(P#3F9)n)2h^&)kfT2QyEed@4!jrtDt4)qcBQS}?@ch#S%zg7RF{#pHt z`nOT9jyf^wucJ(h2?S898;tF>2Z zH)uC$_h}!~9@ZYwKC69R`>OVJ?VH-Sw8xW3Qg%{vQfrcs)Sl!^T9tHV()y%pk~So5 z)HUiZ(RJxUx`=LtZnbW$Zk_Hj-8H&Rx}CcHx`Vnu>Q3r@<&4~9E}tvl3c0CVgu9fx zn!Ae|;0|%mb02UYb3f`6^htU|_j;o~S#Q^m)2Heu=qKtY>mB;(`q_H7zEj_=U#aia zuhy^Cuh(Cr-=N>9zd^rQzhD2F{xq-TIUZ93K7~)^C-9T_G(Mf5#aHn)d@WzkH}cJV zE8ouh_+@+-zly(%zkyIU|3{WVh9^n8P*ssH88`~hHDMi8Ll^MGV~knH9T%OY&c?g*6@xPewG9zcS8^;+_jT4L$jgyTR8Z(U3jWdk1j3q{=vD`SvIM-NdTwq*f++sXn{Mh)t zX`HFhRA!oEnro^u%{N_aYBL2*VN08s^Og|(;GD)V%@??FoF*!MTOtLxI znp~VbH+f!iRdPe};;}!C{n;!x^X4(;6my1ohIy8`#OySeo9CG4nk&uKX1Cd6ZZiw! zcC*jC%-m%Tn3tQcG4C=zY<|W3f%!+vD9Z$k!;)tyuuQc~x6H82vs7DZEG|pErP1QG zEVFc30+!{L9?L4r8q1{?W_iGJ(yFv_R)f`K9c`UtO|zz3Gp*UyB5S#Ip0&z4-&$vF zur^s+tR8EJb*=Sk>vrot>pj+ct@m3GSr1!}Sf8`LV13E@w)Ld-YwNEzuu+@brm(4O zqil(`BpYW-wN0>1v`w~MXv?r=*>Y@CY + + + + SchemeUserState + + Crab Game.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Crab Game/Crab Game/AppDelegate.swift b/Crab Game/Crab Game/AppDelegate.swift new file mode 100644 index 00000000..e8bde79e --- /dev/null +++ b/Crab Game/Crab Game/AppDelegate.swift @@ -0,0 +1,37 @@ +// +// AppDelegate.swift +// Crab Game +// +// Created by Ian Becker on 5/18/20. +// Copyright © 2020 Ian Becker. 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/Crab Game/Crab Game/Assets.xcassets/AppIcon.appiconset/Contents.json b/Crab Game/Crab Game/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..9221b9bb --- /dev/null +++ b/Crab Game/Crab Game/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 Game/Crab Game/Assets.xcassets/Contents.json b/Crab Game/Crab Game/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Crab Game/Crab Game/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Crab Game/Crab Game/Base.lproj/LaunchScreen.storyboard b/Crab Game/Crab Game/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..865e9329 --- /dev/null +++ b/Crab Game/Crab Game/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crab Game/Crab Game/Base.lproj/Main.storyboard b/Crab Game/Crab Game/Base.lproj/Main.storyboard new file mode 100644 index 00000000..25a76385 --- /dev/null +++ b/Crab Game/Crab Game/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crab Game/Crab Game/Info.plist b/Crab Game/Crab Game/Info.plist new file mode 100644 index 00000000..2a3483c0 --- /dev/null +++ b/Crab Game/Crab Game/Info.plist @@ -0,0 +1,64 @@ + + + + + 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 + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Crab Game/Crab Game/SceneDelegate.swift b/Crab Game/Crab Game/SceneDelegate.swift new file mode 100644 index 00000000..94a3a404 --- /dev/null +++ b/Crab Game/Crab Game/SceneDelegate.swift @@ -0,0 +1,53 @@ +// +// SceneDelegate.swift +// Crab Game +// +// Created by Ian Becker on 5/18/20. +// Copyright © 2020 Ian Becker. 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/Crab Game/Crab Game/ViewController.swift b/Crab Game/Crab Game/ViewController.swift new file mode 100644 index 00000000..badc7fc0 --- /dev/null +++ b/Crab Game/Crab Game/ViewController.swift @@ -0,0 +1,20 @@ +// +// ViewController.swift +// Crab Game +// +// Created by Ian Becker on 5/18/20. +// Copyright © 2020 Ian Becker. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + From 832994251767e3d4a182bf1c3595b35d97d16ba7 Mon Sep 17 00:00:00 2001 From: Ian Becker Date: Mon, 18 May 2020 13:33:42 -0700 Subject: [PATCH 2/3] Setup project, built settings model, main and info storyboards, set up info sequence, in the process of building the settings screen. --- Crab Game/Crab Game.xcodeproj/project.pbxproj | 32 ++++- .../UserInterfaceState.xcuserstate | Bin 9609 -> 35142 bytes .../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 .../Crab Game/Base.lproj/Main.storyboard | 132 +++++++++++++++-- Crab Game/Crab Game/GameViewController.swift | 13 ++ Crab Game/Crab Game/Info.plist | 2 - Crab Game/Crab Game/InfoViewController.swift | 13 ++ Crab Game/Crab Game/Settings.swift | 17 +++ .../Crab Game/SettingsViewController.swift | 22 +++ Crab Game/Crab Game/ViewController.swift | 20 --- Crab Game/Crab Game/info.storyboard | 134 ++++++++++++++++++ 22 files changed, 418 insertions(+), 36 deletions(-) create mode 100644 Crab Game/Crab Game/Assets.xcassets/game_controller.imageset/Contents.json create mode 100644 Crab Game/Crab Game/Assets.xcassets/game_controller.imageset/game_controller.png create mode 100644 Crab Game/Crab Game/Assets.xcassets/game_controller.imageset/game_controller@2x.png create mode 100644 Crab Game/Crab Game/Assets.xcassets/game_controller.imageset/game_controller@3x.png create mode 100644 Crab Game/Crab Game/Assets.xcassets/info.imageset/Contents.json create mode 100644 Crab Game/Crab Game/Assets.xcassets/info.imageset/info.png create mode 100644 Crab Game/Crab Game/Assets.xcassets/info.imageset/info@2x.png create mode 100644 Crab Game/Crab Game/Assets.xcassets/info.imageset/info@3x.png create mode 100644 Crab Game/Crab Game/Assets.xcassets/settings.imageset/Contents.json create mode 100644 Crab Game/Crab Game/Assets.xcassets/settings.imageset/settings.png create mode 100644 Crab Game/Crab Game/Assets.xcassets/settings.imageset/settings@2x.png create mode 100644 Crab Game/Crab Game/Assets.xcassets/settings.imageset/settings@3x.png create mode 100644 Crab Game/Crab Game/GameViewController.swift create mode 100644 Crab Game/Crab Game/InfoViewController.swift create mode 100644 Crab Game/Crab Game/Settings.swift create mode 100644 Crab Game/Crab Game/SettingsViewController.swift delete mode 100644 Crab Game/Crab Game/ViewController.swift create mode 100644 Crab Game/Crab Game/info.storyboard diff --git a/Crab Game/Crab Game.xcodeproj/project.pbxproj b/Crab Game/Crab Game.xcodeproj/project.pbxproj index aeba4123..77b91d7b 100644 --- a/Crab Game/Crab Game.xcodeproj/project.pbxproj +++ b/Crab Game/Crab Game.xcodeproj/project.pbxproj @@ -9,21 +9,33 @@ /* Begin PBXBuildFile section */ 4B8E6737247313D200ED4570 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E6736247313D200ED4570 /* AppDelegate.swift */; }; 4B8E6739247313D200ED4570 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E6738247313D200ED4570 /* SceneDelegate.swift */; }; - 4B8E673B247313D200ED4570 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E673A247313D200ED4570 /* ViewController.swift */; }; 4B8E673E247313D200ED4570 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E673C247313D200ED4570 /* Main.storyboard */; }; 4B8E6740247313D300ED4570 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E673F247313D300ED4570 /* Assets.xcassets */; }; 4B8E6743247313D300ED4570 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E6741247313D300ED4570 /* LaunchScreen.storyboard */; }; + 4B8E674B2473161C00ED4570 /* Crab.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E674A2473161C00ED4570 /* Crab.xcassets */; }; + 4B8E674D2473163B00ED4570 /* SKSpriteNode+Utility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E674C2473163B00ED4570 /* SKSpriteNode+Utility.swift */; }; + 4B8E67512473167800ED4570 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E67502473167800ED4570 /* Settings.swift */; }; + 4B8E675524731C1100ED4570 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E675424731C1100ED4570 /* GameViewController.swift */; }; + 4B8E675724731C3900ED4570 /* InfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E675624731C3900ED4570 /* InfoViewController.swift */; }; + 4B8E675924731C4D00ED4570 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E675824731C4D00ED4570 /* SettingsViewController.swift */; }; + 4B8E675B247322FF00ED4570 /* info.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E675A247322FF00ED4570 /* info.storyboard */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 4B8E6733247313D200ED4570 /* Crab Game.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Crab Game.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 4B8E6736247313D200ED4570 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4B8E6738247313D200ED4570 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 4B8E673A247313D200ED4570 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 4B8E673D247313D200ED4570 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 4B8E673F247313D300ED4570 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 4B8E6742247313D300ED4570 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 4B8E6744247313D300ED4570 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4B8E674A2473161C00ED4570 /* Crab.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Crab.xcassets; path = ../../Crab.xcassets; sourceTree = ""; }; + 4B8E674C2473163B00ED4570 /* SKSpriteNode+Utility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "SKSpriteNode+Utility.swift"; path = "../../SKSpriteNode+Utility.swift"; sourceTree = ""; }; + 4B8E67502473167800ED4570 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = ""; }; + 4B8E675424731C1100ED4570 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; + 4B8E675624731C3900ED4570 /* InfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoViewController.swift; sourceTree = ""; }; + 4B8E675824731C4D00ED4570 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; + 4B8E675A247322FF00ED4570 /* info.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = info.storyboard; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -56,11 +68,17 @@ 4B8E6735247313D200ED4570 /* Crab Game */ = { isa = PBXGroup; children = ( + 4B8E674C2473163B00ED4570 /* SKSpriteNode+Utility.swift */, 4B8E6736247313D200ED4570 /* AppDelegate.swift */, 4B8E6738247313D200ED4570 /* SceneDelegate.swift */, - 4B8E673A247313D200ED4570 /* ViewController.swift */, 4B8E673C247313D200ED4570 /* Main.storyboard */, + 4B8E675A247322FF00ED4570 /* info.storyboard */, + 4B8E675624731C3900ED4570 /* InfoViewController.swift */, + 4B8E675824731C4D00ED4570 /* SettingsViewController.swift */, + 4B8E675424731C1100ED4570 /* GameViewController.swift */, + 4B8E67502473167800ED4570 /* Settings.swift */, 4B8E673F247313D300ED4570 /* Assets.xcassets */, + 4B8E674A2473161C00ED4570 /* Crab.xcassets */, 4B8E6741247313D300ED4570 /* LaunchScreen.storyboard */, 4B8E6744247313D300ED4570 /* Info.plist */, ); @@ -126,6 +144,8 @@ buildActionMask = 2147483647; files = ( 4B8E6743247313D300ED4570 /* LaunchScreen.storyboard in Resources */, + 4B8E674B2473161C00ED4570 /* Crab.xcassets in Resources */, + 4B8E675B247322FF00ED4570 /* info.storyboard in Resources */, 4B8E6740247313D300ED4570 /* Assets.xcassets in Resources */, 4B8E673E247313D200ED4570 /* Main.storyboard in Resources */, ); @@ -138,8 +158,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4B8E673B247313D200ED4570 /* ViewController.swift in Sources */, + 4B8E675524731C1100ED4570 /* GameViewController.swift in Sources */, + 4B8E674D2473163B00ED4570 /* SKSpriteNode+Utility.swift in Sources */, + 4B8E675924731C4D00ED4570 /* SettingsViewController.swift in Sources */, 4B8E6737247313D200ED4570 /* AppDelegate.swift in Sources */, + 4B8E67512473167800ED4570 /* Settings.swift in Sources */, + 4B8E675724731C3900ED4570 /* InfoViewController.swift in Sources */, 4B8E6739247313D200ED4570 /* SceneDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcuserdata/ianbecker.xcuserdatad/UserInterfaceState.xcuserstate b/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcuserdata/ianbecker.xcuserdatad/UserInterfaceState.xcuserstate index 29f8deae62ea7585747e6d822329c2425021c165..7b4696bea6073fd439725ac0ce7dcb7a3bfe19c0 100644 GIT binary patch literal 35142 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 diff --git a/Crab Game/Crab Game/Assets.xcassets/game_controller.imageset/Contents.json b/Crab Game/Crab Game/Assets.xcassets/game_controller.imageset/Contents.json new file mode 100644 index 00000000..3749084c --- /dev/null +++ b/Crab Game/Crab Game/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/Crab Game/Crab Game/Assets.xcassets/game_controller.imageset/game_controller.png b/Crab Game/Crab Game/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/Crab Game/Crab Game/Assets.xcassets/game_controller.imageset/game_controller@3x.png b/Crab Game/Crab Game/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/Crab Game/Crab Game/Assets.xcassets/info.imageset/Contents.json b/Crab Game/Crab Game/Assets.xcassets/info.imageset/Contents.json new file mode 100644 index 00000000..0a927f68 --- /dev/null +++ b/Crab Game/Crab Game/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/Crab Game/Crab Game/Assets.xcassets/info.imageset/info.png b/Crab Game/Crab Game/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/Crab Game/Crab Game/Assets.xcassets/settings.imageset/Contents.json b/Crab Game/Crab Game/Assets.xcassets/settings.imageset/Contents.json new file mode 100644 index 00000000..e30c46c5 --- /dev/null +++ b/Crab Game/Crab Game/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/Crab Game/Crab Game/Assets.xcassets/settings.imageset/settings.png b/Crab Game/Crab Game/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/Crab Game/Crab Game/Assets.xcassets/settings.imageset/settings@2x.png b/Crab Game/Crab Game/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/Crab Game/Crab Game/Assets.xcassets/settings.imageset/settings@3x.png b/Crab Game/Crab Game/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/Crab Game/Crab Game/Base.lproj/Main.storyboard b/Crab Game/Crab Game/Base.lproj/Main.storyboard index 25a76385..0dab6c09 100644 --- a/Crab Game/Crab Game/Base.lproj/Main.storyboard +++ b/Crab Game/Crab Game/Base.lproj/Main.storyboard @@ -1,24 +1,136 @@ - + + - + - - + + - - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crab Game/Crab Game/GameViewController.swift b/Crab Game/Crab Game/GameViewController.swift new file mode 100644 index 00000000..0662260c --- /dev/null +++ b/Crab Game/Crab Game/GameViewController.swift @@ -0,0 +1,13 @@ +// +// GameViewController.swift +// Crab Game +// +// Created by Ian Becker on 5/18/20. +// Copyright © 2020 Ian Becker. All rights reserved. +// + +import UIKit + +class GameViewController: UIViewController { + +} diff --git a/Crab Game/Crab Game/Info.plist b/Crab Game/Crab Game/Info.plist index 2a3483c0..b5f9c079 100644 --- a/Crab Game/Crab Game/Info.plist +++ b/Crab Game/Crab Game/Info.plist @@ -50,8 +50,6 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad diff --git a/Crab Game/Crab Game/InfoViewController.swift b/Crab Game/Crab Game/InfoViewController.swift new file mode 100644 index 00000000..ddc4af19 --- /dev/null +++ b/Crab Game/Crab Game/InfoViewController.swift @@ -0,0 +1,13 @@ +// +// InfoViewController.swift +// Crab Game +// +// Created by Ian Becker on 5/18/20. +// Copyright © 2020 Ian Becker. All rights reserved. +// + +import UIKit + +class InfoViewController: UIViewController { + @IBAction func unwindToInfoViewController(_ sender: UIStoryboardSegue) { } +} diff --git a/Crab Game/Crab Game/Settings.swift b/Crab Game/Crab Game/Settings.swift new file mode 100644 index 00000000..b5941d43 --- /dev/null +++ b/Crab Game/Crab Game/Settings.swift @@ -0,0 +1,17 @@ +// +// Settings.swift +// Crab Game +// +// Created by Ian Becker on 5/18/20. +// Copyright © 2020 Ian Becker. All rights reserved. +// + +import Foundation + +class Settings { + static let shared = Settings() + private init() {} + + var shouldRoll = false + var shouldZoom = false +} diff --git a/Crab Game/Crab Game/SettingsViewController.swift b/Crab Game/Crab Game/SettingsViewController.swift new file mode 100644 index 00000000..d4fafcb7 --- /dev/null +++ b/Crab Game/Crab Game/SettingsViewController.swift @@ -0,0 +1,22 @@ +// +// SettingsViewController.swift +// Crab Game +// +// Created by Ian Becker on 5/18/20. +// Copyright © 2020 Ian Becker. All rights reserved. +// + +import UIKit + +class SettingsViewController: UIViewController { + + @IBAction func toggleRoll(_ sender: UISwitch) { + + } + + @IBAction func toggleZoom(_ sender: UISwitch) { + + } + + +} diff --git a/Crab Game/Crab Game/ViewController.swift b/Crab Game/Crab Game/ViewController.swift deleted file mode 100644 index badc7fc0..00000000 --- a/Crab Game/Crab Game/ViewController.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// ViewController.swift -// Crab Game -// -// Created by Ian Becker on 5/18/20. -// Copyright © 2020 Ian Becker. All rights reserved. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view. - } - - -} - diff --git a/Crab Game/Crab Game/info.storyboard b/Crab Game/Crab Game/info.storyboard new file mode 100644 index 00000000..afbf7ba8 --- /dev/null +++ b/Crab Game/Crab Game/info.storyboard @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 8a77f90653dcaf6e6c3119db294bb2a94ed15e0a Mon Sep 17 00:00:00 2001 From: Ian Becker Date: Mon, 18 May 2020 16:43:58 -0700 Subject: [PATCH 3/3] Finished setting screen and toggle buttons. Built game screen with spritekit, and finished app. Will attempt stretch goals and try to turn toggle functions into single lines. --- Crab Game/Crab Game.xcodeproj/project.pbxproj | 4 ++ .../UserInterfaceState.xcuserstate | Bin 35142 -> 33470 bytes .../Crab Game/Base.lproj/Main.storyboard | 14 +++++ Crab Game/Crab Game/CustomScene.swift | 51 ++++++++++++++++++ Crab Game/Crab Game/GameViewController.swift | 11 +++- .../Crab Game/SettingsViewController.swift | 16 ++++-- Crab Game/Crab Game/info.storyboard | 7 ++- 7 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 Crab Game/Crab Game/CustomScene.swift diff --git a/Crab Game/Crab Game.xcodeproj/project.pbxproj b/Crab Game/Crab Game.xcodeproj/project.pbxproj index 77b91d7b..52f6e1cf 100644 --- a/Crab Game/Crab Game.xcodeproj/project.pbxproj +++ b/Crab Game/Crab Game.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ 4B8E675724731C3900ED4570 /* InfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E675624731C3900ED4570 /* InfoViewController.swift */; }; 4B8E675924731C4D00ED4570 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E675824731C4D00ED4570 /* SettingsViewController.swift */; }; 4B8E675B247322FF00ED4570 /* info.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B8E675A247322FF00ED4570 /* info.storyboard */; }; + 4B8E675D247343BB00ED4570 /* CustomScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E675C247343BB00ED4570 /* CustomScene.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -36,6 +37,7 @@ 4B8E675624731C3900ED4570 /* InfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoViewController.swift; sourceTree = ""; }; 4B8E675824731C4D00ED4570 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; 4B8E675A247322FF00ED4570 /* info.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = info.storyboard; sourceTree = ""; }; + 4B8E675C247343BB00ED4570 /* CustomScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomScene.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -76,6 +78,7 @@ 4B8E675624731C3900ED4570 /* InfoViewController.swift */, 4B8E675824731C4D00ED4570 /* SettingsViewController.swift */, 4B8E675424731C1100ED4570 /* GameViewController.swift */, + 4B8E675C247343BB00ED4570 /* CustomScene.swift */, 4B8E67502473167800ED4570 /* Settings.swift */, 4B8E673F247313D300ED4570 /* Assets.xcassets */, 4B8E674A2473161C00ED4570 /* Crab.xcassets */, @@ -163,6 +166,7 @@ 4B8E675924731C4D00ED4570 /* SettingsViewController.swift in Sources */, 4B8E6737247313D200ED4570 /* AppDelegate.swift in Sources */, 4B8E67512473167800ED4570 /* Settings.swift in Sources */, + 4B8E675D247343BB00ED4570 /* CustomScene.swift in Sources */, 4B8E675724731C3900ED4570 /* InfoViewController.swift in Sources */, 4B8E6739247313D200ED4570 /* SceneDelegate.swift in Sources */, ); diff --git a/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcuserdata/ianbecker.xcuserdatad/UserInterfaceState.xcuserstate b/Crab Game/Crab Game.xcodeproj/project.xcworkspace/xcuserdata/ianbecker.xcuserdatad/UserInterfaceState.xcuserstate index 7b4696bea6073fd439725ac0ce7dcb7a3bfe19c0..a3ee8e1f40321b07ec9e93ba8bef20f43fc003c6 100644 GIT binary patch delta 13714 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 I@56WfA3_|}dH?_b diff --git a/Crab Game/Crab Game/Base.lproj/Main.storyboard b/Crab Game/Crab Game/Base.lproj/Main.storyboard index 0dab6c09..b5e88df7 100644 --- a/Crab Game/Crab Game/Base.lproj/Main.storyboard +++ b/Crab Game/Crab Game/Base.lproj/Main.storyboard @@ -89,10 +89,24 @@ + + + + + + + + + + + + + + diff --git a/Crab Game/Crab Game/CustomScene.swift b/Crab Game/Crab Game/CustomScene.swift new file mode 100644 index 00000000..6a6c8640 --- /dev/null +++ b/Crab Game/Crab Game/CustomScene.swift @@ -0,0 +1,51 @@ +// +// CustomScene.swift +// Crab Game +// +// Created by Ian Becker on 5/18/20. +// Copyright © 2020 Ian Becker. 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/Crab Game/Crab Game/GameViewController.swift b/Crab Game/Crab Game/GameViewController.swift index 0662260c..02f06c4c 100644 --- a/Crab Game/Crab Game/GameViewController.swift +++ b/Crab Game/Crab Game/GameViewController.swift @@ -7,7 +7,16 @@ // 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/Crab Game/Crab Game/SettingsViewController.swift b/Crab Game/Crab Game/SettingsViewController.swift index d4fafcb7..5829b27b 100644 --- a/Crab Game/Crab Game/SettingsViewController.swift +++ b/Crab Game/Crab Game/SettingsViewController.swift @@ -11,12 +11,20 @@ import UIKit class SettingsViewController: UIViewController { @IBAction func toggleRoll(_ sender: UISwitch) { - + // If switch is on then roll + if sender.isOn == true { + // We want the crab to roll + Settings.shared.shouldRoll = true + } else { + Settings.shared.shouldRoll = false + } } @IBAction func toggleZoom(_ sender: UISwitch) { - + if sender.isOn == true { + Settings.shared.shouldZoom = true + } else { + Settings.shared.shouldZoom = false + } } - - } diff --git a/Crab Game/Crab Game/info.storyboard b/Crab Game/Crab Game/info.storyboard index afbf7ba8..ace6cc20 100644 --- a/Crab Game/Crab Game/info.storyboard +++ b/Crab Game/Crab Game/info.storyboard @@ -112,11 +112,13 @@ - + + + @@ -131,4 +133,7 @@ + + +