From 7a1108d5a7a0a323cb3b625411a07f50dfebb52a Mon Sep 17 00:00:00 2001 From: Andrew Gerst Date: Wed, 15 Apr 2020 20:24:52 -0400 Subject: [PATCH 1/9] initial project setup --- .../GlobalWordRacer.xcodeproj/project.pbxproj | 599 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../GlobalWordRacer/AppDelegate.swift | 37 ++ .../AppIcon.appiconset/Contents.json | 98 +++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 + .../GlobalWordRacer/ContentView.swift | 21 + GlobalWordRacer/GlobalWordRacer/Info.plist | 60 ++ .../Preview Assets.xcassets/Contents.json | 6 + .../GlobalWordRacer/SceneDelegate.swift | 64 ++ .../GlobalWordRacerTests.swift | 34 + .../GlobalWordRacerTests/Info.plist | 22 + .../GlobalWordRacerUITests.swift | 43 ++ .../GlobalWordRacerUITests/Info.plist | 22 + 15 files changed, 1052 insertions(+) create mode 100644 GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj create mode 100644 GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 GlobalWordRacer/GlobalWordRacer/AppDelegate.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/Contents.json create mode 100644 GlobalWordRacer/GlobalWordRacer/Base.lproj/LaunchScreen.storyboard create mode 100644 GlobalWordRacer/GlobalWordRacer/ContentView.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/Info.plist create mode 100644 GlobalWordRacer/GlobalWordRacer/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 GlobalWordRacer/GlobalWordRacer/SceneDelegate.swift create mode 100644 GlobalWordRacer/GlobalWordRacerTests/GlobalWordRacerTests.swift create mode 100644 GlobalWordRacer/GlobalWordRacerTests/Info.plist create mode 100644 GlobalWordRacer/GlobalWordRacerUITests/GlobalWordRacerUITests.swift create mode 100644 GlobalWordRacer/GlobalWordRacerUITests/Info.plist diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c83d44c --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj @@ -0,0 +1,599 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620B2447DA6300812AED /* AppDelegate.swift */; }; + F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620D2447DA6300812AED /* SceneDelegate.swift */; }; + F7F362102447DA6300812AED /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620F2447DA6300812AED /* ContentView.swift */; }; + F7F362122447DA6900812AED /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7F362112447DA6900812AED /* Assets.xcassets */; }; + F7F362152447DA6900812AED /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7F362142447DA6900812AED /* Preview Assets.xcassets */; }; + F7F362182447DA6900812AED /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7F362162447DA6900812AED /* LaunchScreen.storyboard */; }; + F7F362232447DA6900812AED /* GlobalWordRacerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F362222447DA6900812AED /* GlobalWordRacerTests.swift */; }; + F7F3622E2447DA6900812AED /* GlobalWordRacerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3622D2447DA6900812AED /* GlobalWordRacerUITests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + F7F3621F2447DA6900812AED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F7F362002447DA6300812AED /* Project object */; + proxyType = 1; + remoteGlobalIDString = F7F362072447DA6300812AED; + remoteInfo = GlobalWordRacer; + }; + F7F3622A2447DA6900812AED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F7F362002447DA6300812AED /* Project object */; + proxyType = 1; + remoteGlobalIDString = F7F362072447DA6300812AED; + remoteInfo = GlobalWordRacer; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + F7F362082447DA6300812AED /* GlobalWordRacer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GlobalWordRacer.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F7F3620B2447DA6300812AED /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + F7F3620D2447DA6300812AED /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + F7F3620F2447DA6300812AED /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + F7F362112447DA6900812AED /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + F7F362142447DA6900812AED /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + F7F362172447DA6900812AED /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + F7F362192447DA6900812AED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F7F3621E2447DA6900812AED /* GlobalWordRacerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GlobalWordRacerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F7F362222447DA6900812AED /* GlobalWordRacerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalWordRacerTests.swift; sourceTree = ""; }; + F7F362242447DA6900812AED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F7F362292447DA6900812AED /* GlobalWordRacerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GlobalWordRacerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F7F3622D2447DA6900812AED /* GlobalWordRacerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalWordRacerUITests.swift; sourceTree = ""; }; + F7F3622F2447DA6900812AED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F7F362052447DA6300812AED /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F7F3621B2447DA6900812AED /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F7F362262447DA6900812AED /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + F7F361FF2447DA6300812AED = { + isa = PBXGroup; + children = ( + F7F3620A2447DA6300812AED /* GlobalWordRacer */, + F7F362212447DA6900812AED /* GlobalWordRacerTests */, + F7F3622C2447DA6900812AED /* GlobalWordRacerUITests */, + F7F362092447DA6300812AED /* Products */, + ); + sourceTree = ""; + }; + F7F362092447DA6300812AED /* Products */ = { + isa = PBXGroup; + children = ( + F7F362082447DA6300812AED /* GlobalWordRacer.app */, + F7F3621E2447DA6900812AED /* GlobalWordRacerTests.xctest */, + F7F362292447DA6900812AED /* GlobalWordRacerUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + F7F3620A2447DA6300812AED /* GlobalWordRacer */ = { + isa = PBXGroup; + children = ( + F7F3620B2447DA6300812AED /* AppDelegate.swift */, + F7F3620D2447DA6300812AED /* SceneDelegate.swift */, + F7F3620F2447DA6300812AED /* ContentView.swift */, + F7F362112447DA6900812AED /* Assets.xcassets */, + F7F362162447DA6900812AED /* LaunchScreen.storyboard */, + F7F362192447DA6900812AED /* Info.plist */, + F7F362132447DA6900812AED /* Preview Content */, + ); + path = GlobalWordRacer; + sourceTree = ""; + }; + F7F362132447DA6900812AED /* Preview Content */ = { + isa = PBXGroup; + children = ( + F7F362142447DA6900812AED /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + F7F362212447DA6900812AED /* GlobalWordRacerTests */ = { + isa = PBXGroup; + children = ( + F7F362222447DA6900812AED /* GlobalWordRacerTests.swift */, + F7F362242447DA6900812AED /* Info.plist */, + ); + path = GlobalWordRacerTests; + sourceTree = ""; + }; + F7F3622C2447DA6900812AED /* GlobalWordRacerUITests */ = { + isa = PBXGroup; + children = ( + F7F3622D2447DA6900812AED /* GlobalWordRacerUITests.swift */, + F7F3622F2447DA6900812AED /* Info.plist */, + ); + path = GlobalWordRacerUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + F7F362072447DA6300812AED /* GlobalWordRacer */ = { + isa = PBXNativeTarget; + buildConfigurationList = F7F362322447DA6900812AED /* Build configuration list for PBXNativeTarget "GlobalWordRacer" */; + buildPhases = ( + F7F362042447DA6300812AED /* Sources */, + F7F362052447DA6300812AED /* Frameworks */, + F7F362062447DA6300812AED /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GlobalWordRacer; + productName = GlobalWordRacer; + productReference = F7F362082447DA6300812AED /* GlobalWordRacer.app */; + productType = "com.apple.product-type.application"; + }; + F7F3621D2447DA6900812AED /* GlobalWordRacerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = F7F362352447DA6900812AED /* Build configuration list for PBXNativeTarget "GlobalWordRacerTests" */; + buildPhases = ( + F7F3621A2447DA6900812AED /* Sources */, + F7F3621B2447DA6900812AED /* Frameworks */, + F7F3621C2447DA6900812AED /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + F7F362202447DA6900812AED /* PBXTargetDependency */, + ); + name = GlobalWordRacerTests; + productName = GlobalWordRacerTests; + productReference = F7F3621E2447DA6900812AED /* GlobalWordRacerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + F7F362282447DA6900812AED /* GlobalWordRacerUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = F7F362382447DA6900812AED /* Build configuration list for PBXNativeTarget "GlobalWordRacerUITests" */; + buildPhases = ( + F7F362252447DA6900812AED /* Sources */, + F7F362262447DA6900812AED /* Frameworks */, + F7F362272447DA6900812AED /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + F7F3622B2447DA6900812AED /* PBXTargetDependency */, + ); + name = GlobalWordRacerUITests; + productName = GlobalWordRacerUITests; + productReference = F7F362292447DA6900812AED /* GlobalWordRacerUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F7F362002447DA6300812AED /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1140; + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = "Andrew Gerst"; + TargetAttributes = { + F7F362072447DA6300812AED = { + CreatedOnToolsVersion = 11.4; + }; + F7F3621D2447DA6900812AED = { + CreatedOnToolsVersion = 11.4; + TestTargetID = F7F362072447DA6300812AED; + }; + F7F362282447DA6900812AED = { + CreatedOnToolsVersion = 11.4; + TestTargetID = F7F362072447DA6300812AED; + }; + }; + }; + buildConfigurationList = F7F362032447DA6300812AED /* Build configuration list for PBXProject "GlobalWordRacer" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = F7F361FF2447DA6300812AED; + productRefGroup = F7F362092447DA6300812AED /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + F7F362072447DA6300812AED /* GlobalWordRacer */, + F7F3621D2447DA6900812AED /* GlobalWordRacerTests */, + F7F362282447DA6900812AED /* GlobalWordRacerUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + F7F362062447DA6300812AED /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F7F362182447DA6900812AED /* LaunchScreen.storyboard in Resources */, + F7F362152447DA6900812AED /* Preview Assets.xcassets in Resources */, + F7F362122447DA6900812AED /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F7F3621C2447DA6900812AED /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F7F362272447DA6900812AED /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F7F362042447DA6300812AED /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */, + F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */, + F7F362102447DA6300812AED /* ContentView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F7F3621A2447DA6900812AED /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F7F362232447DA6900812AED /* GlobalWordRacerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F7F362252447DA6900812AED /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F7F3622E2447DA6900812AED /* GlobalWordRacerUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + F7F362202447DA6900812AED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F7F362072447DA6300812AED /* GlobalWordRacer */; + targetProxy = F7F3621F2447DA6900812AED /* PBXContainerItemProxy */; + }; + F7F3622B2447DA6900812AED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F7F362072447DA6300812AED /* GlobalWordRacer */; + targetProxy = F7F3622A2447DA6900812AED /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + F7F362162447DA6900812AED /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F7F362172447DA6900812AED /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + F7F362302447DA6900812AED /* 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; + }; + F7F362312447DA6900812AED /* 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; + }; + F7F362332447DA6900812AED /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"GlobalWordRacer/Preview Content\""; + DEVELOPMENT_TEAM = VLF9HQZ98F; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = GlobalWordRacer/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = hnswave.GlobalWordRacer; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F7F362342447DA6900812AED /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"GlobalWordRacer/Preview Content\""; + DEVELOPMENT_TEAM = VLF9HQZ98F; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = GlobalWordRacer/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = hnswave.GlobalWordRacer; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + F7F362362447DA6900812AED /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VLF9HQZ98F; + INFOPLIST_FILE = GlobalWordRacerTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = hnswave.GlobalWordRacerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GlobalWordRacer.app/GlobalWordRacer"; + }; + name = Debug; + }; + F7F362372447DA6900812AED /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VLF9HQZ98F; + INFOPLIST_FILE = GlobalWordRacerTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = hnswave.GlobalWordRacerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GlobalWordRacer.app/GlobalWordRacer"; + }; + name = Release; + }; + F7F362392447DA6900812AED /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VLF9HQZ98F; + INFOPLIST_FILE = GlobalWordRacerUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = hnswave.GlobalWordRacerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = GlobalWordRacer; + }; + name = Debug; + }; + F7F3623A2447DA6900812AED /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VLF9HQZ98F; + INFOPLIST_FILE = GlobalWordRacerUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = hnswave.GlobalWordRacerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = GlobalWordRacer; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F7F362032447DA6300812AED /* Build configuration list for PBXProject "GlobalWordRacer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F7F362302447DA6900812AED /* Debug */, + F7F362312447DA6900812AED /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F7F362322447DA6900812AED /* Build configuration list for PBXNativeTarget "GlobalWordRacer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F7F362332447DA6900812AED /* Debug */, + F7F362342447DA6900812AED /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F7F362352447DA6900812AED /* Build configuration list for PBXNativeTarget "GlobalWordRacerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F7F362362447DA6900812AED /* Debug */, + F7F362372447DA6900812AED /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F7F362382447DA6900812AED /* Build configuration list for PBXNativeTarget "GlobalWordRacerUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F7F362392447DA6900812AED /* Debug */, + F7F3623A2447DA6900812AED /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = F7F362002447DA6300812AED /* Project object */; +} diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..7325b39 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/GlobalWordRacer/GlobalWordRacer/AppDelegate.swift b/GlobalWordRacer/GlobalWordRacer/AppDelegate.swift new file mode 100644 index 0000000..417119d --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/AppDelegate.swift @@ -0,0 +1,37 @@ +// +// AppDelegate.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/15/20. +// Copyright © 2020 Andrew Gerst. 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/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/Contents.json b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/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/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/Contents.json b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GlobalWordRacer/GlobalWordRacer/Base.lproj/LaunchScreen.storyboard b/GlobalWordRacer/GlobalWordRacer/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GlobalWordRacer/GlobalWordRacer/ContentView.swift b/GlobalWordRacer/GlobalWordRacer/ContentView.swift new file mode 100644 index 0000000..6917480 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/ContentView.swift @@ -0,0 +1,21 @@ +// +// ContentView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/15/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct ContentView: View { + var body: some View { + Text("Hello, World!") + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/GlobalWordRacer/GlobalWordRacer/Info.plist b/GlobalWordRacer/GlobalWordRacer/Info.plist new file mode 100644 index 0000000..9742bf0 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Info.plist @@ -0,0 +1,60 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + + + + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/GlobalWordRacer/GlobalWordRacer/Preview Content/Preview Assets.xcassets/Contents.json b/GlobalWordRacer/GlobalWordRacer/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GlobalWordRacer/GlobalWordRacer/SceneDelegate.swift b/GlobalWordRacer/GlobalWordRacer/SceneDelegate.swift new file mode 100644 index 0000000..fa5e04b --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/SceneDelegate.swift @@ -0,0 +1,64 @@ +// +// SceneDelegate.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/15/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import UIKit +import SwiftUI + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + + // Create the SwiftUI view that provides the window contents. + let contentView = ContentView() + + // Use a UIHostingController as window root view controller. + if let windowScene = scene as? UIWindowScene { + let window = UIWindow(windowScene: windowScene) + window.rootViewController = UIHostingController(rootView: contentView) + self.window = window + window.makeKeyAndVisible() + } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/GlobalWordRacer/GlobalWordRacerTests/GlobalWordRacerTests.swift b/GlobalWordRacer/GlobalWordRacerTests/GlobalWordRacerTests.swift new file mode 100644 index 0000000..8756466 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacerTests/GlobalWordRacerTests.swift @@ -0,0 +1,34 @@ +// +// GlobalWordRacerTests.swift +// GlobalWordRacerTests +// +// Created by Andrew Gerst on 4/15/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import XCTest +@testable import GlobalWordRacer + +class GlobalWordRacerTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/GlobalWordRacer/GlobalWordRacerTests/Info.plist b/GlobalWordRacer/GlobalWordRacerTests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacerTests/Info.plist @@ -0,0 +1,22 @@ + + + + + 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 + + diff --git a/GlobalWordRacer/GlobalWordRacerUITests/GlobalWordRacerUITests.swift b/GlobalWordRacer/GlobalWordRacerUITests/GlobalWordRacerUITests.swift new file mode 100644 index 0000000..699f65d --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacerUITests/GlobalWordRacerUITests.swift @@ -0,0 +1,43 @@ +// +// GlobalWordRacerUITests.swift +// GlobalWordRacerUITests +// +// Created by Andrew Gerst on 4/15/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import XCTest + +class GlobalWordRacerUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) { + XCUIApplication().launch() + } + } + } +} diff --git a/GlobalWordRacer/GlobalWordRacerUITests/Info.plist b/GlobalWordRacer/GlobalWordRacerUITests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacerUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + 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 + + From eee7d1619fe4143151e857e5ed1abc9d4ce0c8ea Mon Sep 17 00:00:00 2001 From: Andrew Gerst Date: Thu, 16 Apr 2020 22:14:57 -0400 Subject: [PATCH 2/9] add ability to switch between ui views --- .../GlobalWordRacer.xcodeproj/project.pbxproj | 20 ++++++--- .../GlobalWordRacer/AppDelegate.swift | 4 -- .../GlobalWordRacer/ContentView.swift | 21 --------- .../GlobalWordRacer/GameView.swift | 25 +++++++++++ .../GlobalWordRacer/MainView.swift | 33 ++++++++++++++ .../GlobalWordRacer/SceneDelegate.swift | 7 +-- .../GlobalWordRacer/WelcomeView.swift | 43 +++++++++++++++++++ .../GlobalWordRacerUITests.swift | 1 + 8 files changed, 118 insertions(+), 36 deletions(-) delete mode 100644 GlobalWordRacer/GlobalWordRacer/ContentView.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/GameView.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/MainView.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/WelcomeView.swift diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj index c83d44c..58821a7 100644 --- a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj @@ -9,12 +9,14 @@ /* Begin PBXBuildFile section */ F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620B2447DA6300812AED /* AppDelegate.swift */; }; F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620D2447DA6300812AED /* SceneDelegate.swift */; }; - F7F362102447DA6300812AED /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620F2447DA6300812AED /* ContentView.swift */; }; F7F362122447DA6900812AED /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7F362112447DA6900812AED /* Assets.xcassets */; }; F7F362152447DA6900812AED /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7F362142447DA6900812AED /* Preview Assets.xcassets */; }; F7F362182447DA6900812AED /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7F362162447DA6900812AED /* LaunchScreen.storyboard */; }; F7F362232447DA6900812AED /* GlobalWordRacerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F362222447DA6900812AED /* GlobalWordRacerTests.swift */; }; F7F3622E2447DA6900812AED /* GlobalWordRacerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3622D2447DA6900812AED /* GlobalWordRacerUITests.swift */; }; + F7F3623C244936C300812AED /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623B244936C300812AED /* GameView.swift */; }; + F7F3623E244936F400812AED /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623D244936F400812AED /* WelcomeView.swift */; }; + F7F3624024493CF300812AED /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623F24493CF300812AED /* MainView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -38,7 +40,6 @@ F7F362082447DA6300812AED /* GlobalWordRacer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GlobalWordRacer.app; sourceTree = BUILT_PRODUCTS_DIR; }; F7F3620B2447DA6300812AED /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; F7F3620D2447DA6300812AED /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - F7F3620F2447DA6300812AED /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; F7F362112447DA6900812AED /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; F7F362142447DA6900812AED /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; F7F362172447DA6900812AED /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; @@ -49,6 +50,9 @@ F7F362292447DA6900812AED /* GlobalWordRacerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GlobalWordRacerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F7F3622D2447DA6900812AED /* GlobalWordRacerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalWordRacerUITests.swift; sourceTree = ""; }; F7F3622F2447DA6900812AED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F7F3623B244936C300812AED /* GameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameView.swift; sourceTree = ""; }; + F7F3623D244936F400812AED /* WelcomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeView.swift; sourceTree = ""; }; + F7F3623F24493CF300812AED /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -100,12 +104,14 @@ isa = PBXGroup; children = ( F7F3620B2447DA6300812AED /* AppDelegate.swift */, - F7F3620D2447DA6300812AED /* SceneDelegate.swift */, - F7F3620F2447DA6300812AED /* ContentView.swift */, F7F362112447DA6900812AED /* Assets.xcassets */, - F7F362162447DA6900812AED /* LaunchScreen.storyboard */, + F7F3623B244936C300812AED /* GameView.swift */, F7F362192447DA6900812AED /* Info.plist */, + F7F362162447DA6900812AED /* LaunchScreen.storyboard */, + F7F3623F24493CF300812AED /* MainView.swift */, F7F362132447DA6900812AED /* Preview Content */, + F7F3620D2447DA6300812AED /* SceneDelegate.swift */, + F7F3623D244936F400812AED /* WelcomeView.swift */, ); path = GlobalWordRacer; sourceTree = ""; @@ -269,7 +275,9 @@ files = ( F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */, F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */, - F7F362102447DA6300812AED /* ContentView.swift in Sources */, + F7F3623C244936C300812AED /* GameView.swift in Sources */, + F7F3624024493CF300812AED /* MainView.swift in Sources */, + F7F3623E244936F400812AED /* WelcomeView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/GlobalWordRacer/GlobalWordRacer/AppDelegate.swift b/GlobalWordRacer/GlobalWordRacer/AppDelegate.swift index 417119d..f65e430 100644 --- a/GlobalWordRacer/GlobalWordRacer/AppDelegate.swift +++ b/GlobalWordRacer/GlobalWordRacer/AppDelegate.swift @@ -11,8 +11,6 @@ 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 @@ -32,6 +30,4 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // Use this method to release any resources that were specific to the discarded scenes, as they will not return. } - } - diff --git a/GlobalWordRacer/GlobalWordRacer/ContentView.swift b/GlobalWordRacer/GlobalWordRacer/ContentView.swift deleted file mode 100644 index 6917480..0000000 --- a/GlobalWordRacer/GlobalWordRacer/ContentView.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// ContentView.swift -// GlobalWordRacer -// -// Created by Andrew Gerst on 4/15/20. -// Copyright © 2020 Andrew Gerst. All rights reserved. -// - -import SwiftUI - -struct ContentView: View { - var body: some View { - Text("Hello, World!") - } -} - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } -} diff --git a/GlobalWordRacer/GlobalWordRacer/GameView.swift b/GlobalWordRacer/GlobalWordRacer/GameView.swift new file mode 100644 index 0000000..893a620 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/GameView.swift @@ -0,0 +1,25 @@ +// +// GameView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/16/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct GameView: View { + + var body: some View { + Text("GameView") + } + +} + +struct GameView_Previews: PreviewProvider { + + static var previews: some View { + GameView() + } + +} diff --git a/GlobalWordRacer/GlobalWordRacer/MainView.swift b/GlobalWordRacer/GlobalWordRacer/MainView.swift new file mode 100644 index 0000000..3afc2f6 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/MainView.swift @@ -0,0 +1,33 @@ +// +// MainView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/16/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct MainView: View { + + @State var showGame = false + + var body: some View { + Group { + if showGame { + GameView() + } else { + WelcomeView(showGame: $showGame) + } + } + } + +} + +struct MainView_Previews: PreviewProvider { + + static var previews: some View { + MainView() + } + +} diff --git a/GlobalWordRacer/GlobalWordRacer/SceneDelegate.swift b/GlobalWordRacer/GlobalWordRacer/SceneDelegate.swift index fa5e04b..62f459b 100644 --- a/GlobalWordRacer/GlobalWordRacer/SceneDelegate.swift +++ b/GlobalWordRacer/GlobalWordRacer/SceneDelegate.swift @@ -13,19 +13,18 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). // Create the SwiftUI view that provides the window contents. - let contentView = ContentView() + let mainView = MainView() // Use a UIHostingController as window root view controller. if let windowScene = scene as? UIWindowScene { let window = UIWindow(windowScene: windowScene) - window.rootViewController = UIHostingController(rootView: contentView) + window.rootViewController = UIHostingController(rootView: mainView) self.window = window window.makeKeyAndVisible() } @@ -59,6 +58,4 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { // to restore the scene back to its current state. } - } - diff --git a/GlobalWordRacer/GlobalWordRacer/WelcomeView.swift b/GlobalWordRacer/GlobalWordRacer/WelcomeView.swift new file mode 100644 index 0000000..01fdc6b --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/WelcomeView.swift @@ -0,0 +1,43 @@ +// +// WelcomeView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/16/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct WelcomeView: View { + + @Binding var showGame: Bool + + @State var title = "Global Word Racer" + + var body: some View { + VStack { + Text(title) + .frame( + width: UIScreen.main.bounds.width, + height: 50 + ) + .background(Color.blue) + .foregroundColor(Color.white) + .padding(10) + + Button( + action: { self.showGame = true }, + label: { Text("Join Game") } + ) + } + } + +} + +struct WelcomeView_Previews: PreviewProvider { + + static var previews: some View { + WelcomeView(showGame: .constant(false)) + } + +} diff --git a/GlobalWordRacer/GlobalWordRacerUITests/GlobalWordRacerUITests.swift b/GlobalWordRacer/GlobalWordRacerUITests/GlobalWordRacerUITests.swift index 699f65d..12f94f2 100644 --- a/GlobalWordRacer/GlobalWordRacerUITests/GlobalWordRacerUITests.swift +++ b/GlobalWordRacer/GlobalWordRacerUITests/GlobalWordRacerUITests.swift @@ -40,4 +40,5 @@ class GlobalWordRacerUITests: XCTestCase { } } } + } From c63db7e5123b6c6d0f6265f663083838e9ae624a Mon Sep 17 00:00:00 2001 From: Andrew Gerst Date: Fri, 17 Apr 2020 15:38:38 -0400 Subject: [PATCH 3/9] make api call to get grid and display grid in view --- .../GlobalWordRacer.xcodeproj/project.pbxproj | 55 +++++++++++++++++-- .../contents.xcworkspacedata | 2 +- .../xcshareddata/swiftpm/Package.resolved | 16 ++++++ .../Decodables/GridAndSolutions.swift | 21 +++++++ .../GlobalWordRacer/GameView.swift | 25 --------- GlobalWordRacer/GlobalWordRacer/Info.plist | 11 ++++ .../GlobalWordRacer/Views/GameView.swift | 43 +++++++++++++++ .../{ => Views}/MainView.swift | 6 +- .../{ => Views}/WelcomeView.swift | 16 +++++- 9 files changed, 161 insertions(+), 34 deletions(-) create mode 100644 GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 GlobalWordRacer/GlobalWordRacer/Decodables/GridAndSolutions.swift delete mode 100644 GlobalWordRacer/GlobalWordRacer/GameView.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/Views/GameView.swift rename GlobalWordRacer/GlobalWordRacer/{ => Views}/MainView.swift (67%) rename GlobalWordRacer/GlobalWordRacer/{ => Views}/WelcomeView.swift (53%) diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj index 58821a7..ebde3c8 100644 --- a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj @@ -3,10 +3,11 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ + F795E949244A3BC400CA9AF5 /* GridAndSolutions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E948244A3BC400CA9AF5 /* GridAndSolutions.swift */; }; F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620B2447DA6300812AED /* AppDelegate.swift */; }; F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620D2447DA6300812AED /* SceneDelegate.swift */; }; F7F362122447DA6900812AED /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7F362112447DA6900812AED /* Assets.xcassets */; }; @@ -17,6 +18,7 @@ F7F3623C244936C300812AED /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623B244936C300812AED /* GameView.swift */; }; F7F3623E244936F400812AED /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623D244936F400812AED /* WelcomeView.swift */; }; F7F3624024493CF300812AED /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623F24493CF300812AED /* MainView.swift */; }; + F7F36243244983FF00812AED /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = F7F36242244983FF00812AED /* Alamofire */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -37,6 +39,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + F795E948244A3BC400CA9AF5 /* GridAndSolutions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridAndSolutions.swift; sourceTree = ""; }; F7F362082447DA6300812AED /* GlobalWordRacer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GlobalWordRacer.app; sourceTree = BUILT_PRODUCTS_DIR; }; F7F3620B2447DA6300812AED /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; F7F3620D2447DA6300812AED /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -60,6 +63,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F7F36243244983FF00812AED /* Alamofire in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,6 +84,24 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + F795E947244A3BB100CA9AF5 /* Decodables */ = { + isa = PBXGroup; + children = ( + F795E948244A3BC400CA9AF5 /* GridAndSolutions.swift */, + ); + path = Decodables; + sourceTree = ""; + }; + F795E94A244A3BFD00CA9AF5 /* Views */ = { + isa = PBXGroup; + children = ( + F7F3623B244936C300812AED /* GameView.swift */, + F7F3623F24493CF300812AED /* MainView.swift */, + F7F3623D244936F400812AED /* WelcomeView.swift */, + ); + path = Views; + sourceTree = ""; + }; F7F361FF2447DA6300812AED = { isa = PBXGroup; children = ( @@ -105,13 +127,12 @@ children = ( F7F3620B2447DA6300812AED /* AppDelegate.swift */, F7F362112447DA6900812AED /* Assets.xcassets */, - F7F3623B244936C300812AED /* GameView.swift */, + F795E947244A3BB100CA9AF5 /* Decodables */, F7F362192447DA6900812AED /* Info.plist */, F7F362162447DA6900812AED /* LaunchScreen.storyboard */, - F7F3623F24493CF300812AED /* MainView.swift */, F7F362132447DA6900812AED /* Preview Content */, F7F3620D2447DA6300812AED /* SceneDelegate.swift */, - F7F3623D244936F400812AED /* WelcomeView.swift */, + F795E94A244A3BFD00CA9AF5 /* Views */, ); path = GlobalWordRacer; sourceTree = ""; @@ -158,6 +179,9 @@ dependencies = ( ); name = GlobalWordRacer; + packageProductDependencies = ( + F7F36242244983FF00812AED /* Alamofire */, + ); productName = GlobalWordRacer; productReference = F7F362082447DA6300812AED /* GlobalWordRacer.app */; productType = "com.apple.product-type.application"; @@ -230,6 +254,9 @@ Base, ); mainGroup = F7F361FF2447DA6300812AED; + packageReferences = ( + F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */, + ); productRefGroup = F7F362092447DA6300812AED /* Products */; projectDirPath = ""; projectRoot = ""; @@ -277,6 +304,7 @@ F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */, F7F3623C244936C300812AED /* GameView.swift in Sources */, F7F3624024493CF300812AED /* MainView.swift in Sources */, + F795E949244A3BC400CA9AF5 /* GridAndSolutions.swift in Sources */, F7F3623E244936F400812AED /* WelcomeView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -602,6 +630,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Alamofire/Alamofire.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.1.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + F7F36242244983FF00812AED /* Alamofire */ = { + isa = XCSwiftPackageProductDependency; + package = F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */; + productName = Alamofire; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = F7F362002447DA6300812AED /* Project object */; } diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 7325b39..919434a 100644 --- a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..7378f58 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "Alamofire", + "repositoryURL": "https://github.com/Alamofire/Alamofire.git", + "state": { + "branch": null, + "revision": "fca036f7aeca07124067cb6e0c12b0ad6359e3d4", + "version": "5.1.0" + } + } + ] + }, + "version": 1 +} diff --git a/GlobalWordRacer/GlobalWordRacer/Decodables/GridAndSolutions.swift b/GlobalWordRacer/GlobalWordRacer/Decodables/GridAndSolutions.swift new file mode 100644 index 0000000..fa85e59 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Decodables/GridAndSolutions.swift @@ -0,0 +1,21 @@ +// +// GridAndSolutions.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/17/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import Foundation + +struct GridAndSolutions: Decodable { + + var grid: [[String]] + var solutions: [String] + + enum CodingKeys: String, CodingKey { + case grid + case solutions + } + +} diff --git a/GlobalWordRacer/GlobalWordRacer/GameView.swift b/GlobalWordRacer/GlobalWordRacer/GameView.swift deleted file mode 100644 index 893a620..0000000 --- a/GlobalWordRacer/GlobalWordRacer/GameView.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// GameView.swift -// GlobalWordRacer -// -// Created by Andrew Gerst on 4/16/20. -// Copyright © 2020 Andrew Gerst. All rights reserved. -// - -import SwiftUI - -struct GameView: View { - - var body: some View { - Text("GameView") - } - -} - -struct GameView_Previews: PreviewProvider { - - static var previews: some View { - GameView() - } - -} diff --git a/GlobalWordRacer/GlobalWordRacer/Info.plist b/GlobalWordRacer/GlobalWordRacer/Info.plist index 9742bf0..867cf68 100644 --- a/GlobalWordRacer/GlobalWordRacer/Info.plist +++ b/GlobalWordRacer/GlobalWordRacer/Info.plist @@ -20,6 +20,17 @@ 1 LSRequiresIPhoneOS + NSAppTransportSecurity + + NSExceptionDomains + + hnswave.co + + NSExceptionAllowsInsecureHTTPLoads + + + + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift new file mode 100644 index 0000000..a5f7de1 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift @@ -0,0 +1,43 @@ +// +// GameView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/16/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct GameView: View { + + @Binding var grid: [[String]] + @Binding var solutions: [String] + + var body: some View { + VStack { + Text("Global Word Racer") + buildBoard(grid) + } + } + + func buildBoard(_ board: [[String]]) -> some View { + VStack(spacing: 5) { + ForEach(board, id: \.self) { row in + HStack(spacing: 5) { + ForEach(row, id: \.self) { cell in + Text(cell) + } + } + } + } + } + +} + +struct GameView_Previews: PreviewProvider { + + static var previews: some View { + GameView(grid: .constant([]), solutions: .constant([])) + } + +} diff --git a/GlobalWordRacer/GlobalWordRacer/MainView.swift b/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift similarity index 67% rename from GlobalWordRacer/GlobalWordRacer/MainView.swift rename to GlobalWordRacer/GlobalWordRacer/Views/MainView.swift index 3afc2f6..09c7ef0 100644 --- a/GlobalWordRacer/GlobalWordRacer/MainView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift @@ -11,13 +11,15 @@ import SwiftUI struct MainView: View { @State var showGame = false + @State var grid: [[String]] = [] + @State var solutions: [String] = [] var body: some View { Group { if showGame { - GameView() + GameView(grid: $grid, solutions: $solutions) } else { - WelcomeView(showGame: $showGame) + WelcomeView(showGame: $showGame, grid: $grid, solutions: $solutions) } } } diff --git a/GlobalWordRacer/GlobalWordRacer/WelcomeView.swift b/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift similarity index 53% rename from GlobalWordRacer/GlobalWordRacer/WelcomeView.swift rename to GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift index 01fdc6b..414b926 100644 --- a/GlobalWordRacer/GlobalWordRacer/WelcomeView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift @@ -6,11 +6,14 @@ // Copyright © 2020 Andrew Gerst. All rights reserved. // +import Alamofire import SwiftUI struct WelcomeView: View { @Binding var showGame: Bool + @Binding var grid: [[String]] + @Binding var solutions: [String] @State var title = "Global Word Racer" @@ -26,7 +29,16 @@ struct WelcomeView: View { .padding(10) Button( - action: { self.showGame = true }, + action: { + AF.request("http://hnswave.co:8000/grid") + .validate() + .responseDecodable(of: GridAndSolutions.self) { response in + guard let data = response.value else { return } + self.grid = data.grid + self.solutions = data.solutions + self.showGame = true + } + }, label: { Text("Join Game") } ) } @@ -37,7 +49,7 @@ struct WelcomeView: View { struct WelcomeView_Previews: PreviewProvider { static var previews: some View { - WelcomeView(showGame: .constant(false)) + WelcomeView(showGame: .constant(false), grid: .constant([]), solutions: .constant([])) } } From b38bdf47daea0eb1b827bea77824a4f0a256bf6b Mon Sep 17 00:00:00 2001 From: Andrew Gerst Date: Sat, 18 Apr 2020 15:17:55 -0400 Subject: [PATCH 4/9] add letter view --- .../GlobalWordRacer.xcodeproj/project.pbxproj | 4 ++ .../GlobalWordRacer/Views/GameView.swift | 29 ++++++++---- .../GlobalWordRacer/Views/LetterView.swift | 46 +++++++++++++++++++ 3 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj index ebde3c8..c22777a 100644 --- a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ F795E949244A3BC400CA9AF5 /* GridAndSolutions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E948244A3BC400CA9AF5 /* GridAndSolutions.swift */; }; + F795E94C244B86E200CA9AF5 /* LetterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E94B244B86E200CA9AF5 /* LetterView.swift */; }; F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620B2447DA6300812AED /* AppDelegate.swift */; }; F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620D2447DA6300812AED /* SceneDelegate.swift */; }; F7F362122447DA6900812AED /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7F362112447DA6900812AED /* Assets.xcassets */; }; @@ -40,6 +41,7 @@ /* Begin PBXFileReference section */ F795E948244A3BC400CA9AF5 /* GridAndSolutions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridAndSolutions.swift; sourceTree = ""; }; + F795E94B244B86E200CA9AF5 /* LetterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LetterView.swift; sourceTree = ""; }; F7F362082447DA6300812AED /* GlobalWordRacer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GlobalWordRacer.app; sourceTree = BUILT_PRODUCTS_DIR; }; F7F3620B2447DA6300812AED /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; F7F3620D2447DA6300812AED /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -96,6 +98,7 @@ isa = PBXGroup; children = ( F7F3623B244936C300812AED /* GameView.swift */, + F795E94B244B86E200CA9AF5 /* LetterView.swift */, F7F3623F24493CF300812AED /* MainView.swift */, F7F3623D244936F400812AED /* WelcomeView.swift */, ); @@ -300,6 +303,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F795E94C244B86E200CA9AF5 /* LetterView.swift in Sources */, F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */, F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */, F7F3623C244936C300812AED /* GameView.swift in Sources */, diff --git a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift index a5f7de1..25c356e 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift @@ -16,16 +16,24 @@ struct GameView: View { var body: some View { VStack { Text("Global Word Racer") - buildBoard(grid) + Spacer() + buildBoard() + Spacer() } } - func buildBoard(_ board: [[String]]) -> some View { - VStack(spacing: 5) { - ForEach(board, id: \.self) { row in - HStack(spacing: 5) { - ForEach(row, id: \.self) { cell in - Text(cell) + func buildBoard() -> some View { + VStack(spacing: 20) { + ForEach(grid.indices) { rowIndex in + HStack { + Group { + Spacer() + ForEach(self.grid[rowIndex].indices) { cellIndex in + Group { + LetterView(text: self.$grid[rowIndex][cellIndex]) + Spacer() + } + } } } } @@ -37,7 +45,12 @@ struct GameView: View { struct GameView_Previews: PreviewProvider { static var previews: some View { - GameView(grid: .constant([]), solutions: .constant([])) + GameView(grid: .constant([ + ["A", "B", "C", "D"], + ["E", "Qu", "G", "H"], + ["I", "J", "K", "L"], + ["M", "N", "O", "P"] + ]), solutions: .constant([])) } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift b/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift new file mode 100644 index 0000000..a4326d5 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift @@ -0,0 +1,46 @@ +// +// LetterView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/18/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct LetterView: View { + + @Binding var text: String + + var body: some View { + Button(action: { + print(self.text) + }) { + Text(text) + .fontWeight(.semibold) + .font(.title) + .frame(width: 40) + .padding() + .background(LinearGradient( + gradient: Gradient(colors: [Color.green, Color.blue]), + startPoint: .leading, + endPoint: .trailing + )) + .foregroundColor(.white) + .cornerRadius(40) + } + } + +} + +struct LetterView_Previews: PreviewProvider { + + static var previews: some View { + VStack(spacing: 20) { + LetterView(text: .constant("A")) + LetterView(text: .constant("Qu")) + LetterView(text: .constant("Z")) + } + } + +} From 9348e6a33261fe34f8892cd4524760513a5c7086 Mon Sep 17 00:00:00 2001 From: Andrew Gerst Date: Sat, 18 Apr 2020 21:49:59 -0400 Subject: [PATCH 5/9] add current selection, found solutions, and invalid word views --- GlobalWordRacer/Gemfile | 8 + GlobalWordRacer/Gemfile.lock | 179 ++++++++++++++++++ .../GlobalWordRacer.xcodeproj/project.pbxproj | 16 ++ .../Views/CurrentSelectionView.swift | 46 +++++ .../Views/FoundSolutionsView.swift | 50 +++++ .../GlobalWordRacer/Views/GameView.swift | 31 ++- .../Views/InvalidWordView.swift | 36 ++++ .../GlobalWordRacer/Views/LetterView.swift | 9 +- .../GlobalWordRacer/Views/TitleView.swift | 33 ++++ .../GlobalWordRacer/Views/WelcomeView.swift | 17 +- 10 files changed, 407 insertions(+), 18 deletions(-) create mode 100644 GlobalWordRacer/Gemfile create mode 100644 GlobalWordRacer/Gemfile.lock create mode 100644 GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/Views/InvalidWordView.swift create mode 100644 GlobalWordRacer/GlobalWordRacer/Views/TitleView.swift diff --git a/GlobalWordRacer/Gemfile b/GlobalWordRacer/Gemfile new file mode 100644 index 0000000..e75085d --- /dev/null +++ b/GlobalWordRacer/Gemfile @@ -0,0 +1,8 @@ +source 'https://rubygems.org' do + gem 'fastlane', '2.145.0' +end + +# Install Bundler +#> sudo gem install bundler +#> bundle install +#> bundle exec fastlane diff --git a/GlobalWordRacer/Gemfile.lock b/GlobalWordRacer/Gemfile.lock new file mode 100644 index 0000000..3a438a6 --- /dev/null +++ b/GlobalWordRacer/Gemfile.lock @@ -0,0 +1,179 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + atomos (0.1.3) + aws-eventstream (1.1.0) + aws-partitions (1.298.0) + aws-sdk-core (3.94.0) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.239.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1.0) + aws-sdk-kms (1.30.0) + aws-sdk-core (~> 3, >= 3.71.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.61.2) + aws-sdk-core (~> 3, >= 3.83.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.1) + aws-sigv4 (1.1.2) + aws-eventstream (~> 1.0, >= 1.0.2) + babosa (1.0.3) + claide (1.0.3) + colored (1.2) + colored2 (3.1.2) + commander-fastlane (4.4.6) + highline (~> 1.7.2) + declarative (0.0.10) + declarative-option (0.1.0) + digest-crc (0.5.1) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.5) + emoji_regex (1.0.1) + excon (0.73.0) + faraday (0.17.3) + multipart-post (>= 1.2, < 3) + faraday-cookie_jar (0.0.6) + faraday (>= 0.7.4) + http-cookie (~> 1.0.0) + faraday_middleware (0.13.1) + faraday (>= 0.7.4, < 1.0) + fastimage (2.1.7) + fastlane (2.145.0) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.3, < 3.0.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.2, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander-fastlane (>= 4.4.6, < 5.0.0) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 2.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 0.17) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 0.13.1) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-api-client (>= 0.29.2, < 0.37.0) + google-cloud-storage (>= 1.15.0, < 2.0.0) + highline (>= 1.7.2, < 2.0.0) + json (< 3.0.0) + jwt (~> 2.1.0) + mini_magick (>= 4.9.4, < 5.0.0) + multi_xml (~> 0.5) + multipart-post (~> 2.0.0) + plist (>= 3.1.0, < 4.0.0) + public_suffix (~> 2.0.0) + rubyzip (>= 1.3.0, < 2.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + slack-notifier (>= 2.0.0, < 3.0.0) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-api-client (0.36.4) + addressable (~> 2.5, >= 2.5.1) + googleauth (~> 0.9) + httpclient (>= 2.8.1, < 3.0) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) + signet (~> 0.12) + google-cloud-core (1.5.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.3.1) + faraday (>= 0.17.3, < 2.0) + google-cloud-errors (1.0.0) + google-cloud-storage (1.26.0) + addressable (~> 2.5) + digest-crc (~> 0.4) + google-api-client (~> 0.33) + google-cloud-core (~> 1.2) + googleauth (~> 0.9) + mini_mime (~> 1.0) + googleauth (0.12.0) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (~> 0.14) + highline (1.7.10) + http-cookie (1.0.3) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.4.0) + json (2.3.0) + jwt (2.1.0) + memoist (0.16.2) + mini_magick (4.10.1) + mini_mime (1.0.2) + multi_json (1.14.1) + multi_xml (0.6.0) + multipart-post (2.0.0) + nanaimo (0.2.6) + naturally (2.2.0) + os (1.1.0) + plist (3.5.0) + public_suffix (2.0.5) + representable (3.0.4) + declarative (< 0.1.0) + declarative-option (< 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rouge (2.0.7) + rubyzip (1.3.0) + security (0.1.3) + signet (0.14.0) + addressable (~> 2.3) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.8) + CFPropertyList + naturally + slack-notifier (2.3.2) + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + tty-cursor (0.7.1) + tty-screen (0.7.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.7) + unicode-display_width (1.7.0) + word_wrap (1.0.0) + xcodeproj (1.16.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.2.6) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.0) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + ruby + +DEPENDENCIES + fastlane (= 2.145.0)! + +BUNDLED WITH + 2.1.4 diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj index c22777a..ff8e73b 100644 --- a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj @@ -9,6 +9,10 @@ /* Begin PBXBuildFile section */ F795E949244A3BC400CA9AF5 /* GridAndSolutions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E948244A3BC400CA9AF5 /* GridAndSolutions.swift */; }; F795E94C244B86E200CA9AF5 /* LetterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E94B244B86E200CA9AF5 /* LetterView.swift */; }; + F795E94E244B916D00CA9AF5 /* CurrentSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E94D244B916D00CA9AF5 /* CurrentSelectionView.swift */; }; + F795E950244B950D00CA9AF5 /* FoundSolutionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E94F244B950D00CA9AF5 /* FoundSolutionsView.swift */; }; + F795E952244B99C300CA9AF5 /* InvalidWordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E951244B99C300CA9AF5 /* InvalidWordView.swift */; }; + F795E954244BC14500CA9AF5 /* TitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E953244BC14500CA9AF5 /* TitleView.swift */; }; F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620B2447DA6300812AED /* AppDelegate.swift */; }; F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620D2447DA6300812AED /* SceneDelegate.swift */; }; F7F362122447DA6900812AED /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7F362112447DA6900812AED /* Assets.xcassets */; }; @@ -42,6 +46,10 @@ /* Begin PBXFileReference section */ F795E948244A3BC400CA9AF5 /* GridAndSolutions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridAndSolutions.swift; sourceTree = ""; }; F795E94B244B86E200CA9AF5 /* LetterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LetterView.swift; sourceTree = ""; }; + F795E94D244B916D00CA9AF5 /* CurrentSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrentSelectionView.swift; sourceTree = ""; }; + F795E94F244B950D00CA9AF5 /* FoundSolutionsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FoundSolutionsView.swift; sourceTree = ""; }; + F795E951244B99C300CA9AF5 /* InvalidWordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvalidWordView.swift; sourceTree = ""; }; + F795E953244BC14500CA9AF5 /* TitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleView.swift; sourceTree = ""; }; F7F362082447DA6300812AED /* GlobalWordRacer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GlobalWordRacer.app; sourceTree = BUILT_PRODUCTS_DIR; }; F7F3620B2447DA6300812AED /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; F7F3620D2447DA6300812AED /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -97,9 +105,13 @@ F795E94A244A3BFD00CA9AF5 /* Views */ = { isa = PBXGroup; children = ( + F795E94D244B916D00CA9AF5 /* CurrentSelectionView.swift */, + F795E94F244B950D00CA9AF5 /* FoundSolutionsView.swift */, F7F3623B244936C300812AED /* GameView.swift */, + F795E951244B99C300CA9AF5 /* InvalidWordView.swift */, F795E94B244B86E200CA9AF5 /* LetterView.swift */, F7F3623F24493CF300812AED /* MainView.swift */, + F795E953244BC14500CA9AF5 /* TitleView.swift */, F7F3623D244936F400812AED /* WelcomeView.swift */, ); path = Views; @@ -303,11 +315,15 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F795E952244B99C300CA9AF5 /* InvalidWordView.swift in Sources */, F795E94C244B86E200CA9AF5 /* LetterView.swift in Sources */, + F795E94E244B916D00CA9AF5 /* CurrentSelectionView.swift in Sources */, F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */, F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */, F7F3623C244936C300812AED /* GameView.swift in Sources */, + F795E950244B950D00CA9AF5 /* FoundSolutionsView.swift in Sources */, F7F3624024493CF300812AED /* MainView.swift in Sources */, + F795E954244BC14500CA9AF5 /* TitleView.swift in Sources */, F795E949244A3BC400CA9AF5 /* GridAndSolutions.swift in Sources */, F7F3623E244936F400812AED /* WelcomeView.swift in Sources */, ); diff --git a/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift b/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift new file mode 100644 index 0000000..b7d22b2 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift @@ -0,0 +1,46 @@ +// +// CurrentSelectionView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/18/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct CurrentSelectionView: View { + + @Binding var text: String + var handler: () -> Void + + var body: some View { + Button(action: { + if (self.text != "") { + self.handler() + } + }) { + Text(text.count > 0 ? text.uppercased() : " ") + .fontWeight(.semibold) + .font(.title) + .padding() + .frame(width: UIScreen.main.bounds.width - 60) + .background(LinearGradient( + gradient: Gradient(colors: [.green, .blue]), + startPoint: .leading, + endPoint: .trailing + )) + .foregroundColor(.white) + .cornerRadius(40) + } + .padding(.top, 40) + } + +} + +struct CurrentSelectionView_Previews: PreviewProvider { + + static var previews: some View { + CurrentSelectionView(text: .constant("Quest"), handler: {}) + } + +} diff --git a/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift b/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift new file mode 100644 index 0000000..cbd5b52 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift @@ -0,0 +1,50 @@ +// +// FoundSolutionsView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/18/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct FoundSolutionsView: View { + + @Binding var list: [String] + + var body: some View { + VStack { + Text(list.count > 0 ? "\(list.count) Word\(list.count > 1 ? "s": "") Found (\(list.count * 20) Points)" : "No Words Found") + .fontWeight(.semibold) + .font(.headline) + .padding(.top) + + ScrollView(.vertical) { + VStack { + ForEach(list.reversed(), id: \.self) { word in + HStack { + Text(word) + Spacer() + Text("\(self.pointsForWord(word))") + } + } + }.frame(width: UIScreen.main.bounds.width - 60) + } + + Spacer() + }.frame(width: UIScreen.main.bounds.width - 60, height: 160) + } + + func pointsForWord(_ word: String) -> Int { + return 20 + } + +} + +struct FoundSolutionsView_Previews: PreviewProvider { + + static var previews: some View { + FoundSolutionsView(list: .constant(["Word1", "Word2"])) + } + +} diff --git a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift index 25c356e..abb1d56 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift @@ -12,13 +12,19 @@ struct GameView: View { @Binding var grid: [[String]] @Binding var solutions: [String] + @State private var currentSelection = "" + @State private var foundSolutions: [String] = [] + @State private var invalidWord = "" + @State private var duplicateWord = "" var body: some View { VStack { - Text("Global Word Racer") + TitleView(title: "Global Word Racer") Spacer() buildBoard() - Spacer() + CurrentSelectionView(text: $currentSelection, handler: selectionHandler) + InvalidWordView(word: $invalidWord, duplicate: $duplicateWord) + FoundSolutionsView(list: $foundSolutions) } } @@ -30,7 +36,7 @@ struct GameView: View { Spacer() ForEach(self.grid[rowIndex].indices) { cellIndex in Group { - LetterView(text: self.$grid[rowIndex][cellIndex]) + LetterView(text: self.$grid[rowIndex][cellIndex], handler: self.letterHandler) Spacer() } } @@ -40,6 +46,25 @@ struct GameView: View { } } + func letterHandler(letter: String) -> Void { + currentSelection += letter + } + + func selectionHandler() -> Void { + if (foundSolutions.contains(currentSelection.uppercased())) { + invalidWord = "" + duplicateWord = currentSelection.uppercased() + } else if (solutions.contains(currentSelection.uppercased())) { + invalidWord = "" + duplicateWord = "" + foundSolutions.append(currentSelection.uppercased()) + } else { + invalidWord = currentSelection.uppercased() + duplicateWord = "" + } + currentSelection = "" + } + } struct GameView_Previews: PreviewProvider { diff --git a/GlobalWordRacer/GlobalWordRacer/Views/InvalidWordView.swift b/GlobalWordRacer/GlobalWordRacer/Views/InvalidWordView.swift new file mode 100644 index 0000000..3fb2c20 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Views/InvalidWordView.swift @@ -0,0 +1,36 @@ +// +// InvalidWordView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/18/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct InvalidWordView: View { + + @Binding var word: String + @Binding var duplicate: String + + var body: some View { + Text( + duplicate.count > 0 + ? "\"\(duplicate.uppercased())\" Has Already Been Found!" + : word.count > 0 + ? "\"\(word.uppercased())\" Is Not A Valid Word!" + : " " + ) + .foregroundColor(.red) + .padding() + } + +} + +struct InvalidWordView_Previews: PreviewProvider { + + static var previews: some View { + InvalidWordView(word: .constant("ABCD"), duplicate: .constant("")) + } + +} diff --git a/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift b/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift index a4326d5..56451fb 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift @@ -11,10 +11,11 @@ import SwiftUI struct LetterView: View { @Binding var text: String + var handler: (String) -> Void var body: some View { Button(action: { - print(self.text) + self.handler(self.text) }) { Text(text) .fontWeight(.semibold) @@ -37,9 +38,9 @@ struct LetterView_Previews: PreviewProvider { static var previews: some View { VStack(spacing: 20) { - LetterView(text: .constant("A")) - LetterView(text: .constant("Qu")) - LetterView(text: .constant("Z")) + LetterView(text: .constant("A"), handler: { (letter: String) in }) + LetterView(text: .constant("Qu"), handler: { (letter: String) in }) + LetterView(text: .constant("Z"), handler: { (letter: String) in }) } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/TitleView.swift b/GlobalWordRacer/GlobalWordRacer/Views/TitleView.swift new file mode 100644 index 0000000..741eef8 --- /dev/null +++ b/GlobalWordRacer/GlobalWordRacer/Views/TitleView.swift @@ -0,0 +1,33 @@ +// +// TitleView.swift +// GlobalWordRacer +// +// Created by Andrew Gerst on 4/18/20. +// Copyright © 2020 Andrew Gerst. All rights reserved. +// + +import SwiftUI + +struct TitleView: View { + + var title: String + + var body: some View { + Text(title) + .fontWeight(.semibold) + .font(.system(size: 40)) + .frame(width: UIScreen.main.bounds.width, height: 100) + .padding(10) + .background(Color.blue) + .foregroundColor(.white) + } + +} + +struct TitleView_Previews: PreviewProvider { + + static var previews: some View { + TitleView(title: "Global Word Racer") + } + +} diff --git a/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift b/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift index 414b926..e910e55 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift @@ -15,18 +15,9 @@ struct WelcomeView: View { @Binding var grid: [[String]] @Binding var solutions: [String] - @State var title = "Global Word Racer" - var body: some View { VStack { - Text(title) - .frame( - width: UIScreen.main.bounds.width, - height: 50 - ) - .background(Color.blue) - .foregroundColor(Color.white) - .padding(10) + TitleView(title: "Global Word Racer") Button( action: { @@ -39,8 +30,12 @@ struct WelcomeView: View { self.showGame = true } }, - label: { Text("Join Game") } + label: { + Text("Join Game") + .font(.system(size: 40)) + } ) + .padding(40) } } From 4be65301ee06b9111d1c719dc89f7567b9869f99 Mon Sep 17 00:00:00 2001 From: Andrew Gerst Date: Sat, 18 Apr 2020 22:29:23 -0400 Subject: [PATCH 6/9] add app icon --- .../AppIcon.appiconset/AppIcon-1024.png | Bin 0 -> 140691 bytes .../AppIcon.appiconset/AppIcon-20.png | Bin 0 -> 2106 bytes .../AppIcon.appiconset/AppIcon-20@2x.png | Bin 0 -> 3721 bytes .../AppIcon.appiconset/AppIcon-20@3x.png | Bin 0 -> 5372 bytes .../AppIcon.appiconset/AppIcon-29.png | Bin 0 -> 2779 bytes .../AppIcon.appiconset/AppIcon-29@2x.png | Bin 0 -> 5408 bytes .../AppIcon.appiconset/AppIcon-29@3x.png | Bin 0 -> 8130 bytes .../AppIcon.appiconset/AppIcon-40.png | Bin 0 -> 3721 bytes .../AppIcon.appiconset/AppIcon-40@2x.png | Bin 0 -> 7405 bytes .../AppIcon.appiconset/AppIcon-40@3x.png | Bin 0 -> 11043 bytes .../AppIcon.appiconset/AppIcon-60@2x.png | Bin 0 -> 11043 bytes .../AppIcon.appiconset/AppIcon-60@3x.png | Bin 0 -> 17431 bytes .../AppIcon.appiconset/AppIcon-76.png | Bin 0 -> 7027 bytes .../AppIcon.appiconset/AppIcon-76@2x.png | Bin 0 -> 14312 bytes .../AppIcon.appiconset/AppIcon-83.5@2x.png | Bin 0 -> 16008 bytes .../AppIcon.appiconset/Contents.json | 134 ++++++++++-------- .../Assets.xcassets/Contents.json | 6 +- 17 files changed, 79 insertions(+), 61 deletions(-) create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-76.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-76@2x.png create mode 100644 GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x.png diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..14423369b686e6c5ffd827dc75fe47e5521b184a GIT binary patch literal 140691 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 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20.png new file mode 100644 index 0000000000000000000000000000000000000000..076f412c3593ef7c22e825b9814f5ce2d94b866e GIT binary patch literal 2106 zcmV-A2*vk_P)Hg1+lHrgWSWcKdPn90sKGrRqvPeo9CG3uKX#J{(IASm?@+di}}l?o-=)F3E6 zwD^Ni=!>T7nL9I?X}YoAW$t|Qo$sD|?zw001?ah|SeB6#0T!CBEf+H4bBB+JJu8re zhoBb*p;u8ID_yBf0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00)%XR^J z`jH<$>RKN5V(7OqK*TS4xZz{h!*f1C3ECFkK$#7nA@pGN!$;%jYv zwjAKwmYb0gKL(K8-kPtb5${A?tlI~wzMrJ6wTdBr=Y%%%EaEMQ&o}4FQ^DA)s*}Z> z!FI&AHCpoWI|RUqx?7s@$8!5^Q=anY%X@i5{QA6kNcMelpE>R6eCYFpmMsVT zrI(b06~u#xf1yS}_UGdMvD``!0~u->P=lA4?YN`hilQ z|3tHka)7T{2CGqwjZfMwx$5irQN_*|e4l)UHmiYuz74Yp1t^#>hrJ3-SOXDcC_o0^ z7T9R1gAN8V6s;5)ieI5-7aQlmJn}lUna#nz!j%5V$X|o`xX!dHWQRV27P1=rj;t2b zW$~+pTw@bIek?ZvKPDL<64`^#UNTAck#RBsB6*5DP4<%UA_FqU$I>2EH_cM;u)Q~SI+rg`Rn{L z_AC5qq~L$#SMj%U$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>_Ci%bnxC;Vy6= zb6>{xYV#Ue-+LB$7`JEXmTRm^AtP)R9u{)KHsMiWGV&)32xCG~*nyU<>-!d;FP=Re z4r3qYr~6#KE>;1F`>_J_P5xC?ROxV(DIHdCO*p$HRQI@7^PwV@Pvuf+ z5K}u-6REM(K@W$srgorh0{i?O)v0c>QtHxU-hBdD(>iYJ4b2sIOVX2K8m~4gmYVA5 zh^QEb$V`rCQ-|7ZS{nuL-t>?3n=-o(6I(7vocj#GzCZEo`!3>+v;dYIfPu#&ZWzzX z2i^rZ^Mu;6+rb@?NPG+6)c5T6zxpzGe*M(x+{AON=PiJ>H#?ob-|uwRK0yDg0B4PV z0id6JRRdfL?*IS*IAvH#W=%~1DgXcg2mk?xX#fNO00031000^Q000000-yo_1ONa4 z0RR916rckD1ONa40RR916aWAK0Ff2a#{d8Wm`OxIR5%fhR7q%5Srk2gsNq*Cm87&X zXq8DIwgiVxcSIZ!4B|%ID1w4^FGR2xx>8rtLQ8L?0|8emz3r7NLFpDpR1_8G2+=rZ zFfpklRh63SfA4w4FH`EG?_d1)-~0F8bI(2ZXyvlDWOJ=5AP>B{2L-1HOZTBI5JjCh zj^`&4vsy5fm_|=zJq*oIfeaYpQ5{foIV3ukq{-73h$$4AQcjiVH@rv|XC-(@-YEnO zOE|RgE~GzTHY?L zv_wj;4n~wl^RFGpc|h`CrrzMx@)PJCJdL)R7&b-L;b{M#=v#3d=SD9mZhve41qYw~ zj$=O@5?KL{68$iRQ`agSl0VDvV{LdPdgiZ_l0ITGKZVr|-T3d*bwRrvSv!XTN!lZc zu1ws*-KmEd&5mPk*_AGHlMWZgt|-mDPQS-gVFrt9+VLduLM5Z~gPEs@TFt6)Z{!~) z*5z@nvMP#Hh%zejh>He^Xm50fTDSO{5b@4aoy|$o-oY~n8UfWr^3SHarb=e8J<;t_ z>UuQ!=fk6Uq};e5Oki;KtwP>vMUk%WzZRF`eJ2zgZ1mD1? z@%tFbjj3D59tACmMgI!dSYC#NFfh_h$K< kfaM>*%qG8S#z00000 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f23920fc6474cc86730c5e7280cdb88549bfbb66 GIT binary patch literal 3721 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 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..80fe6e449e1e8cdc93c02f790d085401b4ef5b5f GIT binary patch literal 5372 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 KMNUMnLSTY@{FfjA literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c10bb70bcf6cef073805d8b1651e957610d6064d GIT binary patch literal 8130 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 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40.png new file mode 100644 index 0000000000000000000000000000000000000000..f23920fc6474cc86730c5e7280cdb88549bfbb66 GIT binary patch literal 3721 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 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9b126c58b3712b83b4c6a5a5f1d2a9e511a7e535 GIT binary patch literal 7405 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 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f3108abf486ac61cf59a664059cf4f9895a0c9c1 GIT binary patch literal 11043 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%0AZnHp^;v`IwvC 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 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f3108abf486ac61cf59a664059cf4f9895a0c9c1 GIT binary patch literal 11043 zcmV+;E8NtHP)Hg1+lHrgWSWcKdPn90sKGrRqvPeo9CG3uKX#J{(IASm?@+di}}l?o-=)F3E6 zwD^Ni=!>T7nL9I?X}YoAW$t|Qo$sD|?zw001?ah|SeB6#0T!CBEf+H4bBB+JJu8re zhoBb*p;u8ID_yBf0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00)%XR^J z`jH<$>RKN5V(7OqK*TS4xZz{h!*f1C3ECFkK$#7nA@pGN!$;%jYv zwjAKwmYb0gKL(K8-kPtb5${A?tlI~wzMrJ6wTdBr=Y%%%EaEMQ&o}4FQ^DA)s*}Z> z!FI&AHCpoWI|RUqx?7s@$8!5^Q=anY%X@i5{QA6kNcMelpE>R6eCYFpmMsVT zrI(b06~u#xf1yS}_UGdMvD``!0~u->P=lA4?YN`hilQ z|3tHka)7T{2CGqwjZfMwx$5irQN_*|e4l)UHmiYuz74Yp1t^#>hrJ3-SOXDcC_o0^ z7T9R1gAN8V6s;5)ieI5-7aQlmJn}lUna#nz!j%5V$X|o`xX!dHWQRV27P1=rj;t2b zW$~+pTw@bIek?ZvKPDL<64`^#UNTAck#RBsB6*5DP4<%UA_FqU$I>2EH_cM;u)Q~SI+rg`Rn{L z_AC5qq~L$#SMj%U$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>_Ci%bnxC;Vy6= zb6>{xYV#Ue-+LB$7`JEXmTRm^AtP)R9u{)KHsMiWGV&)32xCG~*nyU<>-!d;FP=Re z4r3qYr~6#KE>;1F`>_J_P5xC?ROxV(DIHdCO*p$HRQI@7^PwV@Pvuf+ z5K}u-6REM(K@W$srgorh0{i?O)v0c>QtHxU-hBdD(>iYJ4b2sIOVX2K8m~4gmYVA5 zh^QEb$V`rCQ-|7ZS{nuL-t>?3n=-o(6I(7vocj#GzCZEo`!3>+v;dYIfPu#&ZWzzX z2i^rZ^Mu;6+rb@?NPG+6)c5T6zxpzGe*M(x+{AON=PiJ>H#?ob-|uwRK0yDg0B4PV z0id6JRRdfL?*IS*IAvH#W=%~1DgXcg2mk?xX#fNO00031000^Q000000-yo_1ONa4 z0RR91c%TCS1ONa40RR91cmMzZ04pkY)Bpe`fk{L`RCodHod$+Cdb!{tl?0xMOd;PHYu2=yTq=WR{Lx<%1|ITpX&6}CYOqfhU zo;f_jOx|+axu@Q9&&}%ddH*7pfhs!!*;Te@nU2{AWDs1%Cqf3n83b4H5vbzb%TRCz z!Bu<&s(AORRhIr0xgu9sROGVMpscJceePyv#gIxM_NTXfd zS|Rzfh2QFXU76auC2guu1g|MvdwuqM z?&l@H8j_&`D0hc?J>9ik2fCk@{_4J7^nMU<~4HHce}(U>#*;KyEPj`&Eih!gycsj1+9aE)@e5XeVf0z3)&BGwX4;# zQWvaUBs6BbcA`=~e-(v2^vARA;i=EMoQ;FOp{UTF<^3%M*e3wO%L6F4Q0?{glt&$< zm02MOUMtEyahoIE6`jwu_PsXyUH8(gx7_U2^NfYHs@~ik+2Swm$d(7YbK9TlmWh2n zH{*@c`cmvZ6M+GS&1YvNW-NGwP!R9L(gS=&AdgyjF7mv;Q+dAAj^K5L>)m#By1R=y zoMEGI+r$Um?mM^8;MZy3_%JSGm#4$GfN07up(YA_ePB z*YC6<7`EB6dNa32!<}ro&315ztWVc^-^m7)&696PPl)#Se zzhmz(SqkFr>N&{TkHQC+nYU)4=?gp6@9nmi0(ixk!S3z3pNJbJCKk#Y(P>8Tde^a5 zTQeV^kO>8or6HGW0+cBAWK-XfbsO|A7NCtEB8mdJXs`eK;~7I_f!K4y-1_eHHpfcl zAK|X(a;}>yq<<&#%8BxrKujEvJ9N$mdT)rEEAy+SOsB(}_jea|7~l?Rw!cy5)8YVy zg@yM1qB)D*BU7K(?-`DXm8&w&XnVXnzy0a%{0^tPZx;RJmaJPAtGQ{tUUGEHv3gis z)BMI(!<;qq+zPQaWN#RH*V|T_H3*0Rh6NL1@`|b9M@`9rji1%_1iSaxv=`icQ=W7+ zva1{A&zEL?ma?MyxQ=Y8s~9DAF1hVU+At&ko5s1TSh(Q$#0 z2FrhQ&PR6ru1SxWyk-)5k%9bvYT7HB6bHICHCno^qWW(Z{pgFY(C@S&n4Ut70G_BY zYlfn@j_ugNWT8E3|J^P=%OYF6V9XOf2^GD7Ri>TY*;*fsSJ=-1f!_TTs_D7-Ks`&vFe(xKvWE>0WWu7 zn)#M%CQ8T4)w}Mt<^+i~U`&{8WL5!_S59*aHOOJEP%S&h%~~_p&5;?_u4Zf3Jim#t zVtYydnd>toGm)W-*DZBZR3;7>WcjMX@7;jY=P}1R*J|%hldNYlR3=EPst5aBux7D)Z{BA{ ztssxVK`{yfrVKt}v|T7U9>5i5te$O;bgb3Jl&Wxfu<>nbv~Vq|HKHqK3w0@g&nU)-Oo z^)BUrG}t^eeMXz(j8hC>I@%OASg=Rx{!R8YCk6FK-k}ZaWEUSTd0Nj{|JZ_wn-oN} zXDFMAh!ucGea?{YSubUs)%Nc;@m>A(0GuZskX2D( zvry?S4R$aJ_8K#tXZCw<)33|Mx~bAm4{5%?yJyPda(X=J`pKd2+>ZB~Vg{w6(GDDa zt$Sc_9SX%r|lcJ7Rr(l`&g%F7 z-^8?ex+;ulrut+j=NdYTl-Z5B3YgXboZr=78Po`(%Xg&-aFO*zzy z@Pc^!-h(ekvzvgkm}!$loly9e9hXT2ZGmmzPusrN>;oM#p-;t>(QV3+I22Hd~XoxBKx;;+BM;}FzwA4aI zG$0g-I;bl=L83ihp4ZAGgK0P}!B~KcuQZ6aGa=qR%B6ldNi3jkJQEAJ6R!^9txALV z?^A!}fHEPtax^{DibO^rgWyC)X)AsvgW#L<{QgJkkF-CU zvPhZn>i7Lf#dp%ng(x@8t2ePI{%G4tK;W_s1#YCabwpcj!At^yXt8`p8$b|4aC)IB zQpML{Ku}!;zU^3lJ9{_U`?QhwSIb;N;|&7!=jY_Po$B@0LO$_S#mgro2s4Y|fk=2z z@%yNF*)B)z@1^x-1=ok(X9A$4{j~I#sQZB_jeS<^e!%1lmmX|uDt;%8U@D~(v9xHk z%YF)TeQt+)W44b4{r=ybXfaCR84hv?9)EY2A+{wXS|Jk^V0ZYB14_hJ@ho<3T}5=f zzw5IWVHxdxb`2gl>_m&=2-nYIKRXlN>i1-{SM3@r%?E#XitS_afd>9zCOF$=-rseI z?N;>HgWp839QMNi#e}acF+qaQrQ&y)S#&HG!;B7hI^0ku2h>X$;Q_OL*&IZgW}bnQL%mxHxQJ6cx;&@UtjR zC?T>B3_IS42oO2TePUmq@&z7Zc zAdvdQBEYvXUEd|ASGsD>)RUGG$RIc^!(4HdWDs0&W1p6q%S8q!((-8evHW|OLGb`3 zB`jNm&m*J5%2Dt>QZ<&JndeHYzqDs~-|k zpdZ{DwS27YYmWBZsts#gccn=t{ZiOWqa5t)@!IPgtB=9Dw)A(om`RB=D%!vV--}0q zJXcxY2Wjjber=~mT;muScL>Wp`lqui?{Z-f5oP^d8Ujl%7g~&<8Rv=pv+u~h;Nbfa zLnji9kCP&@^)nKg5_~S1-?7`zok)$zlviHQRtSqOOJ|@AQZ~TeK`3#{1fXMU)>OU? zGRxM~u77fGU;`6vLc$lE9>_zotuNoO!m_U~(~f*%mtmE7wc^S1WZPPKP#bA^r9?2) z2tq*)-#86Otw5$)GVqYCj@=cl@|(HF%Gq4MT3t(q5-o%%j3As4>^LA_#)xI3?AU$k0AXajnO-p4@=q>O zl9r|GmstW7?(u%y^*TN4&bs1Vs<3CLqh3Q13XT>Oh= z%TX@*V)1{}OHQogw>jK0%3t5@Qnz>GUEQ6N9#KZyszuFdM=AlfR( z4zgY-86D`5=KEQO*kgY>$6eL+0=J)%hHtOTd*sA=WA^(_ykv`P)o3Q1Z(qE7{+U#L zrwzeSjXCi}W&IlT7K{9|CE`Y|0_3}5V98HKs$U`#30>W;PB*&`W$xW*7faG@7xW+0 zdyCF|n4)B95B0jql&kS8CTnNo1D1~p*&ReK>$lW5u)|rFMGuxuKCa7tztIwZpV$60 zH%LeJ?4^33W)h^K#0AUnb;tTf1dv+k!cl`_P7uU~t%Wnw${ETH!LUzqFvEgDE{VYR zZL+(abwG+>KWGf{zcs+5(%+$8FH2#_eUNj?h>I-Y8Dr2`ESz(aJd9dC&XIhKd|2d{ z#xupqE%!}+LgBDWZ8gY0i(E&OCJo`Goz7PJ;TCoa)_z*+W87ZK_)ZqQlSW+NuIzli zxWsNs&)>s6Fy(3Yio`-P)J(tN62q7LW+KG5A@~hi<9X78&u;1OEkba_`ivkFB-+1? zCJYFIeRi(h-tDe48eoBBrwc>22AMSa9J6y&i-R`ZX2G1nf|7v-`d*-Y!%T?hl@9Q+ zsV`VQN%BmxethZZ8{E6fVvCYQ-5#KFCIQFu9M|g5O%u!C=ewga%0AZnHp^;v`IwvC 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 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..759b5dc33076c10d0f00d24b00d137caa2b27d54 GIT binary patch literal 17431 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 AEdT%j literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-76.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-76.png new file mode 100644 index 0000000000000000000000000000000000000000..9dbd7938c4c194a4c5a611b83532c24b6302b5b6 GIT binary patch literal 7027 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 R@*@BM002ovPDHLkV1jvCke2`e literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-76@2x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..681394af717b4179ded469ea9e0be3083c7db364 GIT binary patch literal 14312 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 literal 0 HcmV?d00001 diff --git a/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x.png b/GlobalWordRacer/GlobalWordRacer/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9d135f8cdbbbaf72e0f3b7e32163be2c1844241b GIT binary patch literal 16008 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 pPuIhs{y&+jm89cCfDQY_yXkN?d}*Y( Date: Sun, 19 Apr 2020 01:22:23 -0400 Subject: [PATCH 7/9] add fastlane for app deployments --- GlobalWordRacer/.gitignore | 6 ++++ GlobalWordRacer/Gemfile | 9 +++++ .../GlobalWordRacer.xcodeproj/project.pbxproj | 25 +++++++++----- GlobalWordRacer/GlobalWordRacer/Info.plist | 2 +- .../GlobalWordRacer/Views/TitleView.swift | 33 ------------------ .../GlobalWordRacerTests/Info.plist | 2 +- .../GlobalWordRacerUITests/Info.plist | 2 +- GlobalWordRacer/fastlane/Appfile | 8 +++++ GlobalWordRacer/fastlane/Deliverfile | 3 ++ GlobalWordRacer/fastlane/Fastfile | 34 +++++++++++++++++++ GlobalWordRacer/fastlane/README.md | 29 ++++++++++++++++ .../fastlane/metadata/copyright.txt | 1 + .../en-US/apple_tv_privacy_policy.txt | 1 + .../fastlane/metadata/en-US/description.txt | 1 + .../fastlane/metadata/en-US/keywords.txt | 1 + .../fastlane/metadata/en-US/marketing_url.txt | 1 + .../fastlane/metadata/en-US/name.txt | 1 + .../fastlane/metadata/en-US/privacy_url.txt | 1 + .../metadata/en-US/promotional_text.txt | 1 + .../fastlane/metadata/en-US/release_notes.txt | 1 + .../fastlane/metadata/en-US/subtitle.txt | 1 + .../fastlane/metadata/en-US/support_url.txt | 1 + .../fastlane/metadata/primary_category.txt | 1 + .../metadata/primary_first_sub_category.txt | 1 + .../metadata/primary_second_sub_category.txt | 1 + .../review_information/demo_password.txt | 1 + .../metadata/review_information/demo_user.txt | 1 + .../review_information/email_address.txt | 1 + .../review_information/first_name.txt | 1 + .../metadata/review_information/last_name.txt | 1 + .../metadata/review_information/notes.txt | 1 + .../review_information/phone_number.txt | 1 + .../fastlane/metadata/secondary_category.txt | 1 + .../metadata/secondary_first_sub_category.txt | 1 + .../secondary_second_sub_category.txt | 1 + .../address_line1.txt | 1 + .../address_line2.txt | 1 + .../address_line3.txt | 1 + .../city_name.txt | 1 + .../country.txt | 1 + .../email_address.txt | 1 + .../first_name.txt | 1 + .../is_displayed_on_app_store.txt | 1 + .../last_name.txt | 1 + .../phone_number.txt | 1 + .../postal_code.txt | 1 + .../state.txt | 1 + .../trade_name.txt | 1 + .../fastlane/screenshots/README.txt | 7 ++++ 49 files changed, 152 insertions(+), 45 deletions(-) create mode 100644 GlobalWordRacer/.gitignore delete mode 100644 GlobalWordRacer/GlobalWordRacer/Views/TitleView.swift create mode 100644 GlobalWordRacer/fastlane/Appfile create mode 100644 GlobalWordRacer/fastlane/Deliverfile create mode 100644 GlobalWordRacer/fastlane/Fastfile create mode 100644 GlobalWordRacer/fastlane/README.md create mode 100644 GlobalWordRacer/fastlane/metadata/copyright.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/apple_tv_privacy_policy.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/description.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/keywords.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/marketing_url.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/name.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/privacy_url.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/promotional_text.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/release_notes.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/subtitle.txt create mode 100644 GlobalWordRacer/fastlane/metadata/en-US/support_url.txt create mode 100644 GlobalWordRacer/fastlane/metadata/primary_category.txt create mode 100644 GlobalWordRacer/fastlane/metadata/primary_first_sub_category.txt create mode 100644 GlobalWordRacer/fastlane/metadata/primary_second_sub_category.txt create mode 100644 GlobalWordRacer/fastlane/metadata/review_information/demo_password.txt create mode 100644 GlobalWordRacer/fastlane/metadata/review_information/demo_user.txt create mode 100644 GlobalWordRacer/fastlane/metadata/review_information/email_address.txt create mode 100644 GlobalWordRacer/fastlane/metadata/review_information/first_name.txt create mode 100644 GlobalWordRacer/fastlane/metadata/review_information/last_name.txt create mode 100644 GlobalWordRacer/fastlane/metadata/review_information/notes.txt create mode 100644 GlobalWordRacer/fastlane/metadata/review_information/phone_number.txt create mode 100644 GlobalWordRacer/fastlane/metadata/secondary_category.txt create mode 100644 GlobalWordRacer/fastlane/metadata/secondary_first_sub_category.txt create mode 100644 GlobalWordRacer/fastlane/metadata/secondary_second_sub_category.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line1.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line2.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line3.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/city_name.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/country.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/email_address.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/first_name.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/last_name.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/phone_number.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/postal_code.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/state.txt create mode 100644 GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/trade_name.txt create mode 100644 GlobalWordRacer/fastlane/screenshots/README.txt diff --git a/GlobalWordRacer/.gitignore b/GlobalWordRacer/.gitignore new file mode 100644 index 0000000..21efc54 --- /dev/null +++ b/GlobalWordRacer/.gitignore @@ -0,0 +1,6 @@ +fastlane/Preview.html +fastlane/report.xml +*.mobileprovision +*.zip +*.ipa +*.cer diff --git a/GlobalWordRacer/Gemfile b/GlobalWordRacer/Gemfile index e75085d..3cf0a53 100644 --- a/GlobalWordRacer/Gemfile +++ b/GlobalWordRacer/Gemfile @@ -6,3 +6,12 @@ end #> sudo gem install bundler #> bundle install #> bundle exec fastlane +#> bundle exec fastlane ios release + +# It looks like your project isn't set up to do automatic version incrementing +# To enable fastlane to handle automatic version incrementing for you, please follow this guide: +# https://developer.apple.com/library/content/qa/qa1827/_index.html +# Afterwards check out the fastlane docs on how to set up automatic build increments +# https://docs.fastlane.tools/getting-started/ios/beta-deployment/#best-practices +# 📸 Learn more about how to automatically generate localized App Store screenshots: +# https://docs.fastlane.tools/getting-started/ios/screenshots/ diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj index ff8e73b..a55b17a 100644 --- a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj @@ -23,7 +23,7 @@ F7F3623C244936C300812AED /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623B244936C300812AED /* GameView.swift */; }; F7F3623E244936F400812AED /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623D244936F400812AED /* WelcomeView.swift */; }; F7F3624024493CF300812AED /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623F24493CF300812AED /* MainView.swift */; }; - F7F36243244983FF00812AED /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = F7F36242244983FF00812AED /* Alamofire */; }; + F7F36243244983FF00812AED /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = F7F36242244983FF00812AED /* SwiftPackageProductDependency */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -73,7 +73,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F7F36243244983FF00812AED /* Alamofire in Frameworks */, + F7F36243244983FF00812AED /* BuildFile in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -195,7 +195,7 @@ ); name = GlobalWordRacer; packageProductDependencies = ( - F7F36242244983FF00812AED /* Alamofire */, + F7F36242244983FF00812AED /* SwiftPackageProductDependency */, ); productName = GlobalWordRacer; productReference = F7F362082447DA6300812AED /* GlobalWordRacer.app */; @@ -249,13 +249,16 @@ TargetAttributes = { F7F362072447DA6300812AED = { CreatedOnToolsVersion = 11.4; + ProvisioningStyle = Automatic; }; F7F3621D2447DA6900812AED = { CreatedOnToolsVersion = 11.4; + ProvisioningStyle = Automatic; TestTargetID = F7F362072447DA6300812AED; }; F7F362282447DA6900812AED = { CreatedOnToolsVersion = 11.4; + ProvisioningStyle = Automatic; TestTargetID = F7F362072447DA6300812AED; }; }; @@ -270,7 +273,7 @@ ); mainGroup = F7F361FF2447DA6300812AED; packageReferences = ( - F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */, + F7F36241244983FF00812AED /* RemoteSwiftPackageReference */, ); productRefGroup = F7F362092447DA6300812AED /* Products */; projectDirPath = ""; @@ -491,8 +494,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_ASSET_PATHS = "\"GlobalWordRacer/Preview Content\""; - DEVELOPMENT_TEAM = VLF9HQZ98F; + DEVELOPMENT_TEAM = 2DE824Y55C; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = GlobalWordRacer/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -503,6 +507,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; @@ -511,8 +516,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_ASSET_PATHS = "\"GlobalWordRacer/Preview Content\""; - DEVELOPMENT_TEAM = VLF9HQZ98F; + DEVELOPMENT_TEAM = 2DE824Y55C; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = GlobalWordRacer/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -523,6 +529,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; }; name = Release; }; @@ -652,7 +659,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */ = { + F7F36241244983FF00812AED /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/Alamofire.git"; requirement = { @@ -663,9 +670,9 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - F7F36242244983FF00812AED /* Alamofire */ = { + F7F36242244983FF00812AED /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */; + package = F7F36241244983FF00812AED /* RemoteSwiftPackageReference */; productName = Alamofire; }; /* End XCSwiftPackageProductDependency section */ diff --git a/GlobalWordRacer/GlobalWordRacer/Info.plist b/GlobalWordRacer/GlobalWordRacer/Info.plist index 867cf68..1a072a9 100644 --- a/GlobalWordRacer/GlobalWordRacer/Info.plist +++ b/GlobalWordRacer/GlobalWordRacer/Info.plist @@ -17,7 +17,7 @@ CFBundleShortVersionString 1.0 CFBundleVersion - 1 + 2 LSRequiresIPhoneOS NSAppTransportSecurity diff --git a/GlobalWordRacer/GlobalWordRacer/Views/TitleView.swift b/GlobalWordRacer/GlobalWordRacer/Views/TitleView.swift deleted file mode 100644 index 741eef8..0000000 --- a/GlobalWordRacer/GlobalWordRacer/Views/TitleView.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// TitleView.swift -// GlobalWordRacer -// -// Created by Andrew Gerst on 4/18/20. -// Copyright © 2020 Andrew Gerst. All rights reserved. -// - -import SwiftUI - -struct TitleView: View { - - var title: String - - var body: some View { - Text(title) - .fontWeight(.semibold) - .font(.system(size: 40)) - .frame(width: UIScreen.main.bounds.width, height: 100) - .padding(10) - .background(Color.blue) - .foregroundColor(.white) - } - -} - -struct TitleView_Previews: PreviewProvider { - - static var previews: some View { - TitleView(title: "Global Word Racer") - } - -} diff --git a/GlobalWordRacer/GlobalWordRacerTests/Info.plist b/GlobalWordRacer/GlobalWordRacerTests/Info.plist index 64d65ca..7707eb9 100644 --- a/GlobalWordRacer/GlobalWordRacerTests/Info.plist +++ b/GlobalWordRacer/GlobalWordRacerTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.0 CFBundleVersion - 1 + 2 diff --git a/GlobalWordRacer/GlobalWordRacerUITests/Info.plist b/GlobalWordRacer/GlobalWordRacerUITests/Info.plist index 64d65ca..7707eb9 100644 --- a/GlobalWordRacer/GlobalWordRacerUITests/Info.plist +++ b/GlobalWordRacer/GlobalWordRacerUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.0 CFBundleVersion - 1 + 2 diff --git a/GlobalWordRacer/fastlane/Appfile b/GlobalWordRacer/fastlane/Appfile new file mode 100644 index 0000000..1976494 --- /dev/null +++ b/GlobalWordRacer/fastlane/Appfile @@ -0,0 +1,8 @@ +app_identifier("hnswave.GlobalWordRacer") # The bundle identifier of your app +apple_id("andreygerst@gmail.com") # Your Apple email address + +itc_team_id("117748759") # App Store Connect Team ID +team_id("2DE824Y55C") # Developer Portal Team ID + +# For more information about the Appfile, see: +# https://docs.fastlane.tools/advanced/#appfile diff --git a/GlobalWordRacer/fastlane/Deliverfile b/GlobalWordRacer/fastlane/Deliverfile new file mode 100644 index 0000000..74739f7 --- /dev/null +++ b/GlobalWordRacer/fastlane/Deliverfile @@ -0,0 +1,3 @@ +# The Deliverfile allows you to store various App Store Connect metadata +# For more information, check out the docs +# https://docs.fastlane.tools/actions/deliver/ diff --git a/GlobalWordRacer/fastlane/Fastfile b/GlobalWordRacer/fastlane/Fastfile new file mode 100644 index 0000000..35e1f25 --- /dev/null +++ b/GlobalWordRacer/fastlane/Fastfile @@ -0,0 +1,34 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins +# + +# Uncomment the line if you want fastlane to automatically update itself +# update_fastlane + +default_platform(:ios) + +platform :ios do + desc "Push a new release build to the App Store" + lane :release do + update_code_signing_settings( + use_automatic_signing: true + ) + cert + sigh(force: true) + # increment_version_number + increment_build_number + build_app( + scheme: "GlobalWordRacer", + export_xcargs: "-allowProvisioningUpdates" + ) + upload_to_app_store + end +end diff --git a/GlobalWordRacer/fastlane/README.md b/GlobalWordRacer/fastlane/README.md new file mode 100644 index 0000000..3fb29b2 --- /dev/null +++ b/GlobalWordRacer/fastlane/README.md @@ -0,0 +1,29 @@ +fastlane documentation +================ +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +``` +xcode-select --install +``` + +Install _fastlane_ using +``` +[sudo] gem install fastlane -NV +``` +or alternatively using `brew cask install fastlane` + +# Available Actions +## iOS +### ios release +``` +fastlane ios release +``` +Push a new release build to the App Store + +---- + +This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. +More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). +The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/GlobalWordRacer/fastlane/metadata/copyright.txt b/GlobalWordRacer/fastlane/metadata/copyright.txt new file mode 100644 index 0000000..a3e67da --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/copyright.txt @@ -0,0 +1 @@ +2020 HnS Wave diff --git a/GlobalWordRacer/fastlane/metadata/en-US/apple_tv_privacy_policy.txt b/GlobalWordRacer/fastlane/metadata/en-US/apple_tv_privacy_policy.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/apple_tv_privacy_policy.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/en-US/description.txt b/GlobalWordRacer/fastlane/metadata/en-US/description.txt new file mode 100644 index 0000000..3eb2eaf --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/description.txt @@ -0,0 +1 @@ +Score points by finding words in the grid. The longer the word the more points you earn! diff --git a/GlobalWordRacer/fastlane/metadata/en-US/keywords.txt b/GlobalWordRacer/fastlane/metadata/en-US/keywords.txt new file mode 100644 index 0000000..e43d293 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/keywords.txt @@ -0,0 +1 @@ +game, games, puzzle, fun, world, global, word, words, racer diff --git a/GlobalWordRacer/fastlane/metadata/en-US/marketing_url.txt b/GlobalWordRacer/fastlane/metadata/en-US/marketing_url.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/marketing_url.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/en-US/name.txt b/GlobalWordRacer/fastlane/metadata/en-US/name.txt new file mode 100644 index 0000000..179d958 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/name.txt @@ -0,0 +1 @@ +Global Word Racer diff --git a/GlobalWordRacer/fastlane/metadata/en-US/privacy_url.txt b/GlobalWordRacer/fastlane/metadata/en-US/privacy_url.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/privacy_url.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/en-US/promotional_text.txt b/GlobalWordRacer/fastlane/metadata/en-US/promotional_text.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/promotional_text.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/en-US/release_notes.txt b/GlobalWordRacer/fastlane/metadata/en-US/release_notes.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/release_notes.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/en-US/subtitle.txt b/GlobalWordRacer/fastlane/metadata/en-US/subtitle.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/subtitle.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/en-US/support_url.txt b/GlobalWordRacer/fastlane/metadata/en-US/support_url.txt new file mode 100644 index 0000000..d4ee4b1 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/en-US/support_url.txt @@ -0,0 +1 @@ +http://hnswave.co/app-store/support.html diff --git a/GlobalWordRacer/fastlane/metadata/primary_category.txt b/GlobalWordRacer/fastlane/metadata/primary_category.txt new file mode 100644 index 0000000..a14e466 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/primary_category.txt @@ -0,0 +1 @@ +Games diff --git a/GlobalWordRacer/fastlane/metadata/primary_first_sub_category.txt b/GlobalWordRacer/fastlane/metadata/primary_first_sub_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/primary_first_sub_category.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/primary_second_sub_category.txt b/GlobalWordRacer/fastlane/metadata/primary_second_sub_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/primary_second_sub_category.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/review_information/demo_password.txt b/GlobalWordRacer/fastlane/metadata/review_information/demo_password.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/review_information/demo_password.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/review_information/demo_user.txt b/GlobalWordRacer/fastlane/metadata/review_information/demo_user.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/review_information/demo_user.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/review_information/email_address.txt b/GlobalWordRacer/fastlane/metadata/review_information/email_address.txt new file mode 100644 index 0000000..aed463a --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/review_information/email_address.txt @@ -0,0 +1 @@ +gerst20051@gmail.com diff --git a/GlobalWordRacer/fastlane/metadata/review_information/first_name.txt b/GlobalWordRacer/fastlane/metadata/review_information/first_name.txt new file mode 100644 index 0000000..e08a0cf --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/review_information/first_name.txt @@ -0,0 +1 @@ +Andrew diff --git a/GlobalWordRacer/fastlane/metadata/review_information/last_name.txt b/GlobalWordRacer/fastlane/metadata/review_information/last_name.txt new file mode 100644 index 0000000..70e6ecb --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/review_information/last_name.txt @@ -0,0 +1 @@ +Gerst diff --git a/GlobalWordRacer/fastlane/metadata/review_information/notes.txt b/GlobalWordRacer/fastlane/metadata/review_information/notes.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/review_information/notes.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/review_information/phone_number.txt b/GlobalWordRacer/fastlane/metadata/review_information/phone_number.txt new file mode 100644 index 0000000..47d32c7 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/review_information/phone_number.txt @@ -0,0 +1 @@ +704-740-8492 diff --git a/GlobalWordRacer/fastlane/metadata/secondary_category.txt b/GlobalWordRacer/fastlane/metadata/secondary_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/secondary_category.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/secondary_first_sub_category.txt b/GlobalWordRacer/fastlane/metadata/secondary_first_sub_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/secondary_first_sub_category.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/secondary_second_sub_category.txt b/GlobalWordRacer/fastlane/metadata/secondary_second_sub_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/secondary_second_sub_category.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line1.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line1.txt new file mode 100644 index 0000000..e2b8649 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line1.txt @@ -0,0 +1 @@ +1225 S Church St diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line2.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line2.txt new file mode 100644 index 0000000..fc35769 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line2.txt @@ -0,0 +1 @@ +Apt 406 diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line3.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line3.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/address_line3.txt @@ -0,0 +1 @@ + diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/city_name.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/city_name.txt new file mode 100644 index 0000000..d011f15 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/city_name.txt @@ -0,0 +1 @@ +Charlotte diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/country.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/country.txt new file mode 100644 index 0000000..e0f84d0 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/country.txt @@ -0,0 +1 @@ +United States diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/email_address.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/email_address.txt new file mode 100644 index 0000000..aed463a --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/email_address.txt @@ -0,0 +1 @@ +gerst20051@gmail.com diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/first_name.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/first_name.txt new file mode 100644 index 0000000..e08a0cf --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/first_name.txt @@ -0,0 +1 @@ +Andrew diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt new file mode 100644 index 0000000..c508d53 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt @@ -0,0 +1 @@ +false diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/last_name.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/last_name.txt new file mode 100644 index 0000000..70e6ecb --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/last_name.txt @@ -0,0 +1 @@ +Gerst diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/phone_number.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/phone_number.txt new file mode 100644 index 0000000..47d32c7 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/phone_number.txt @@ -0,0 +1 @@ +704-740-8492 diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/postal_code.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/postal_code.txt new file mode 100644 index 0000000..03a8742 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/postal_code.txt @@ -0,0 +1 @@ +28203 diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/state.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/state.txt new file mode 100644 index 0000000..c8b375b --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/state.txt @@ -0,0 +1 @@ +North Carolina diff --git a/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/trade_name.txt b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/trade_name.txt new file mode 100644 index 0000000..39f9049 --- /dev/null +++ b/GlobalWordRacer/fastlane/metadata/trade_representative_contact_information/trade_name.txt @@ -0,0 +1 @@ +Andrew Gerst diff --git a/GlobalWordRacer/fastlane/screenshots/README.txt b/GlobalWordRacer/fastlane/screenshots/README.txt new file mode 100644 index 0000000..8b015ec --- /dev/null +++ b/GlobalWordRacer/fastlane/screenshots/README.txt @@ -0,0 +1,7 @@ +Put all screenshots you want to use inside the folder of its language (e.g. en-US). +The device type will automatically be recognized using the image resolution. Apple TV screenshots +should be stored in a subdirectory named appleTV with language folders inside of it. iMessage +screenshots, like Apple TV screenshots, should also be stored in a subdirectory named iMessage +with language folders inside of it. + +The screenshots can be named whatever you want, but keep in mind they are sorted alphabetically. From 956f5d6fbd78f943e77368e35d929ef2205aa5a3 Mon Sep 17 00:00:00 2001 From: Andrew Gerst Date: Sun, 19 Apr 2020 01:34:57 -0400 Subject: [PATCH 8/9] implement points for word function --- .../GlobalWordRacer.xcodeproj/project.pbxproj | 18 +++++++----------- .../Views/CurrentSelectionView.swift | 8 ++------ .../Views/FoundSolutionsView.swift | 16 ++++++++++++---- .../GlobalWordRacer/Views/GameView.swift | 11 +++++++++-- .../GlobalWordRacer/Views/LetterView.swift | 6 +----- .../GlobalWordRacer/Views/MainView.swift | 2 ++ .../GlobalWordRacer/Views/WelcomeView.swift | 11 ++++++++++- 7 files changed, 43 insertions(+), 29 deletions(-) diff --git a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj index a55b17a..91400d5 100644 --- a/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj +++ b/GlobalWordRacer/GlobalWordRacer.xcodeproj/project.pbxproj @@ -12,7 +12,6 @@ F795E94E244B916D00CA9AF5 /* CurrentSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E94D244B916D00CA9AF5 /* CurrentSelectionView.swift */; }; F795E950244B950D00CA9AF5 /* FoundSolutionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E94F244B950D00CA9AF5 /* FoundSolutionsView.swift */; }; F795E952244B99C300CA9AF5 /* InvalidWordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E951244B99C300CA9AF5 /* InvalidWordView.swift */; }; - F795E954244BC14500CA9AF5 /* TitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F795E953244BC14500CA9AF5 /* TitleView.swift */; }; F7F3620C2447DA6300812AED /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620B2447DA6300812AED /* AppDelegate.swift */; }; F7F3620E2447DA6300812AED /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3620D2447DA6300812AED /* SceneDelegate.swift */; }; F7F362122447DA6900812AED /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7F362112447DA6900812AED /* Assets.xcassets */; }; @@ -23,7 +22,7 @@ F7F3623C244936C300812AED /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623B244936C300812AED /* GameView.swift */; }; F7F3623E244936F400812AED /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623D244936F400812AED /* WelcomeView.swift */; }; F7F3624024493CF300812AED /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F3623F24493CF300812AED /* MainView.swift */; }; - F7F36243244983FF00812AED /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = F7F36242244983FF00812AED /* SwiftPackageProductDependency */; }; + F7F36243244983FF00812AED /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = F7F36242244983FF00812AED /* Alamofire */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -49,7 +48,6 @@ F795E94D244B916D00CA9AF5 /* CurrentSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrentSelectionView.swift; sourceTree = ""; }; F795E94F244B950D00CA9AF5 /* FoundSolutionsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FoundSolutionsView.swift; sourceTree = ""; }; F795E951244B99C300CA9AF5 /* InvalidWordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvalidWordView.swift; sourceTree = ""; }; - F795E953244BC14500CA9AF5 /* TitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleView.swift; sourceTree = ""; }; F7F362082447DA6300812AED /* GlobalWordRacer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GlobalWordRacer.app; sourceTree = BUILT_PRODUCTS_DIR; }; F7F3620B2447DA6300812AED /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; F7F3620D2447DA6300812AED /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -73,7 +71,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F7F36243244983FF00812AED /* BuildFile in Frameworks */, + F7F36243244983FF00812AED /* Alamofire in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -111,7 +109,6 @@ F795E951244B99C300CA9AF5 /* InvalidWordView.swift */, F795E94B244B86E200CA9AF5 /* LetterView.swift */, F7F3623F24493CF300812AED /* MainView.swift */, - F795E953244BC14500CA9AF5 /* TitleView.swift */, F7F3623D244936F400812AED /* WelcomeView.swift */, ); path = Views; @@ -195,7 +192,7 @@ ); name = GlobalWordRacer; packageProductDependencies = ( - F7F36242244983FF00812AED /* SwiftPackageProductDependency */, + F7F36242244983FF00812AED /* Alamofire */, ); productName = GlobalWordRacer; productReference = F7F362082447DA6300812AED /* GlobalWordRacer.app */; @@ -273,7 +270,7 @@ ); mainGroup = F7F361FF2447DA6300812AED; packageReferences = ( - F7F36241244983FF00812AED /* RemoteSwiftPackageReference */, + F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */, ); productRefGroup = F7F362092447DA6300812AED /* Products */; projectDirPath = ""; @@ -326,7 +323,6 @@ F7F3623C244936C300812AED /* GameView.swift in Sources */, F795E950244B950D00CA9AF5 /* FoundSolutionsView.swift in Sources */, F7F3624024493CF300812AED /* MainView.swift in Sources */, - F795E954244BC14500CA9AF5 /* TitleView.swift in Sources */, F795E949244A3BC400CA9AF5 /* GridAndSolutions.swift in Sources */, F7F3623E244936F400812AED /* WelcomeView.swift in Sources */, ); @@ -659,7 +655,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - F7F36241244983FF00812AED /* RemoteSwiftPackageReference */ = { + F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/Alamofire.git"; requirement = { @@ -670,9 +666,9 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - F7F36242244983FF00812AED /* SwiftPackageProductDependency */ = { + F7F36242244983FF00812AED /* Alamofire */ = { isa = XCSwiftPackageProductDependency; - package = F7F36241244983FF00812AED /* RemoteSwiftPackageReference */; + package = F7F36241244983FF00812AED /* XCRemoteSwiftPackageReference "Alamofire" */; productName = Alamofire; }; /* End XCSwiftPackageProductDependency section */ diff --git a/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift b/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift index b7d22b2..5fa9bbf 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift @@ -24,15 +24,11 @@ struct CurrentSelectionView: View { .font(.title) .padding() .frame(width: UIScreen.main.bounds.width - 60) - .background(LinearGradient( - gradient: Gradient(colors: [.green, .blue]), - startPoint: .leading, - endPoint: .trailing - )) + .background(Color.blue) .foregroundColor(.white) .cornerRadius(40) } - .padding(.top, 40) + .padding(.top, 20) } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift b/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift index cbd5b52..acfd9bf 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift @@ -14,29 +14,37 @@ struct FoundSolutionsView: View { var body: some View { VStack { - Text(list.count > 0 ? "\(list.count) Word\(list.count > 1 ? "s": "") Found (\(list.count * 20) Points)" : "No Words Found") + Text( + list.count > 0 + ? "\(list.count) Word\(list.count > 1 ? "s": "") Found (\(list.map(self.pointsForWord).reduce(0, +)) Points)" + : "No Words Found" + ) + .foregroundColor(.black) .fontWeight(.semibold) .font(.headline) - .padding(.top) ScrollView(.vertical) { VStack { ForEach(list.reversed(), id: \.self) { word in HStack { Text(word) + .foregroundColor(.black) Spacer() Text("\(self.pointsForWord(word))") + .foregroundColor(.black) } } }.frame(width: UIScreen.main.bounds.width - 60) } Spacer() - }.frame(width: UIScreen.main.bounds.width - 60, height: 160) + } + .frame(width: UIScreen.main.bounds.width - 60, height: 160) } func pointsForWord(_ word: String) -> Int { - return 20 + let wordPointsDistribution = [0, 0, 0, 10, 20, 40, 80, 120, 140, 220, 300] + return word.count > 11 ? 400 : wordPointsDistribution[word.count] } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift index abb1d56..c5bd0f2 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift @@ -19,12 +19,18 @@ struct GameView: View { var body: some View { VStack { - TitleView(title: "Global Word Racer") - Spacer() + Text("Global Word Racer") + .fontWeight(.semibold) + .font(.system(size: 40)) + .frame(width: UIScreen.main.bounds.width, height: 60) + .padding(.top, 80) + .background(Color.blue) + .foregroundColor(.white) buildBoard() CurrentSelectionView(text: $currentSelection, handler: selectionHandler) InvalidWordView(word: $invalidWord, duplicate: $duplicateWord) FoundSolutionsView(list: $foundSolutions) + Spacer() } } @@ -44,6 +50,7 @@ struct GameView: View { } } } + .padding(.top, 20) } func letterHandler(letter: String) -> Void { diff --git a/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift b/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift index 56451fb..ea06c78 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift @@ -22,11 +22,7 @@ struct LetterView: View { .font(.title) .frame(width: 40) .padding() - .background(LinearGradient( - gradient: Gradient(colors: [Color.green, Color.blue]), - startPoint: .leading, - endPoint: .trailing - )) + .background(Color.blue) .foregroundColor(.white) .cornerRadius(40) } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift b/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift index 09c7ef0..309b715 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift @@ -22,6 +22,8 @@ struct MainView: View { WelcomeView(showGame: $showGame, grid: $grid, solutions: $solutions) } } + .edgesIgnoringSafeArea(.all) + .background(Color.white) } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift b/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift index e910e55..0f121f5 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift @@ -17,7 +17,14 @@ struct WelcomeView: View { var body: some View { VStack { - TitleView(title: "Global Word Racer") + Spacer() + + Text("Global Word Racer") + .fontWeight(.semibold) + .font(.system(size: 40)) + .frame(width: UIScreen.main.bounds.width, height: 140) + .background(Color.blue) + .foregroundColor(.white) Button( action: { @@ -36,6 +43,8 @@ struct WelcomeView: View { } ) .padding(40) + + Spacer() } } From 20064ba9ca6dc5eb6f8e2dfac63d0b5d57d093f6 Mon Sep 17 00:00:00 2001 From: Andrew Gerst Date: Mon, 20 Apr 2020 02:06:28 -0400 Subject: [PATCH 9/9] refactor to allow for multiple rounds using a timer --- .../Views/CurrentSelectionView.swift | 10 +++--- .../Views/FoundSolutionsView.swift | 18 ++++++---- .../GlobalWordRacer/Views/GameView.swift | 34 ++++++++++++++++--- .../GlobalWordRacer/Views/LetterView.swift | 12 ++++--- .../GlobalWordRacer/Views/MainView.swift | 17 ++++++++-- .../GlobalWordRacer/Views/WelcomeView.swift | 15 ++------ 6 files changed, 72 insertions(+), 34 deletions(-) diff --git a/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift b/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift index 5fa9bbf..e8ad6f7 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/CurrentSelectionView.swift @@ -11,7 +11,8 @@ import SwiftUI struct CurrentSelectionView: View { @Binding var text: String - var handler: () -> Void + @Binding var hasRoundEnded: Bool + let handler: () -> Void var body: some View { Button(action: { @@ -19,15 +20,16 @@ struct CurrentSelectionView: View { self.handler() } }) { - Text(text.count > 0 ? text.uppercased() : " ") + Text(hasRoundEnded ? "ROUND OVER" : text.count > 0 ? text.uppercased() : " ") .fontWeight(.semibold) .font(.title) .padding() .frame(width: UIScreen.main.bounds.width - 60) - .background(Color.blue) + .background(hasRoundEnded ? Color.gray : Color.blue) .foregroundColor(.white) .cornerRadius(40) } + .disabled(hasRoundEnded) .padding(.top, 20) } @@ -36,7 +38,7 @@ struct CurrentSelectionView: View { struct CurrentSelectionView_Previews: PreviewProvider { static var previews: some View { - CurrentSelectionView(text: .constant("Quest"), handler: {}) + CurrentSelectionView(text: .constant("Quest"), hasRoundEnded: .constant(false), handler: {}) } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift b/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift index acfd9bf..1a907f6 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/FoundSolutionsView.swift @@ -11,13 +11,17 @@ import SwiftUI struct FoundSolutionsView: View { @Binding var list: [String] + @Binding var solutions: [String] + @Binding var hasRoundEnded: Bool var body: some View { VStack { Text( - list.count > 0 - ? "\(list.count) Word\(list.count > 1 ? "s": "") Found (\(list.map(self.pointsForWord).reduce(0, +)) Points)" - : "No Words Found" + hasRoundEnded + ? "Full Solutions List" + : list.count > 0 + ? "\(list.count) Word\(list.count > 1 ? "s": "") Found (\(list.map(self.pointsForWord).reduce(0, +)) Points)" + : "No Words Found" ) .foregroundColor(.black) .fontWeight(.semibold) @@ -25,13 +29,13 @@ struct FoundSolutionsView: View { ScrollView(.vertical) { VStack { - ForEach(list.reversed(), id: \.self) { word in + ForEach(hasRoundEnded ? solutions.sorted { $0.count > $1.count } : list.reversed(), id: \.self) { word in HStack { Text(word) - .foregroundColor(.black) + .foregroundColor(self.hasRoundEnded && self.list.contains(word) ? .green : .black) Spacer() Text("\(self.pointsForWord(word))") - .foregroundColor(.black) + .foregroundColor(self.hasRoundEnded && self.list.contains(word) ? .green : .black) } } }.frame(width: UIScreen.main.bounds.width - 60) @@ -52,7 +56,7 @@ struct FoundSolutionsView: View { struct FoundSolutionsView_Previews: PreviewProvider { static var previews: some View { - FoundSolutionsView(list: .constant(["Word1", "Word2"])) + FoundSolutionsView(list: .constant(["Word1", "Word2"]), solutions: .constant(["Word1", "Word2"]), hasRoundEnded: .constant(false)) } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift index c5bd0f2..82b2da6 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/GameView.swift @@ -16,6 +16,10 @@ struct GameView: View { @State private var foundSolutions: [String] = [] @State private var invalidWord = "" @State private var duplicateWord = "" + @State private var hasRoundEnded = false + @State private var timeRemaining: Int = 30 + let gameTimer = Timer.publish(every: 1, on: .main, in: .common).autoconnect() + let loadNewGameHandler: (_ callback: @escaping () -> Void) -> Void var body: some View { VStack { @@ -27,9 +31,31 @@ struct GameView: View { .background(Color.blue) .foregroundColor(.white) buildBoard() - CurrentSelectionView(text: $currentSelection, handler: selectionHandler) + CurrentSelectionView(text: $currentSelection, hasRoundEnded: $hasRoundEnded, handler: selectionHandler) + Text(timeRemaining > 0 + ? "This Round Ends In \(timeRemaining) Seconds" + : "Next Round Starts In \(16 + timeRemaining) Seconds" + ) + .padding(.top) + .foregroundColor(.black) + .onReceive(gameTimer) { input in + self.timeRemaining -= 1 + if (self.timeRemaining <= 0) { + self.hasRoundEnded = true + self.currentSelection = "" + self.invalidWord = "" + self.duplicateWord = "" + } + if (self.timeRemaining <= -15) { + self.loadNewGameHandler({ + self.timeRemaining = 30 + self.hasRoundEnded = false + self.foundSolutions = [] + }) + } + } InvalidWordView(word: $invalidWord, duplicate: $duplicateWord) - FoundSolutionsView(list: $foundSolutions) + FoundSolutionsView(list: $foundSolutions, solutions: $solutions, hasRoundEnded: $hasRoundEnded) Spacer() } } @@ -42,7 +68,7 @@ struct GameView: View { Spacer() ForEach(self.grid[rowIndex].indices) { cellIndex in Group { - LetterView(text: self.$grid[rowIndex][cellIndex], handler: self.letterHandler) + LetterView(text: self.$grid[rowIndex][cellIndex], hasRoundEnded: self.$hasRoundEnded, handler: self.letterHandler) Spacer() } } @@ -82,7 +108,7 @@ struct GameView_Previews: PreviewProvider { ["E", "Qu", "G", "H"], ["I", "J", "K", "L"], ["M", "N", "O", "P"] - ]), solutions: .constant([])) + ]), solutions: .constant([]), loadNewGameHandler: { callback in }) } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift b/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift index ea06c78..55e3b6f 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/LetterView.swift @@ -11,7 +11,8 @@ import SwiftUI struct LetterView: View { @Binding var text: String - var handler: (String) -> Void + @Binding var hasRoundEnded: Bool + let handler: (String) -> Void var body: some View { Button(action: { @@ -22,10 +23,11 @@ struct LetterView: View { .font(.title) .frame(width: 40) .padding() - .background(Color.blue) + .background(hasRoundEnded ? Color.gray : Color.blue) .foregroundColor(.white) .cornerRadius(40) } + .disabled(hasRoundEnded) } } @@ -34,9 +36,9 @@ struct LetterView_Previews: PreviewProvider { static var previews: some View { VStack(spacing: 20) { - LetterView(text: .constant("A"), handler: { (letter: String) in }) - LetterView(text: .constant("Qu"), handler: { (letter: String) in }) - LetterView(text: .constant("Z"), handler: { (letter: String) in }) + LetterView(text: .constant("A"), hasRoundEnded: .constant(false), handler: { (letter: String) in }) + LetterView(text: .constant("Qu"), hasRoundEnded: .constant(false), handler: { (letter: String) in }) + LetterView(text: .constant("Z"), hasRoundEnded: .constant(false), handler: { (letter: String) in }) } } diff --git a/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift b/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift index 309b715..c99d2cb 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/MainView.swift @@ -6,6 +6,7 @@ // Copyright © 2020 Andrew Gerst. All rights reserved. // +import Alamofire import SwiftUI struct MainView: View { @@ -17,15 +18,27 @@ struct MainView: View { var body: some View { Group { if showGame { - GameView(grid: $grid, solutions: $solutions) + GameView(grid: $grid, solutions: $solutions, loadNewGameHandler: loadNewGame) } else { - WelcomeView(showGame: $showGame, grid: $grid, solutions: $solutions) + WelcomeView(showGame: $showGame, loadNewGameHandler: loadNewGame) } } .edgesIgnoringSafeArea(.all) .background(Color.white) } + func loadNewGame(callback: @escaping () -> Void) { + AF.request("http://hnswave.co:8000/grid") + .validate() + .responseDecodable(of: GridAndSolutions.self) { response in + guard let data = response.value else { return } + self.grid = data.grid + self.solutions = data.solutions + self.showGame = true + callback() + } + } + } struct MainView_Previews: PreviewProvider { diff --git a/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift b/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift index 0f121f5..585281e 100644 --- a/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift +++ b/GlobalWordRacer/GlobalWordRacer/Views/WelcomeView.swift @@ -6,14 +6,12 @@ // Copyright © 2020 Andrew Gerst. All rights reserved. // -import Alamofire import SwiftUI struct WelcomeView: View { @Binding var showGame: Bool - @Binding var grid: [[String]] - @Binding var solutions: [String] + let loadNewGameHandler: (_ callback: @escaping () -> Void) -> Void var body: some View { VStack { @@ -28,14 +26,7 @@ struct WelcomeView: View { Button( action: { - AF.request("http://hnswave.co:8000/grid") - .validate() - .responseDecodable(of: GridAndSolutions.self) { response in - guard let data = response.value else { return } - self.grid = data.grid - self.solutions = data.solutions - self.showGame = true - } + self.loadNewGameHandler({}) }, label: { Text("Join Game") @@ -53,7 +44,7 @@ struct WelcomeView: View { struct WelcomeView_Previews: PreviewProvider { static var previews: some View { - WelcomeView(showGame: .constant(false), grid: .constant([]), solutions: .constant([])) + WelcomeView(showGame: .constant(false), loadNewGameHandler: { callback in }) } }