add folder

This commit is contained in:
Penelope Gomez / Pogmommy 2022-08-04 15:47:14 -06:00
parent 8190d3641f
commit 7f0a446212
43 changed files with 2523 additions and 0 deletions

View file

@ -0,0 +1,643 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 55;
objects = {
/* Begin PBXBuildFile section */
BD805B872720AD2E0070B153 /* SetupControllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD805B862720AD2E0070B153 /* SetupControllers.swift */; };
BD8AAC44271D1FA5005F159B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8AAC43271D1FA5005F159B /* AppDelegate.swift */; };
BD8AAC46271D1FA5005F159B /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8AAC45271D1FA5005F159B /* SceneDelegate.swift */; };
BD8AAC48271D1FA5005F159B /* GameControllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8AAC47271D1FA5005F159B /* GameControllers.swift */; };
BD8AAC4B271D1FA5005F159B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BD8AAC49271D1FA5005F159B /* Main.storyboard */; };
BD8AAC4D271D1FAB005F159B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BD8AAC4C271D1FAB005F159B /* Assets.xcassets */; };
BD8AAC50271D1FAB005F159B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BD8AAC4E271D1FAB005F159B /* LaunchScreen.storyboard */; };
BD8AAC5B271D1FAC005F159B /* DevourAndDroughtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8AAC5A271D1FAC005F159B /* DevourAndDroughtTests.swift */; };
BD8AAC65271D1FAC005F159B /* DevourAndDroughtUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8AAC64271D1FAC005F159B /* DevourAndDroughtUITests.swift */; };
BD8AAC67271D1FAC005F159B /* DevourAndDroughtUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8AAC66271D1FAC005F159B /* DevourAndDroughtUITestsLaunchTests.swift */; };
BDF824EC27206BBD0023067C /* SupportingClasses.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDF824EB27206BBD0023067C /* SupportingClasses.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
BD8AAC57271D1FAC005F159B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BD8AAC38271D1FA5005F159B /* Project object */;
proxyType = 1;
remoteGlobalIDString = BD8AAC3F271D1FA5005F159B;
remoteInfo = DevourAndDrought;
};
BD8AAC61271D1FAC005F159B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BD8AAC38271D1FA5005F159B /* Project object */;
proxyType = 1;
remoteGlobalIDString = BD8AAC3F271D1FA5005F159B;
remoteInfo = DevourAndDrought;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
BD805B862720AD2E0070B153 /* SetupControllers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetupControllers.swift; sourceTree = "<group>"; };
BD8AAC40271D1FA5005F159B /* DevourAndDrought.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DevourAndDrought.app; sourceTree = BUILT_PRODUCTS_DIR; };
BD8AAC43271D1FA5005F159B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
BD8AAC45271D1FA5005F159B /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
BD8AAC47271D1FA5005F159B /* GameControllers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameControllers.swift; sourceTree = "<group>"; };
BD8AAC4A271D1FA5005F159B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
BD8AAC4C271D1FAB005F159B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
BD8AAC4F271D1FAB005F159B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
BD8AAC51271D1FAB005F159B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
BD8AAC56271D1FAC005F159B /* DevourAndDroughtTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevourAndDroughtTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
BD8AAC5A271D1FAC005F159B /* DevourAndDroughtTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DevourAndDroughtTests.swift; sourceTree = "<group>"; };
BD8AAC60271D1FAC005F159B /* DevourAndDroughtUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevourAndDroughtUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
BD8AAC64271D1FAC005F159B /* DevourAndDroughtUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DevourAndDroughtUITests.swift; sourceTree = "<group>"; };
BD8AAC66271D1FAC005F159B /* DevourAndDroughtUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DevourAndDroughtUITestsLaunchTests.swift; sourceTree = "<group>"; };
BDF824EB27206BBD0023067C /* SupportingClasses.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportingClasses.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
BD8AAC3D271D1FA5005F159B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
BD8AAC53271D1FAC005F159B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
BD8AAC5D271D1FAC005F159B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
BD8AAC37271D1FA5005F159B = {
isa = PBXGroup;
children = (
BD8AAC42271D1FA5005F159B /* DevourAndDrought */,
BD8AAC59271D1FAC005F159B /* DevourAndDroughtTests */,
BD8AAC63271D1FAC005F159B /* DevourAndDroughtUITests */,
BD8AAC41271D1FA5005F159B /* Products */,
);
sourceTree = "<group>";
};
BD8AAC41271D1FA5005F159B /* Products */ = {
isa = PBXGroup;
children = (
BD8AAC40271D1FA5005F159B /* DevourAndDrought.app */,
BD8AAC56271D1FAC005F159B /* DevourAndDroughtTests.xctest */,
BD8AAC60271D1FAC005F159B /* DevourAndDroughtUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
BD8AAC42271D1FA5005F159B /* DevourAndDrought */ = {
isa = PBXGroup;
children = (
BD8AAC43271D1FA5005F159B /* AppDelegate.swift */,
BD8AAC45271D1FA5005F159B /* SceneDelegate.swift */,
BD8AAC47271D1FA5005F159B /* GameControllers.swift */,
BD805B862720AD2E0070B153 /* SetupControllers.swift */,
BDF824EB27206BBD0023067C /* SupportingClasses.swift */,
BD8AAC49271D1FA5005F159B /* Main.storyboard */,
BD8AAC4C271D1FAB005F159B /* Assets.xcassets */,
BD8AAC4E271D1FAB005F159B /* LaunchScreen.storyboard */,
BD8AAC51271D1FAB005F159B /* Info.plist */,
);
path = DevourAndDrought;
sourceTree = "<group>";
};
BD8AAC59271D1FAC005F159B /* DevourAndDroughtTests */ = {
isa = PBXGroup;
children = (
BD8AAC5A271D1FAC005F159B /* DevourAndDroughtTests.swift */,
);
path = DevourAndDroughtTests;
sourceTree = "<group>";
};
BD8AAC63271D1FAC005F159B /* DevourAndDroughtUITests */ = {
isa = PBXGroup;
children = (
BD8AAC64271D1FAC005F159B /* DevourAndDroughtUITests.swift */,
BD8AAC66271D1FAC005F159B /* DevourAndDroughtUITestsLaunchTests.swift */,
);
path = DevourAndDroughtUITests;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
BD8AAC3F271D1FA5005F159B /* DevourAndDrought */ = {
isa = PBXNativeTarget;
buildConfigurationList = BD8AAC6A271D1FAC005F159B /* Build configuration list for PBXNativeTarget "DevourAndDrought" */;
buildPhases = (
BD8AAC3C271D1FA5005F159B /* Sources */,
BD8AAC3D271D1FA5005F159B /* Frameworks */,
BD8AAC3E271D1FA5005F159B /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = DevourAndDrought;
productName = DevourAndDrought;
productReference = BD8AAC40271D1FA5005F159B /* DevourAndDrought.app */;
productType = "com.apple.product-type.application";
};
BD8AAC55271D1FAC005F159B /* DevourAndDroughtTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = BD8AAC6D271D1FAC005F159B /* Build configuration list for PBXNativeTarget "DevourAndDroughtTests" */;
buildPhases = (
BD8AAC52271D1FAC005F159B /* Sources */,
BD8AAC53271D1FAC005F159B /* Frameworks */,
BD8AAC54271D1FAC005F159B /* Resources */,
);
buildRules = (
);
dependencies = (
BD8AAC58271D1FAC005F159B /* PBXTargetDependency */,
);
name = DevourAndDroughtTests;
productName = DevourAndDroughtTests;
productReference = BD8AAC56271D1FAC005F159B /* DevourAndDroughtTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
BD8AAC5F271D1FAC005F159B /* DevourAndDroughtUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = BD8AAC70271D1FAC005F159B /* Build configuration list for PBXNativeTarget "DevourAndDroughtUITests" */;
buildPhases = (
BD8AAC5C271D1FAC005F159B /* Sources */,
BD8AAC5D271D1FAC005F159B /* Frameworks */,
BD8AAC5E271D1FAC005F159B /* Resources */,
);
buildRules = (
);
dependencies = (
BD8AAC62271D1FAC005F159B /* PBXTargetDependency */,
);
name = DevourAndDroughtUITests;
productName = DevourAndDroughtUITests;
productReference = BD8AAC60271D1FAC005F159B /* DevourAndDroughtUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
BD8AAC38271D1FA5005F159B /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1300;
LastUpgradeCheck = 1300;
TargetAttributes = {
BD8AAC3F271D1FA5005F159B = {
CreatedOnToolsVersion = 13.0;
};
BD8AAC55271D1FAC005F159B = {
CreatedOnToolsVersion = 13.0;
TestTargetID = BD8AAC3F271D1FA5005F159B;
};
BD8AAC5F271D1FAC005F159B = {
CreatedOnToolsVersion = 13.0;
TestTargetID = BD8AAC3F271D1FA5005F159B;
};
};
};
buildConfigurationList = BD8AAC3B271D1FA5005F159B /* Build configuration list for PBXProject "DevourAndDrought" */;
compatibilityVersion = "Xcode 13.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = BD8AAC37271D1FA5005F159B;
productRefGroup = BD8AAC41271D1FA5005F159B /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
BD8AAC3F271D1FA5005F159B /* DevourAndDrought */,
BD8AAC55271D1FAC005F159B /* DevourAndDroughtTests */,
BD8AAC5F271D1FAC005F159B /* DevourAndDroughtUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
BD8AAC3E271D1FA5005F159B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BD8AAC50271D1FAB005F159B /* LaunchScreen.storyboard in Resources */,
BD8AAC4D271D1FAB005F159B /* Assets.xcassets in Resources */,
BD8AAC4B271D1FA5005F159B /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BD8AAC54271D1FAC005F159B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
BD8AAC5E271D1FAC005F159B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
BD8AAC3C271D1FA5005F159B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BD805B872720AD2E0070B153 /* SetupControllers.swift in Sources */,
BD8AAC48271D1FA5005F159B /* GameControllers.swift in Sources */,
BD8AAC44271D1FA5005F159B /* AppDelegate.swift in Sources */,
BD8AAC46271D1FA5005F159B /* SceneDelegate.swift in Sources */,
BDF824EC27206BBD0023067C /* SupportingClasses.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BD8AAC52271D1FAC005F159B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BD8AAC5B271D1FAC005F159B /* DevourAndDroughtTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BD8AAC5C271D1FAC005F159B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BD8AAC65271D1FAC005F159B /* DevourAndDroughtUITests.swift in Sources */,
BD8AAC67271D1FAC005F159B /* DevourAndDroughtUITestsLaunchTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
BD8AAC58271D1FAC005F159B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BD8AAC3F271D1FA5005F159B /* DevourAndDrought */;
targetProxy = BD8AAC57271D1FAC005F159B /* PBXContainerItemProxy */;
};
BD8AAC62271D1FAC005F159B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BD8AAC3F271D1FA5005F159B /* DevourAndDrought */;
targetProxy = BD8AAC61271D1FAC005F159B /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
BD8AAC49271D1FA5005F159B /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
BD8AAC4A271D1FA5005F159B /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
BD8AAC4E271D1FAB005F159B /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
BD8AAC4F271D1FAB005F159B /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
BD8AAC68271D1FAC005F159B /* 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++17";
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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
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 = 15.0;
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;
};
BD8AAC69271D1FAC005F159B /* 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++17";
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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
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 = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
BD8AAC6B271D1FAC005F159B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = PRBH2T6668;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = DevourAndDrought/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Devour;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.faf;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
BD8AAC6C271D1FAC005F159B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = PRBH2T6668;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = DevourAndDrought/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Devour;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.faf;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
BD8AAC6E271D1FAC005F159B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = PRBH2T6668;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.DevourAndDroughtTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DevourAndDrought.app/DevourAndDrought";
};
name = Debug;
};
BD8AAC6F271D1FAC005F159B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = PRBH2T6668;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.DevourAndDroughtTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DevourAndDrought.app/DevourAndDrought";
};
name = Release;
};
BD8AAC71271D1FAC005F159B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = PRBH2T6668;
GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.DevourAndDroughtUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = DevourAndDrought;
};
name = Debug;
};
BD8AAC72271D1FAC005F159B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = PRBH2T6668;
GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.mpg13.DevourAndDroughtUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = DevourAndDrought;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
BD8AAC3B271D1FA5005F159B /* Build configuration list for PBXProject "DevourAndDrought" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BD8AAC68271D1FAC005F159B /* Debug */,
BD8AAC69271D1FAC005F159B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BD8AAC6A271D1FAC005F159B /* Build configuration list for PBXNativeTarget "DevourAndDrought" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BD8AAC6B271D1FAC005F159B /* Debug */,
BD8AAC6C271D1FAC005F159B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BD8AAC6D271D1FAC005F159B /* Build configuration list for PBXNativeTarget "DevourAndDroughtTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BD8AAC6E271D1FAC005F159B /* Debug */,
BD8AAC6F271D1FAC005F159B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BD8AAC70271D1FAC005F159B /* Build configuration list for PBXNativeTarget "DevourAndDroughtUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BD8AAC71271D1FAC005F159B /* Debug */,
BD8AAC72271D1FAC005F159B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = BD8AAC38271D1FA5005F159B /* Project object */;
}

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>DevourAndDrought.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>DevourAndDrought.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,36 @@
//
// AppDelegate.swift
// DevourAndDrought
//
// Created by Micah Gomez on 10/17/21.
//
import UIKit
@main
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<UISceneSession>) {
// 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.
}
}

View file

@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View file

@ -0,0 +1,116 @@
{
"images" : [
{
"filename" : "Icon-App-20x20@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "Icon-App-20x20@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"filename" : "Icon-App-29x29@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "Icon-App-29x29@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"filename" : "Icon-App-40x40@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "Icon-App-40x40@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"filename" : "Icon-App-60x60@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "Icon-App-60x60@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"filename" : "Icon-App-20x20@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"filename" : "Icon-App-20x20@2x-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "Icon-App-29x29@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "Icon-App-29x29@2x-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "Icon-App-40x40@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"filename" : "Icon-App-40x40@2x-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "Icon-App-76x76@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"filename" : "Icon-App-76x76@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"filename" : "Icon-App-83.5x83.5@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"filename" : "ItunesArtwork@2x.png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View file

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "coollogo_com-13092940.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "coollogo_com-13092941.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "coollogo_com-13092942.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

View file

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_1" orientation="landscape" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
<capability name="Image references" minToolsVersion="12.0"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="896" height="414"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="tzs-7w-lyi">
<rect key="frame" x="164" y="37.5" width="568" height="339"/>
<constraints>
<constraint firstAttribute="width" secondItem="tzs-7w-lyi" secondAttribute="height" multiplier="77:46" id="axO-24-MFU"/>
</constraints>
<imageReference key="image" image="Micah Gomez"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="From" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Zuj-Ek-bSV">
<rect key="frame" x="164" y="0.5" width="568" height="29"/>
<fontDescription key="fontDescription" type="system" weight="heavy" pointSize="24"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="tzs-7w-lyi" firstAttribute="leading" secondItem="Zuj-Ek-bSV" secondAttribute="leading" id="L95-JJ-ciP"/>
<constraint firstItem="tzs-7w-lyi" firstAttribute="top" secondItem="Zuj-Ek-bSV" secondAttribute="bottom" constant="8" symbolic="YES" id="Let-P6-Mj6"/>
<constraint firstItem="tzs-7w-lyi" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="Nd0-O8-MaK"/>
<constraint firstItem="tzs-7w-lyi" firstAttribute="trailing" secondItem="Zuj-Ek-bSV" secondAttribute="trailing" id="PnO-Jq-5bD"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="tzs-7w-lyi" secondAttribute="trailing" constant="120" id="T4A-hC-jCR"/>
<constraint firstItem="tzs-7w-lyi" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="mO4-py-5Sy"/>
<constraint firstItem="tzs-7w-lyi" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="120" id="sS2-OU-O7z"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="Micah Gomez" width="385.5" height="230.5"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View file

@ -0,0 +1,662 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="AEX-uU-vJw">
<device id="retina6_1" orientation="landscape" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Game Board-->
<scene sceneID="nuZ-Eq-iIv">
<objects>
<viewController modalPresentationStyle="fullScreen" id="lH6-xc-QZo" customClass="GameBoardController" customModule="DevourAndDrought" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="FHm-rp-Uvm">
<rect key="frame" x="0.0" y="0.0" width="896" height="414"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fVC-Au-OTH">
<rect key="frame" x="398.5" y="157.5" width="99" height="99"/>
<color key="backgroundColor" red="0.86274509799999999" green="0.69411764710000001" blue="0.24313725489999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="fVC-Au-OTH" secondAttribute="height" multiplier="1:1" id="KaI-nS-nbh"/>
</constraints>
<color key="tintColor" systemColor="labelColor"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="13"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="boxTouched:" destination="lH6-xc-QZo" eventType="touchUpInside" id="lif-2y-nk5"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yCi-WS-j56">
<rect key="frame" x="291.5" y="157.5" width="98.5" height="99"/>
<color key="backgroundColor" red="0.86274509799999999" green="0.69411764710000001" blue="0.24313725489999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="yCi-WS-j56" secondAttribute="height" multiplier="1:1" id="qSS-Iz-Fpf"/>
</constraints>
<color key="tintColor" systemColor="labelColor"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="13"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="boxTouched:" destination="lH6-xc-QZo" eventType="touchUpInside" id="naK-td-anv"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EVH-3a-OD7">
<rect key="frame" x="185" y="157.5" width="98.5" height="99"/>
<color key="backgroundColor" red="0.86274509799999999" green="0.69411764710000001" blue="0.24313725489999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="EVH-3a-OD7" secondAttribute="height" multiplier="1:1" id="ykN-os-vhK"/>
</constraints>
<color key="tintColor" systemColor="labelColor"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="13"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="boxTouched:" destination="lH6-xc-QZo" eventType="touchUpInside" id="VK6-7a-a5y"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Mvd-CL-a0K">
<rect key="frame" x="78.5" y="157.5" width="98.5" height="99"/>
<color key="backgroundColor" red="0.86274509799999999" green="0.69411764710000001" blue="0.24313725489999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="Mvd-CL-a0K" secondAttribute="height" multiplier="1:1" id="NE1-vX-r1i"/>
</constraints>
<color key="tintColor" systemColor="labelColor"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="13"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="boxTouched:" destination="lH6-xc-QZo" eventType="touchUpInside" id="d8P-Mb-mh4"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uAg-6d-1Yt">
<rect key="frame" x="505" y="157.5" width="98.5" height="99"/>
<color key="backgroundColor" red="0.86274509799999999" green="0.69411764710000001" blue="0.24313725489999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="uAg-6d-1Yt" secondAttribute="height" multiplier="1:1" id="efq-Bs-64b"/>
</constraints>
<color key="tintColor" systemColor="labelColor"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="13"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="boxTouched:" destination="lH6-xc-QZo" eventType="touchUpInside" id="DH1-gT-dwc"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ccz-Sm-d3u">
<rect key="frame" x="611.5" y="157.5" width="98.5" height="99"/>
<color key="backgroundColor" red="0.86274509799999999" green="0.69411764710000001" blue="0.24313725489999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="ccz-Sm-d3u" secondAttribute="height" multiplier="1:1" id="Yf4-Ji-cxU"/>
</constraints>
<color key="tintColor" systemColor="labelColor"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="13"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="boxTouched:" destination="lH6-xc-QZo" eventType="touchUpInside" id="KGB-tw-Bn9"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="r0U-oa-ZK2">
<rect key="frame" x="718" y="157.5" width="98.5" height="99"/>
<color key="backgroundColor" red="0.86274509799999999" green="0.69411764710000001" blue="0.24313725489999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="r0U-oa-ZK2" secondAttribute="height" multiplier="1:1" id="V7c-zf-CL4"/>
</constraints>
<color key="tintColor" systemColor="labelColor"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="13"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="boxTouched:" destination="lH6-xc-QZo" eventType="touchUpInside" id="3dv-g5-RX4"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Player Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bvt-ul-0js">
<rect key="frame" x="78.5" y="20" width="738" height="39"/>
<fontDescription key="fontDescription" type="system" pointSize="32"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Labor Points: " textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3fl-FP-psQ">
<rect key="frame" x="78.5" y="67" width="738" height="29"/>
<fontDescription key="fontDescription" type="system" pointSize="24"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="7Q0-4q-nkf"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="ccz-Sm-d3u" firstAttribute="top" secondItem="Mvd-CL-a0K" secondAttribute="top" id="3m5-6R-EeN"/>
<constraint firstItem="3fl-FP-psQ" firstAttribute="trailing" secondItem="bvt-ul-0js" secondAttribute="trailing" id="4jD-fJ-Tl6"/>
<constraint firstItem="fVC-Au-OTH" firstAttribute="centerX" secondItem="FHm-rp-Uvm" secondAttribute="centerX" id="9hK-nO-bS3"/>
<constraint firstItem="yCi-WS-j56" firstAttribute="leading" secondItem="EVH-3a-OD7" secondAttribute="trailing" constant="8" symbolic="YES" id="BQM-U7-vE7"/>
<constraint firstItem="fVC-Au-OTH" firstAttribute="top" secondItem="Mvd-CL-a0K" secondAttribute="top" id="CtQ-VM-xlk"/>
<constraint firstItem="r0U-oa-ZK2" firstAttribute="bottom" secondItem="Mvd-CL-a0K" secondAttribute="bottom" id="HnK-Ho-e3I"/>
<constraint firstItem="fVC-Au-OTH" firstAttribute="bottom" secondItem="Mvd-CL-a0K" secondAttribute="bottom" id="JqK-vA-qAi"/>
<constraint firstItem="uAg-6d-1Yt" firstAttribute="top" secondItem="Mvd-CL-a0K" secondAttribute="top" id="L1v-zT-P8n"/>
<constraint firstItem="3fl-FP-psQ" firstAttribute="leading" secondItem="bvt-ul-0js" secondAttribute="leading" id="LNY-hr-58L"/>
<constraint firstItem="fVC-Au-OTH" firstAttribute="centerY" secondItem="FHm-rp-Uvm" secondAttribute="centerY" id="Nex-g0-cbC"/>
<constraint firstItem="fVC-Au-OTH" firstAttribute="width" secondItem="FHm-rp-Uvm" secondAttribute="width" multiplier="0.11" id="QX6-Hb-COh"/>
<constraint firstItem="r0U-oa-ZK2" firstAttribute="leading" secondItem="ccz-Sm-d3u" secondAttribute="trailing" constant="8" symbolic="YES" id="R8a-th-y76"/>
<constraint firstItem="ccz-Sm-d3u" firstAttribute="bottom" secondItem="Mvd-CL-a0K" secondAttribute="bottom" id="Roh-0U-zKv"/>
<constraint firstItem="EVH-3a-OD7" firstAttribute="bottom" secondItem="Mvd-CL-a0K" secondAttribute="bottom" id="TrL-6I-7ds"/>
<constraint firstItem="yCi-WS-j56" firstAttribute="bottom" secondItem="Mvd-CL-a0K" secondAttribute="bottom" id="U1i-Bv-N5b"/>
<constraint firstItem="r0U-oa-ZK2" firstAttribute="trailing" secondItem="bvt-ul-0js" secondAttribute="trailing" id="YOa-r3-dtK"/>
<constraint firstItem="yCi-WS-j56" firstAttribute="top" secondItem="Mvd-CL-a0K" secondAttribute="top" id="agv-zT-jdw"/>
<constraint firstItem="EVH-3a-OD7" firstAttribute="leading" secondItem="Mvd-CL-a0K" secondAttribute="trailing" constant="8" symbolic="YES" id="cLV-3c-CDQ"/>
<constraint firstItem="bvt-ul-0js" firstAttribute="top" secondItem="7Q0-4q-nkf" secondAttribute="top" constant="20" id="cOa-6A-21D"/>
<constraint firstItem="uAg-6d-1Yt" firstAttribute="leading" secondItem="fVC-Au-OTH" secondAttribute="trailing" constant="7.5" id="goM-2Y-Qkc"/>
<constraint firstItem="fVC-Au-OTH" firstAttribute="leading" secondItem="yCi-WS-j56" secondAttribute="trailing" constant="8.5" id="jxb-4K-7cu"/>
<constraint firstItem="EVH-3a-OD7" firstAttribute="top" secondItem="Mvd-CL-a0K" secondAttribute="top" id="kMl-fR-HoA"/>
<constraint firstItem="ccz-Sm-d3u" firstAttribute="leading" secondItem="uAg-6d-1Yt" secondAttribute="trailing" constant="8" symbolic="YES" id="qkA-r1-1Rh"/>
<constraint firstItem="Mvd-CL-a0K" firstAttribute="leading" secondItem="bvt-ul-0js" secondAttribute="leading" id="r0H-f6-qrO"/>
<constraint firstItem="3fl-FP-psQ" firstAttribute="top" secondItem="bvt-ul-0js" secondAttribute="bottom" constant="8" symbolic="YES" id="tnq-vN-4yf"/>
<constraint firstItem="uAg-6d-1Yt" firstAttribute="bottom" secondItem="Mvd-CL-a0K" secondAttribute="bottom" id="yWr-eR-HfA"/>
<constraint firstItem="r0U-oa-ZK2" firstAttribute="top" secondItem="Mvd-CL-a0K" secondAttribute="top" id="zOd-kz-Vbm"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Game Board" image="checkerboard.rectangle" catalog="system" id="np1-Aa-oJR"/>
<connections>
<outlet property="LbrPointsLbl" destination="3fl-FP-psQ" id="klD-Hc-Sm0"/>
<outlet property="PlayerNameLabel" destination="bvt-ul-0js" id="icq-bF-5wc"/>
<outletCollection property="AllResourceSlots" destination="Mvd-CL-a0K" collectionClass="NSMutableArray" id="KmD-tR-lW0"/>
<outletCollection property="AllResourceSlots" destination="EVH-3a-OD7" collectionClass="NSMutableArray" id="wFv-6s-dfz"/>
<outletCollection property="AllResourceSlots" destination="yCi-WS-j56" collectionClass="NSMutableArray" id="xej-HY-42n"/>
<outletCollection property="AllResourceSlots" destination="fVC-Au-OTH" collectionClass="NSMutableArray" id="CkK-hy-cGF"/>
<outletCollection property="AllResourceSlots" destination="uAg-6d-1Yt" collectionClass="NSMutableArray" id="VYk-Iy-PT3"/>
<outletCollection property="AllResourceSlots" destination="ccz-Sm-d3u" collectionClass="NSMutableArray" id="oby-Wp-MCg"/>
<outletCollection property="AllResourceSlots" destination="r0U-oa-ZK2" collectionClass="NSMutableArray" id="iBZ-WB-aQT"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="VJA-eT-3Yw" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-713.16964285714278" y="837.68115942028987"/>
</scene>
<!--Player Start Controller-->
<scene sceneID="Y6G-br-6aV">
<objects>
<viewController storyboardIdentifier="PlayerStart" modalPresentationStyle="fullScreen" id="Wsp-yj-oey" customClass="PlayerStartController" customModule="DevourAndDrought" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="rIc-4v-wBd">
<rect key="frame" x="0.0" y="0.0" width="896" height="414"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Player Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="U8j-tB-NkG">
<rect key="frame" x="60" y="20" width="776" height="57.5"/>
<fontDescription key="fontDescription" type="system" pointSize="48"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0DZ-7G-LiN">
<rect key="frame" x="60" y="181" width="776" height="52.5"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Begin Turn">
<fontDescription key="titleFontDescription" type="system" pointSize="32"/>
</buttonConfiguration>
<connections>
<action selector="BeginTurnButton:" destination="Wsp-yj-oey" eventType="touchUpInside" id="fHE-ig-2Mv"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="8oX-yO-iP4"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="0DZ-7G-LiN" firstAttribute="leading" secondItem="U8j-tB-NkG" secondAttribute="leading" id="B9G-KJ-6h4"/>
<constraint firstItem="0DZ-7G-LiN" firstAttribute="centerY" secondItem="rIc-4v-wBd" secondAttribute="centerY" id="PUV-fC-smP"/>
<constraint firstItem="0DZ-7G-LiN" firstAttribute="leading" secondItem="8oX-yO-iP4" secondAttribute="leading" constant="16" id="SBN-Qs-zb5"/>
<constraint firstItem="8oX-yO-iP4" firstAttribute="trailing" secondItem="0DZ-7G-LiN" secondAttribute="trailing" constant="16" id="YG7-NS-5KX"/>
<constraint firstItem="0DZ-7G-LiN" firstAttribute="trailing" secondItem="U8j-tB-NkG" secondAttribute="trailing" id="b6c-wW-ple"/>
<constraint firstItem="U8j-tB-NkG" firstAttribute="top" secondItem="8oX-yO-iP4" secondAttribute="top" constant="20" id="r8w-Sb-ebK"/>
</constraints>
</view>
<connections>
<outlet property="playerNameLabel" destination="U8j-tB-NkG" id="PJh-uu-M3G"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Kqm-rv-PQS" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-1465.1785714285713" y="1524.6376811594205"/>
</scene>
<!--Start Controller-->
<scene sceneID="trU-kP-iEa">
<objects>
<viewController modalPresentationStyle="fullScreen" id="AEX-uU-vJw" customClass="StartController" customModule="DevourAndDrought" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8EJ-sl-H0f">
<rect key="frame" x="0.0" y="0.0" width="896" height="414"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Game Title Pending" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lpp-L0-Xue">
<rect key="frame" x="224" y="20" width="448" height="39"/>
<fontDescription key="fontDescription" type="system" pointSize="32"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kWw-vs-xeH">
<rect key="frame" x="224" y="350" width="448" height="43"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Start Game">
<fontDescription key="titleFontDescription" type="system" pointSize="24"/>
</buttonConfiguration>
<connections>
<action selector="StartGame:" destination="AEX-uU-vJw" eventType="touchUpInside" id="Q54-L1-3du"/>
<segue destination="rYK-0k-2EP" kind="show" id="uQq-ZW-6VM"/>
</connections>
</button>
<pickerView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Gmu-Lf-iBW">
<rect key="frame" x="224" y="126" width="448" height="162"/>
</pickerView>
</subviews>
<viewLayoutGuide key="safeArea" id="dFz-As-aVm"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="kWw-vs-xeH" firstAttribute="top" secondItem="Gmu-Lf-iBW" secondAttribute="bottom" constant="62" id="1ih-D4-nFv"/>
<constraint firstItem="Gmu-Lf-iBW" firstAttribute="width" secondItem="8EJ-sl-H0f" secondAttribute="width" multiplier="0.5" id="AiL-KS-cKb"/>
<constraint firstItem="Gmu-Lf-iBW" firstAttribute="centerX" secondItem="8EJ-sl-H0f" secondAttribute="centerX" id="Ghs-tt-90N"/>
<constraint firstItem="kWw-vs-xeH" firstAttribute="trailing" secondItem="lpp-L0-Xue" secondAttribute="trailing" id="I9f-V1-AoU"/>
<constraint firstItem="lpp-L0-Xue" firstAttribute="top" secondItem="dFz-As-aVm" secondAttribute="top" constant="20" id="Tiy-wZ-ClM"/>
<constraint firstItem="kWw-vs-xeH" firstAttribute="bottom" secondItem="dFz-As-aVm" secondAttribute="bottom" id="a9O-s5-L9R"/>
<constraint firstItem="kWw-vs-xeH" firstAttribute="leading" secondItem="lpp-L0-Xue" secondAttribute="leading" id="fA2-xi-LhG"/>
<constraint firstItem="lpp-L0-Xue" firstAttribute="top" secondItem="dFz-As-aVm" secondAttribute="top" constant="20" id="fPZ-dG-ivf"/>
<constraint firstItem="Gmu-Lf-iBW" firstAttribute="leading" secondItem="lpp-L0-Xue" secondAttribute="leading" id="iin-0Z-9hZ"/>
<constraint firstItem="Gmu-Lf-iBW" firstAttribute="top" secondItem="lpp-L0-Xue" secondAttribute="bottom" constant="67" id="joS-ta-w5D"/>
<constraint firstItem="Gmu-Lf-iBW" firstAttribute="centerY" secondItem="8EJ-sl-H0f" secondAttribute="centerY" id="n8o-81-nmG"/>
<constraint firstItem="Gmu-Lf-iBW" firstAttribute="trailing" secondItem="lpp-L0-Xue" secondAttribute="trailing" id="sjG-ql-vGr"/>
<constraint firstItem="lpp-L0-Xue" firstAttribute="top" secondItem="dFz-As-aVm" secondAttribute="top" constant="20" id="tU0-MM-tk9"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="jDd-pz-yuT"/>
<connections>
<outlet property="playerCountPicker" destination="Gmu-Lf-iBW" id="Sfs-tk-V2n"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="en9-5n-wVX" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-2551" y="-522"/>
</scene>
<!--Names Controller-->
<scene sceneID="utu-Id-eua">
<objects>
<viewController modalPresentationStyle="fullScreen" id="rYK-0k-2EP" customClass="NamesController" customModule="DevourAndDrought" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="skH-7l-hCk">
<rect key="frame" x="0.0" y="0.0" width="896" height="414"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Player 1 Name:" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jzr-69-Csw">
<rect key="frame" x="64" y="20" width="768" height="39"/>
<fontDescription key="fontDescription" type="system" pointSize="32"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Player Name" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="gbe-AO-z28">
<rect key="frame" x="224" y="67" width="448" height="38.5"/>
<fontDescription key="fontDescription" type="system" pointSize="24"/>
<textInputTraits key="textInputTraits" autocapitalizationType="words" returnKeyType="next"/>
<connections>
<action selector="PlayerNextBtn:" destination="rYK-0k-2EP" eventType="primaryActionTriggered" id="qB6-AJ-qjV"/>
</connections>
</textField>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0fD-M8-Yvx">
<rect key="frame" x="224" y="113.5" width="448" height="43"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Next">
<fontDescription key="titleFontDescription" type="system" pointSize="24"/>
</buttonConfiguration>
<connections>
<action selector="PlayerNextBtn:" destination="rYK-0k-2EP" eventType="touchUpInside" id="P49-Ff-QC1"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="eWX-kt-cS0"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="Jzr-69-Csw" firstAttribute="top" secondItem="eWX-kt-cS0" secondAttribute="top" constant="20" id="6ig-Xt-cF3"/>
<constraint firstItem="eWX-kt-cS0" firstAttribute="trailing" secondItem="Jzr-69-Csw" secondAttribute="trailing" constant="20" id="Jrj-4E-03o"/>
<constraint firstItem="gbe-AO-z28" firstAttribute="centerX" secondItem="skH-7l-hCk" secondAttribute="centerX" id="MLb-SE-pMa"/>
<constraint firstItem="gbe-AO-z28" firstAttribute="top" secondItem="Jzr-69-Csw" secondAttribute="bottom" constant="8" symbolic="YES" id="NFJ-8u-8Bz"/>
<constraint firstItem="0fD-M8-Yvx" firstAttribute="leading" secondItem="gbe-AO-z28" secondAttribute="leading" id="Pwe-Aq-9XD"/>
<constraint firstItem="0fD-M8-Yvx" firstAttribute="top" secondItem="gbe-AO-z28" secondAttribute="bottom" constant="8" id="WEh-Ob-JHZ"/>
<constraint firstItem="gbe-AO-z28" firstAttribute="width" secondItem="skH-7l-hCk" secondAttribute="width" multiplier="0.5" id="aXt-eK-BSu"/>
<constraint firstItem="0fD-M8-Yvx" firstAttribute="trailing" secondItem="gbe-AO-z28" secondAttribute="trailing" id="m0F-Un-xzt"/>
<constraint firstItem="Jzr-69-Csw" firstAttribute="leading" secondItem="eWX-kt-cS0" secondAttribute="leading" constant="20" id="xZm-uA-PTg"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="BkW-np-Q19"/>
<connections>
<outlet property="PlayerName" destination="Jzr-69-Csw" id="9nt-7R-L57"/>
<outlet property="PlayerNameField" destination="gbe-AO-z28" id="sFR-Tg-4KI"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="bcm-pA-gY3" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-2188.3928571428569" y="515.94202898550725"/>
</scene>
<!--Tab Bar Controller-->
<scene sceneID="cqR-zv-h4f">
<objects>
<tabBarController storyboardIdentifier="GameView" modalPresentationStyle="fullScreen" id="g7V-3y-mc7" sceneMemberID="viewController">
<navigationItem key="navigationItem" id="jJA-Uy-kyC"/>
<tabBar key="tabBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="ZM1-xw-MFr">
<rect key="frame" x="0.0" y="0.0" width="414" height="49"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</tabBar>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="viewControllers" id="isI-po-gfN"/>
<segue destination="lH6-xc-QZo" kind="relationship" relationship="viewControllers" id="eD5-vp-8ES"/>
</connections>
</tabBarController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Wiz-nw-Agd" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-1465" y="516"/>
</scene>
<!--Player Board-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController modalPresentationStyle="fullScreen" id="BYZ-38-t0r" customClass="PlayerBoardController" customModule="DevourAndDrought" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="896" height="414"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Oil" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jc1-hh-J2g">
<rect key="frame" x="213.5" y="80.5" width="100" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="pPj-dJ-uLh"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Water" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QpL-0D-xz4">
<rect key="frame" x="213.5" y="109.5" width="100" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="uQN-V1-UyI"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Wheat" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jQV-KZ-vDo">
<rect key="frame" x="213.5" y="138.5" width="100" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="Ern-rx-gQk"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Corn" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x7O-gB-efD">
<rect key="frame" x="213.5" y="167.5" width="100" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="BMi-Ig-XfB"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Fish" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ibS-2f-qzP">
<rect key="frame" x="213.5" y="196.5" width="100" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="Hvq-iC-1zH"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Cattle" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zHI-a1-QLR">
<rect key="frame" x="213.5" y="225.5" width="100" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="Eyq-RW-LrO"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Medallions" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GTa-J4-o2r">
<rect key="frame" x="213.5" y="254.5" width="100" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="FBW-a0-FRP"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="🪔🪔🪔🪔🪔🪔🪔🪔🪔🪔☀️" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hxf-cQ-vPf">
<rect key="frame" x="321.5" y="80.5" width="253" height="21"/>
<constraints>
<constraint firstAttribute="width" secondItem="hxf-cQ-vPf" secondAttribute="height" multiplier="253:21" id="1nl-qc-X8d"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="💧💧💧💧💧💧💧💧💧💧☀️" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sOg-y9-tjU">
<rect key="frame" x="321.5" y="109.5" width="253" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="🌾🌾🌾🌾🌾🌾🌾🌾🌾🌾☀️" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PJO-Z2-s09">
<rect key="frame" x="321.5" y="138.5" width="253" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="🌽🌽🌽🌽🌽🌽🌽🌽🌽🌽☀️" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z71-zT-Rbc">
<rect key="frame" x="321.5" y="167.5" width="253" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟☀️" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z4M-gg-ETy">
<rect key="frame" x="321.5" y="196.5" width="253" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="🐂🐂🐂🐂🐂🐂🐂🐂🐂🐂☀️" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6z8-Zk-lAe">
<rect key="frame" x="321.5" y="225.5" width="253" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cu5-bm-nOx">
<rect key="frame" x="321.5" y="254.5" width="253" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2fg-V2-IcO">
<rect key="frame" x="60" y="308.5" width="776" height="35.5"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="End Turn">
<fontDescription key="titleFontDescription" type="system" pointSize="18"/>
</buttonConfiguration>
<connections>
<action selector="EndTurn:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Utb-Hp-zFk"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Player Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="igF-vj-z2T">
<rect key="frame" x="60" y="20" width="776" height="31.5"/>
<fontDescription key="fontDescription" type="system" pointSize="26"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="PJO-Z2-s09" firstAttribute="top" secondItem="sOg-y9-tjU" secondAttribute="bottom" constant="8" symbolic="YES" id="03x-Fb-UaZ"/>
<constraint firstItem="Z4M-gg-ETy" firstAttribute="leading" secondItem="ibS-2f-qzP" secondAttribute="trailing" constant="8" symbolic="YES" id="0ZO-Ql-WQL"/>
<constraint firstItem="6z8-Zk-lAe" firstAttribute="top" secondItem="zHI-a1-QLR" secondAttribute="top" id="1gr-Yy-F5d"/>
<constraint firstItem="igF-vj-z2T" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="20" id="2NK-Kg-DZc"/>
<constraint firstItem="hxf-cQ-vPf" firstAttribute="top" secondItem="Jc1-hh-J2g" secondAttribute="top" id="2dm-DN-Tmc"/>
<constraint firstItem="GTa-J4-o2r" firstAttribute="top" secondItem="zHI-a1-QLR" secondAttribute="bottom" constant="8" symbolic="YES" id="46Z-po-Ijd"/>
<constraint firstItem="6z8-Zk-lAe" firstAttribute="bottom" secondItem="zHI-a1-QLR" secondAttribute="bottom" id="4Zc-Xb-ZUi"/>
<constraint firstItem="GTa-J4-o2r" firstAttribute="trailing" secondItem="Jc1-hh-J2g" secondAttribute="trailing" id="4jv-oj-ETw"/>
<constraint firstItem="Z4M-gg-ETy" firstAttribute="top" secondItem="ibS-2f-qzP" secondAttribute="top" id="5Aq-xe-DZa"/>
<constraint firstItem="x7O-gB-efD" firstAttribute="trailing" secondItem="Jc1-hh-J2g" secondAttribute="trailing" id="6PE-gC-ezo"/>
<constraint firstItem="ibS-2f-qzP" firstAttribute="trailing" secondItem="Jc1-hh-J2g" secondAttribute="trailing" id="7MS-Jw-t95"/>
<constraint firstItem="PJO-Z2-s09" firstAttribute="leading" secondItem="jQV-KZ-vDo" secondAttribute="trailing" constant="8" symbolic="YES" id="7Zl-Wg-OYk"/>
<constraint firstItem="hxf-cQ-vPf" firstAttribute="leading" secondItem="Jc1-hh-J2g" secondAttribute="trailing" constant="8" symbolic="YES" id="8Iz-Q6-ZZO"/>
<constraint firstItem="sOg-y9-tjU" firstAttribute="trailing" secondItem="hxf-cQ-vPf" secondAttribute="trailing" id="8mA-dZ-uea"/>
<constraint firstItem="jQV-KZ-vDo" firstAttribute="trailing" secondItem="Jc1-hh-J2g" secondAttribute="trailing" id="B1x-uP-5A4"/>
<constraint firstItem="2fg-V2-IcO" firstAttribute="leading" secondItem="igF-vj-z2T" secondAttribute="leading" id="BmS-xS-mrB"/>
<constraint firstItem="2fg-V2-IcO" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="16" id="DHc-c6-Yn2"/>
<constraint firstItem="PJO-Z2-s09" firstAttribute="top" secondItem="jQV-KZ-vDo" secondAttribute="top" id="Dxz-eE-gLC"/>
<constraint firstItem="z71-zT-Rbc" firstAttribute="top" secondItem="x7O-gB-efD" secondAttribute="top" id="EXC-BR-nQy"/>
<constraint firstItem="Z4M-gg-ETy" firstAttribute="top" secondItem="z71-zT-Rbc" secondAttribute="bottom" constant="8" symbolic="YES" id="G5G-dk-keh"/>
<constraint firstItem="sOg-y9-tjU" firstAttribute="leading" secondItem="QpL-0D-xz4" secondAttribute="trailing" constant="8" symbolic="YES" id="GXZ-gh-jHz"/>
<constraint firstItem="hxf-cQ-vPf" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="IU0-dr-UzL"/>
<constraint firstItem="z71-zT-Rbc" firstAttribute="trailing" secondItem="hxf-cQ-vPf" secondAttribute="trailing" id="J7H-lD-26D"/>
<constraint firstItem="z71-zT-Rbc" firstAttribute="bottom" secondItem="x7O-gB-efD" secondAttribute="bottom" id="JBC-2e-JIA"/>
<constraint firstItem="jQV-KZ-vDo" firstAttribute="top" secondItem="QpL-0D-xz4" secondAttribute="bottom" constant="8" symbolic="YES" id="ME9-9C-r02"/>
<constraint firstItem="ibS-2f-qzP" firstAttribute="top" secondItem="x7O-gB-efD" secondAttribute="bottom" constant="8" symbolic="YES" id="MPm-m5-gr4"/>
<constraint firstItem="PJO-Z2-s09" firstAttribute="leading" secondItem="hxf-cQ-vPf" secondAttribute="leading" id="NAy-K6-i4s"/>
<constraint firstItem="sOg-y9-tjU" firstAttribute="leading" secondItem="hxf-cQ-vPf" secondAttribute="leading" id="NKW-ha-WPl"/>
<constraint firstItem="sOg-y9-tjU" firstAttribute="bottom" secondItem="QpL-0D-xz4" secondAttribute="bottom" id="NN6-Mb-ALl"/>
<constraint firstItem="6z8-Zk-lAe" firstAttribute="leading" secondItem="zHI-a1-QLR" secondAttribute="trailing" constant="8" symbolic="YES" id="PId-Go-fbY"/>
<constraint firstItem="6z8-Zk-lAe" firstAttribute="trailing" secondItem="hxf-cQ-vPf" secondAttribute="trailing" id="QG0-nR-Vkq"/>
<constraint firstItem="Cu5-bm-nOx" firstAttribute="bottom" secondItem="GTa-J4-o2r" secondAttribute="bottom" id="RVy-Ui-gqf"/>
<constraint firstItem="2fg-V2-IcO" firstAttribute="bottom" secondItem="6Tk-OE-BBY" secondAttribute="bottom" id="RoU-g9-J4H"/>
<constraint firstItem="PJO-Z2-s09" firstAttribute="bottom" secondItem="jQV-KZ-vDo" secondAttribute="bottom" id="SeF-j6-Ok8"/>
<constraint firstItem="6z8-Zk-lAe" firstAttribute="top" secondItem="Z4M-gg-ETy" secondAttribute="bottom" constant="8" symbolic="YES" id="Smq-nA-Ds9"/>
<constraint firstItem="QpL-0D-xz4" firstAttribute="top" secondItem="Jc1-hh-J2g" secondAttribute="bottom" constant="8" symbolic="YES" id="StZ-Wq-FmG"/>
<constraint firstItem="z71-zT-Rbc" firstAttribute="leading" secondItem="x7O-gB-efD" secondAttribute="trailing" constant="8" symbolic="YES" id="TOx-dC-ZFw"/>
<constraint firstItem="sOg-y9-tjU" firstAttribute="top" secondItem="hxf-cQ-vPf" secondAttribute="bottom" constant="8" symbolic="YES" id="UQu-0y-IfA"/>
<constraint firstItem="6z8-Zk-lAe" firstAttribute="leading" secondItem="hxf-cQ-vPf" secondAttribute="leading" id="UqN-km-o4H"/>
<constraint firstItem="QpL-0D-xz4" firstAttribute="trailing" secondItem="Jc1-hh-J2g" secondAttribute="trailing" id="XRY-Tt-3de"/>
<constraint firstItem="zHI-a1-QLR" firstAttribute="top" secondItem="ibS-2f-qzP" secondAttribute="bottom" constant="8" symbolic="YES" id="XRw-OM-4RS"/>
<constraint firstItem="hxf-cQ-vPf" firstAttribute="bottom" secondItem="Jc1-hh-J2g" secondAttribute="bottom" id="Zk3-qL-1nC"/>
<constraint firstItem="Z4M-gg-ETy" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="a9j-3q-xcS"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="2fg-V2-IcO" secondAttribute="trailing" constant="16" id="bdS-GL-cDm"/>
<constraint firstItem="x7O-gB-efD" firstAttribute="top" secondItem="jQV-KZ-vDo" secondAttribute="bottom" constant="8" symbolic="YES" id="dqA-8F-tJR"/>
<constraint firstItem="sOg-y9-tjU" firstAttribute="top" secondItem="QpL-0D-xz4" secondAttribute="top" id="fPe-8Z-XQ0"/>
<constraint firstItem="Cu5-bm-nOx" firstAttribute="trailing" secondItem="hxf-cQ-vPf" secondAttribute="trailing" id="iuG-lK-Fmf"/>
<constraint firstItem="Z4M-gg-ETy" firstAttribute="leading" secondItem="hxf-cQ-vPf" secondAttribute="leading" id="kEU-BM-WPJ"/>
<constraint firstItem="2fg-V2-IcO" firstAttribute="trailing" secondItem="igF-vj-z2T" secondAttribute="trailing" id="nqR-rr-fQC"/>
<constraint firstItem="Z4M-gg-ETy" firstAttribute="trailing" secondItem="hxf-cQ-vPf" secondAttribute="trailing" id="oCA-A3-scu"/>
<constraint firstItem="Cu5-bm-nOx" firstAttribute="leading" secondItem="hxf-cQ-vPf" secondAttribute="leading" id="pkN-8d-zKy"/>
<constraint firstItem="Cu5-bm-nOx" firstAttribute="top" secondItem="GTa-J4-o2r" secondAttribute="top" id="rfb-J7-yhe"/>
<constraint firstItem="zHI-a1-QLR" firstAttribute="trailing" secondItem="Jc1-hh-J2g" secondAttribute="trailing" id="sVG-nY-0YZ"/>
<constraint firstItem="z71-zT-Rbc" firstAttribute="top" secondItem="PJO-Z2-s09" secondAttribute="bottom" constant="8" symbolic="YES" id="tdU-FG-MeY"/>
<constraint firstItem="Cu5-bm-nOx" firstAttribute="top" secondItem="6z8-Zk-lAe" secondAttribute="bottom" constant="8" symbolic="YES" id="u8v-YG-18b"/>
<constraint firstItem="PJO-Z2-s09" firstAttribute="trailing" secondItem="hxf-cQ-vPf" secondAttribute="trailing" id="uWu-mQ-gpL"/>
<constraint firstItem="Cu5-bm-nOx" firstAttribute="leading" secondItem="GTa-J4-o2r" secondAttribute="trailing" constant="8" symbolic="YES" id="vEE-A7-qkg"/>
<constraint firstItem="Z4M-gg-ETy" firstAttribute="bottom" secondItem="ibS-2f-qzP" secondAttribute="bottom" id="xoH-Od-eAM"/>
<constraint firstItem="z71-zT-Rbc" firstAttribute="leading" secondItem="hxf-cQ-vPf" secondAttribute="leading" id="zzt-7i-kbY"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Player Board" image="person" catalog="system" id="EZU-v6-2Nk"/>
<simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
<connections>
<outlet property="medallionCount" destination="Cu5-bm-nOx" id="21C-CS-ZpS"/>
<outlet property="playerCattleCount" destination="6z8-Zk-lAe" id="LfO-I3-Pl0"/>
<outlet property="playerCornCount" destination="z71-zT-Rbc" id="PW7-9I-8GY"/>
<outlet property="playerFishCount" destination="Z4M-gg-ETy" id="G1k-2c-SOr"/>
<outlet property="playerNameLabel" destination="igF-vj-z2T" id="8Rp-vp-S68"/>
<outlet property="playerOilCount" destination="hxf-cQ-vPf" id="Pxk-ci-BYw"/>
<outlet property="playerWaterCount" destination="sOg-y9-tjU" id="LHR-9S-8ME"/>
<outlet property="playerWheatCount" destination="PJO-Z2-s09" id="4By-of-TYg"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-713.16964285714278" y="108.69565217391305"/>
</scene>
<!--Game End Controller-->
<scene sceneID="l1i-ZT-tcC">
<objects>
<viewController storyboardIdentifier="GameEndScreen" modalPresentationStyle="fullScreen" id="voc-o0-2VN" customClass="GameEndController" customModule="DevourAndDrought" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="4vM-gu-CXZ">
<rect key="frame" x="0.0" y="0.0" width="896" height="414"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="(Player) Wins!" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="izI-81-ppP">
<rect key="frame" x="60" y="20" width="776" height="39"/>
<fontDescription key="fontDescription" type="system" pointSize="32"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<pickerView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="P8b-JI-eVC">
<rect key="frame" x="60" y="126" width="776" height="162"/>
</pickerView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kMn-7n-C5k">
<rect key="frame" x="60" y="350" width="776" height="43"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Start Game">
<fontDescription key="titleFontDescription" type="system" pointSize="24"/>
</buttonConfiguration>
<connections>
<action selector="StartGame:" destination="voc-o0-2VN" eventType="touchUpInside" id="3d9-ob-vYT"/>
<segue destination="AEX-uU-vJw" kind="show" id="TZO-zI-xUS"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="xKj-N8-7Gs"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="izI-81-ppP" firstAttribute="top" secondItem="xKj-N8-7Gs" secondAttribute="top" constant="20" id="2f4-Xg-Rmn"/>
<constraint firstItem="P8b-JI-eVC" firstAttribute="leading" secondItem="izI-81-ppP" secondAttribute="leading" id="HT9-q9-uJV"/>
<constraint firstItem="P8b-JI-eVC" firstAttribute="trailing" secondItem="izI-81-ppP" secondAttribute="trailing" id="Hzd-yc-TX4"/>
<constraint firstItem="xKj-N8-7Gs" firstAttribute="bottom" secondItem="kMn-7n-C5k" secondAttribute="bottom" id="K1n-i8-PY0"/>
<constraint firstItem="izI-81-ppP" firstAttribute="leading" secondItem="xKj-N8-7Gs" secondAttribute="leading" constant="16" id="Pe8-Kz-kM0"/>
<constraint firstItem="kMn-7n-C5k" firstAttribute="trailing" secondItem="izI-81-ppP" secondAttribute="trailing" id="e7v-cV-vQD"/>
<constraint firstItem="xKj-N8-7Gs" firstAttribute="trailing" secondItem="izI-81-ppP" secondAttribute="trailing" constant="16" id="frz-Vd-NAI"/>
<constraint firstItem="kMn-7n-C5k" firstAttribute="leading" secondItem="izI-81-ppP" secondAttribute="leading" id="pq4-xs-Qli"/>
<constraint firstItem="P8b-JI-eVC" firstAttribute="centerY" secondItem="4vM-gu-CXZ" secondAttribute="centerY" id="sZo-sc-152"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="b5v-lV-S9X"/>
<connections>
<outlet property="playerStats" destination="P8b-JI-eVC" id="Fc0-vs-bPZ"/>
<outlet property="winnerLabel" destination="izI-81-ppP" id="zlx-U7-KCq"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Dws-eG-TtW" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-1465.1785714285713" y="-707.24637681159425"/>
</scene>
</scenes>
<resources>
<image name="checkerboard.rectangle" catalog="system" width="128" height="93"/>
<image name="person" catalog="system" width="128" height="117"/>
<systemColor name="labelColor">
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View file

@ -0,0 +1,333 @@
//
// ViewController.swift
// DevourAndDrought
//
// Created by Micah Gomez on 10/17/21.
//
import UIKit
class PlayerBoardController: UIViewController {
@IBOutlet var playerNameLabel: UILabel!
@IBOutlet var playerOilCount: UILabel!
@IBOutlet var playerWaterCount: UILabel!
@IBOutlet var playerWheatCount: UILabel!
@IBOutlet var playerCornCount: UILabel!
@IBOutlet var playerFishCount: UILabel!
@IBOutlet var playerCattleCount: UILabel!
@IBOutlet var medallionCount: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
playerNameLabel.text = GlobalVars.currentPlayer.name
playerOilCount.text = String("")
playerWaterCount.text = String("")
playerWheatCount.text = String("")
playerCornCount.text = String("")
playerFishCount.text = String("")
playerCattleCount.text = String("")
medallionCount.text = String("")
for _ in 0...GlobalVars.currentPlayer.oil {
playerOilCount.text?.append("🪔")
}
for _ in 0...GlobalVars.currentPlayer.water {
playerWaterCount.text?.append("💧")
}
for _ in 0...GlobalVars.currentPlayer.wheat {
playerWheatCount.text?.append("🌾")
}
for _ in 0...GlobalVars.currentPlayer.corn {
playerCornCount.text?.append("🌽")
}
for _ in 0...GlobalVars.currentPlayer.fish {
playerFishCount.text?.append("🐟")
}
for _ in 0...GlobalVars.currentPlayer.cattle {
playerCattleCount.text?.append("🐂")
}
playerOilCount.text?.remove(at: (playerOilCount.text?.firstIndex(of: "🪔"))!)
playerWaterCount.text?.remove(at: (playerWaterCount.text?.firstIndex(of: "💧"))!)
playerWheatCount.text?.remove(at: (playerWheatCount.text?.firstIndex(of: "🌾"))!)
playerCornCount.text?.remove(at: (playerCornCount.text?.firstIndex(of: "🌽"))!)
playerFishCount.text?.remove(at: (playerFishCount.text?.firstIndex(of: "🐟"))!)
playerCattleCount.text?.remove(at: (playerCattleCount.text?.firstIndex(of: "🐂"))!)
if(GlobalVars.currentPlayer.oil >= 10){
playerOilCount.text?.append("☀️")
}
if(GlobalVars.currentPlayer.water >= 10){
playerWaterCount.text?.append("☀️")
}
if(GlobalVars.currentPlayer.wheat >= 10){
playerWheatCount.text?.append("☀️")
}
if(GlobalVars.currentPlayer.corn >= 10){
playerCornCount.text?.append("☀️")
}
if(GlobalVars.currentPlayer.fish >= 10){
playerFishCount.text?.append("☀️")
}
if(GlobalVars.currentPlayer.cattle >= 10){
playerCattleCount.text?.append("☀️")
}
for i in 0...9 {
if ((GlobalVars.currentPlayer.oil >= i)&&(GlobalVars.currentPlayer.water >= i)&&(GlobalVars.currentPlayer.wheat >= i)&&(GlobalVars.currentPlayer.corn >= i)&&(GlobalVars.currentPlayer.fish >= i)&&(GlobalVars.currentPlayer.cattle >= i)){
medallionCount.text?.append("☀️")
}
}
medallionCount.text?.remove(at: (medallionCount.text?.firstIndex(of: "☀️"))!)
}
@IBAction func EndTurn(_ sender: Any) {
print("year: \(GlobalVars.currentYear)")
print("playerCount: \(GlobalVars.playerCount)")
print("activePlayer: \(GlobalVars.activePlayerInt)")
GlobalVars.players[GlobalVars.activePlayerInt] = GlobalVars.currentPlayer
if((GlobalVars.currentYear == 6) && ((GlobalVars.activePlayerInt+1) == GlobalVars.playerCount)){
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
if let viewController = mainStoryboard.instantiateViewController(withIdentifier: "GameEndScreen") as? UIViewController {
self.present(viewController, animated: true, completion: nil)
}
} else {
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
if let viewController = mainStoryboard.instantiateViewController(withIdentifier: "PlayerStart") as? UIViewController {
self.present(viewController, animated: true, completion: nil)
}
}
}
}
class GameBoardController: UIViewController {
@IBOutlet var PlayerNameLabel: UILabel!
@IBOutlet var LbrPointsLbl: UILabel!
@IBOutlet var ResourceSlot1: UIButton!
@IBOutlet var ResourceSlot2: UIButton!
@IBOutlet var ResourceSlot3: UIButton!
@IBOutlet var ResourceSlot4: UIButton!
@IBOutlet var ResourceSlot5: UIButton!
@IBOutlet var ResourceSlot6: UIButton!
@IBOutlet var ResourceSlot7: UIButton!
@IBOutlet var AllResourceSlots : [UIButton]!
//let buttonList:[UIButton] = [ResourceSlot1,ResourceSlot2,ResourceSlot3,ResourceSlot4,ResourceSlot5,ResourceSlot6,ResourceSlot7]
var resourceList:[resource] = []
//var resourceSlots:[resource] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let resourceNames:[String] = ["Oil\n🪔","Water\n💧","Wheat\n🌾","Corn\n🌽","Fish\n🐟","Cattle\n🐂"]
let resourceCosts:[Int] = [1,2,3,4,5,6]
for i in 0...5 {
let createResource = resource()
createResource.name = resourceNames[i]
createResource.cost = resourceCosts[i]
resourceList.append(createResource)
}
if (GlobalVars.resourceSlots.count == 0){
for y in 0...6 {
let createSlot = resourceList.randomElement()
print(createSlot?.name)
print(createSlot?.cost)
/*if(y == GlobalVars.currentYear){
createSlot?.cost = createSlot!.cost - 1
}*/
GlobalVars.resourceSlots.append(createSlot!)
}
}
//MARK: TODO: add cost after discount has been applied
for (index,item) in AllResourceSlots.enumerated() {
print(index,item)
//item.setTitle("\(GlobalVars.resourceSlots[index].name)", for: .normal)
//item.setTitle("\(GlobalVars.resourceSlots[index].name)\n/*\(GlobalVars.resourceSlots[index].cost)", for: .normal)
item.titleLabel?.numberOfLines = 0
item.titleLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
item.titleLabel?.textAlignment = NSTextAlignment.center
//item.layer.shadowPath = UIBezierPath(rect: item.layer.bounds).cgPath
item.layer.shadowColor = UIColor.black.cgColor
item.layer.shadowRadius = 13.0
item.layer.shadowOpacity = 0
if(GlobalVars.currentYear == index){
item.layer.borderColor = UIColor.green.cgColor
item.layer.borderWidth = 5
}
if(GlobalVars.resourceSlots[GlobalVars.currentYear].name == GlobalVars.resourceSlots[index].name){
item.setTitle("\(GlobalVars.resourceSlots[index].name)\n\((GlobalVars.resourceSlots[index].cost - 1))", for: .normal)
} else {
item.setTitle("\(GlobalVars.resourceSlots[index].name)\n\(GlobalVars.resourceSlots[index].cost)", for: .normal)
}
}
}
override func viewWillAppear(_ animated: Bool) {
PlayerNameLabel.text = GlobalVars.players[GlobalVars.activePlayerInt].name
LbrPointsLbl.text = "Labor Points: \(GlobalVars.currentPlayer.laborpoints)"
}
/*
@IBAction func ResourceSlotOne(_ sender: Any) {
ResourceSlot1.setTitle("\(resourceSlots[0].name)\n\(resourceSlots[0].cost)", for: .normal)
}
@IBAction func ResourceSlotTwo(_ sender: Any) {
ResourceSlot2.setTitle("\(resourceSlots[1].name)\n\(resourceSlots[1].cost)", for: .normal)
}
@IBAction func ResourceSlotThree(_ sender: Any) {
ResourceSlot3.setTitle("\(resourceSlots[2].name)\n\(resourceSlots[2].cost)", for: .normal)
}
@IBAction func ResourceSlotFour(_ sender: Any) {
ResourceSlot4.setTitle("\(resourceSlots[3].name)\n\(resourceSlots[3].cost)", for: .normal)
}
@IBAction func ResourceSlotFive(_ sender: Any) {
ResourceSlot5.setTitle("\(resourceSlots[4].name)\n\(resourceSlots[4].cost)", for: .normal)
}
@IBAction func ResourceSlotSix(_ sender: Any) {
ResourceSlot6.setTitle("\(resourceSlots[5].name)\n\(resourceSlots[5].cost)", for: .normal)
}
@IBAction func ResourceSlotSeven(_ sender: UIButton) {
ResourceSlot7.setTitle("\(resourceSlots[6].name)\n\(resourceSlots[6].cost)", for: .normal)
}
*/
@IBAction func boxTouched(_ sender: UIButton) {
let index = AllResourceSlots.index(of: sender)!
if !sender.isSelected{
for (i, item) in GlobalVars.resourceSlots.enumerated() {
//print(i,item)
AllResourceSlots[i].isSelected = false
AllResourceSlots[i].layer.shadowOpacity = 0
if item.name == GlobalVars.resourceSlots[index].name {
AllResourceSlots[i].isSelected = true
AllResourceSlots[i].layer.shadowOpacity = 0.75
}
}
} else {
if(AllResourceSlots[GlobalVars.currentYear].isSelected){
if((GlobalVars.currentPlayer.laborpoints - (GlobalVars.resourceSlots[index].cost - 1)) >= 0){
GlobalVars.currentPlayer.laborpoints = GlobalVars.currentPlayer.laborpoints - (GlobalVars.resourceSlots[index].cost - 1)
} else {
return
}
} else {
if((GlobalVars.currentPlayer.laborpoints - GlobalVars.resourceSlots[index].cost) >= 0){
GlobalVars.currentPlayer.laborpoints = GlobalVars.currentPlayer.laborpoints - GlobalVars.resourceSlots[index].cost
} else {
return
}
}
print("PURCHASED!!!")
for (i, item) in GlobalVars.resourceSlots.enumerated() {
if AllResourceSlots[i].isSelected {
addToInventory(name: GlobalVars.resourceSlots[i].name)
print("resource name: \(GlobalVars.resourceSlots[i].name)")
GlobalVars.resourceSlots[i] = resourceList.randomElement()!
/*AllResourceSlots[i].setTitle("\(GlobalVars.resourceSlots[i].name)\n\(GlobalVars.resourceSlots[i].cost)", for: .normal)
if(GlobalVars.resourceSlots[GlobalVars.currentYear].name == GlobalVars.resourceSlots[i].name){
AllResourceSlots[i].setTitle("\(GlobalVars.resourceSlots[i].name)\n\((GlobalVars.resourceSlots[i].cost - 1))", for: .normal)
} else {
AllResourceSlots[i].setTitle("\(GlobalVars.resourceSlots[i].name)\n\(GlobalVars.resourceSlots[i].cost)", for: .normal)
}*/
for (index,ii) in AllResourceSlots.enumerated() {
if(GlobalVars.resourceSlots[GlobalVars.currentYear].name == GlobalVars.resourceSlots[index].name){
ii.setTitle("\(GlobalVars.resourceSlots[index].name)\n\((GlobalVars.resourceSlots[index].cost - 1))", for: .normal)
} else {
ii.setTitle("\(GlobalVars.resourceSlots[index].name)\n\(GlobalVars.resourceSlots[index].cost)", for: .normal)
}
}
}
AllResourceSlots[i].isSelected = false
AllResourceSlots[i].layer.shadowOpacity = 0
LbrPointsLbl.text = "Labor Points: \(GlobalVars.currentPlayer.laborpoints)"
}
}
print(GlobalVars.currentPlayer.oil,GlobalVars.currentPlayer.water,GlobalVars.currentPlayer.wheat,GlobalVars.currentPlayer.corn,GlobalVars.currentPlayer.fish,GlobalVars.currentPlayer.cattle)
}
//MARK: TODO: DONT ALLOW PURCHASE IF NOT ENOUGH LABOR POINTS
func addToInventory(name: String){
print("adding!")
switch(name) {
case "Oil\n🪔" :
GlobalVars.currentPlayer.oil = GlobalVars.currentPlayer.oil + 1
if(GlobalVars.currentPlayer.oil > 10){
GlobalVars.currentPlayer.oil = 10
}
break;
case "Water\n💧" :
GlobalVars.currentPlayer.water = GlobalVars.currentPlayer.water + 1
if(GlobalVars.currentPlayer.water > 10){
GlobalVars.currentPlayer.water = 10
}
break;
case "Wheat\n🌾" :
GlobalVars.currentPlayer.wheat = GlobalVars.currentPlayer.wheat + 1
if(GlobalVars.currentPlayer.wheat > 10){
GlobalVars.currentPlayer.wheat = 10
}
break;
case "Corn\n🌽" :
GlobalVars.currentPlayer.corn = GlobalVars.currentPlayer.corn + 1
if(GlobalVars.currentPlayer.corn > 10){
GlobalVars.currentPlayer.corn = 10
}
break;
case "Fish\n🐟" :
GlobalVars.currentPlayer.fish = GlobalVars.currentPlayer.fish + 1
if(GlobalVars.currentPlayer.fish > 10){
GlobalVars.currentPlayer.fish = 10
}
break;
case "Cattle\n🐂" :
GlobalVars.currentPlayer.cattle = GlobalVars.currentPlayer.cattle + 1
if(GlobalVars.currentPlayer.cattle > 10){
GlobalVars.currentPlayer.cattle = 10
}
break;
/* you can have any number of case statements */
default : /* Optional */
print("uh oh!")
}
}
}

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,52 @@
//
// SceneDelegate.swift
// DevourAndDrought
//
// Created by Micah Gomez on 10/17/21.
//
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}
func sceneDidDisconnect(_ scene: UIScene) {
// Called as the scene is being released by the system.
// This occurs shortly after the scene enters the background, or when its session is discarded.
// Release any resources associated with this scene that can be re-created the next time the scene connects.
// The scene may re-connect later, as its session was not necessarily 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.
}
}

View file

@ -0,0 +1,337 @@
//
// SetupControllers.swift
// DevourAndDrought
//
// Created by Micah Gomez on 10/20/21.
//
import Foundation
import UIKit
class StartController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return 3
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return String(row+2) + " Players"
}
@IBOutlet var playerCountPicker: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
playerCountPicker.delegate = self
playerCountPicker.dataSource = self
}
override func viewDidAppear(_ animated: Bool) {
GlobalVars.playerCount = 2
GlobalVars.activePlayerInt = 0
GlobalVars.currentYear = -1
GlobalVars.players = []
GlobalVars.currentPlayer = player()
GlobalVars.resourceSlots = []
}
@IBAction func StartGame(_ sender: Any) {
GlobalVars.playerCount = playerCountPicker.selectedRow(inComponent: 0) + 2
}
}
class NamesController: UIViewController {
@IBOutlet var PlayerName: UILabel!
@IBOutlet var PlayerNameField: UITextField!
//var currentPlayerInt = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewDidAppear(_ animated: Bool) {
//currentPlayerInt = 0
PlayerNameField.becomeFirstResponder()
}
@IBAction func PlayerNextBtn(_ sender: Any) {
let createNewPlayer:player = player()
createNewPlayer.name = PlayerNameField.text ?? "Player \(GlobalVars.activePlayerInt+1)"
GlobalVars.players.append(createNewPlayer)
GlobalVars.activePlayerInt = GlobalVars.activePlayerInt+1
if (GlobalVars.activePlayerInt == GlobalVars.playerCount) {
print("all players named!")
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
if let viewController = mainStoryboard.instantiateViewController(withIdentifier: "PlayerStart") as? UIViewController {
self.present(viewController, animated: true, completion: nil)
}
} else {
PlayerName.text = "Player \(GlobalVars.activePlayerInt+1) Name:"
PlayerNameField.text = ""
}
}
}
class PlayerStartController: UIViewController {
@IBOutlet var playerNameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if (GlobalVars.activePlayerInt < GlobalVars.playerCount-1) {
GlobalVars.activePlayerInt = GlobalVars.activePlayerInt + 1
} else {
GlobalVars.activePlayerInt = 0
}
print("player: \(GlobalVars.activePlayerInt)")
GlobalVars.currentPlayer = GlobalVars.players[GlobalVars.activePlayerInt]
if(GlobalVars.activePlayerInt == 0){ //NEW YEAR
GlobalVars.newYear()
}
playerNameLabel.text = GlobalVars.currentPlayer.name
}
@IBAction func BeginTurnButton(_ sender: Any) {
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
if let viewController = mainStoryboard.instantiateViewController(withIdentifier: "GameView") as? UIViewController {
self.present(viewController, animated: false, completion: nil)
}
}
}
class GameEndController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return GlobalVars.playerCount
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return 8
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
var printString:String = ""
switch(row) {
case 0 :
printString = GlobalVars.players[component].name
break;
case 1 :
printString = "☀️ \(GlobalVars.players[component].medallions)"
break;
case 2 :
printString = "🪔 \(GlobalVars.players[component].oil)"
break;
case 3 :
printString = "💧 \(GlobalVars.players[component].water)"
break;
case 4 :
printString = "🌾 \(GlobalVars.players[component].wheat)"
break;
case 5 :
printString = "🌽 \(GlobalVars.players[component].corn)"
break;
case 6 :
printString = "🐟 \(GlobalVars.players[component].fish)"
break;
case 7 :
printString = "🐂 \(GlobalVars.players[component].cattle)"
break;
/* you can have any number of case statements */
default : /* Optional */
printString = "Error!"
}
return printString
}
@IBOutlet var playerStats: UIPickerView!
@IBOutlet var winnerLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
for p in GlobalVars.players{
print("Oil Count \(p.name): \(p.oil)")
if(p.oil >= 10){
p.medallions = p.medallions + 1
print("oil row complete! \(p.medallions) medals")
}
print("Water Count \(p.name): \(p.water)")
if(p.water >= 10){
p.medallions = p.medallions + 1
print("water row complete! \(p.medallions) medals")
}
print("Wheat Count \(p.name): \(p.wheat)")
if(p.wheat >= 10){
p.medallions = p.medallions + 1
print("wheat row complete! \(p.medallions) medals")
}
print("Corn Count \(p.name): \(p.corn)")
if(p.corn >= 10){
p.medallions = p.medallions + 1
print("corn row complete! \(p.medallions) medals")
}
print("Fish Count \(p.name): \(p.fish)")
if(p.fish >= 10){
p.medallions = p.medallions + 1
print("fish row complete! \(p.medallions) medals")
}
print("Cattle Count \(p.name): \(p.cattle)")
if(p.cattle >= 10){
p.medallions = p.medallions + 1
print("cattle row complete! \(p.medallions) medals")
}
for i in 1...10 {
if ((p.oil >= i)&&(p.water >= i)&&(p.wheat >= i)&&(p.corn >= i)&&(p.fish >= i)&&(p.cattle >= i)){
p.medallions = p.medallions + 1
print("column \(i) complete! \(p.medallions) medals")
}
}
playerStats.reloadAllComponents()
}
//let winnerPlayer = GlobalVars.players.max { a, b in a.medallions < b.medallions }
var winnerPlayer = player()
winnerPlayer.medallions = -1
var winnerList:[player] = [winnerPlayer]
var oldWinnerList:[player] = []
var winnerString:String = ""
for (index, value) in GlobalVars.players.enumerated() {
if (value.medallions > winnerList[0].medallions){
winnerList = []
winnerList.append(value)
} else if (value.medallions == winnerList[0].medallions){
winnerList.append(value)
}
}
if(winnerList.count > 1){
oldWinnerList = winnerList
winnerList = [winnerPlayer]
for (index, value) in oldWinnerList.enumerated() {
if (value.cattle > winnerList[0].cattle){
winnerList = []
winnerList.append(value)
} else if (value.cattle == winnerList[0].cattle){
winnerList.append(value)
}
}
if(winnerList.count > 1){
oldWinnerList = winnerList
winnerList = [winnerPlayer]
for (index, value) in oldWinnerList.enumerated() {
if (value.fish > winnerList[0].fish){
winnerList = []
winnerList.append(value)
} else if (value.fish == winnerList[0].fish){
winnerList.append(value)
}
}
if(winnerList.count > 1){
oldWinnerList = winnerList
winnerList = [winnerPlayer]
for (index, value) in oldWinnerList.enumerated() {
if (value.corn > winnerList[0].corn){
winnerList = []
winnerList.append(value)
} else if (value.corn == winnerList[0].corn){
winnerList.append(value)
}
}
if(winnerList.count > 1){
oldWinnerList = winnerList
winnerList = [winnerPlayer]
for (index, value) in oldWinnerList.enumerated() {
if (value.wheat > winnerList[0].wheat){
winnerList = []
winnerList.append(value)
} else if (value.wheat == winnerList[0].wheat){
winnerList.append(value)
}
}
if(winnerList.count > 1){
oldWinnerList = winnerList
winnerList = [winnerPlayer]
for (index, value) in oldWinnerList.enumerated() {
if (value.water > winnerList[0].water){
winnerList = []
winnerList.append(value)
} else if (value.water == winnerList[0].water){
winnerList.append(value)
}
}
if(winnerList.count > 1){
oldWinnerList = winnerList
winnerList = [winnerPlayer]
for (index, value) in oldWinnerList.enumerated() {
if (value.oil > winnerList[0].oil){
winnerList = []
winnerList.append(value)
} else if (value.oil == winnerList[0].oil){
winnerList.append(value)
}
}
if(winnerList.count > 1){
print("holy shit a tie")
winnerString = "It's a tie!"
}
}
}
}
}
}
}
if (winnerList.count == 1){
winnerString = "\(winnerList[0].name) Wins!"
}
winnerLabel.text = winnerString
playerStats.delegate = self
playerStats.dataSource = self
}
@IBAction func StartGame(_ sender: Any) {
print("New game!")
//GlobalVars.playerCount = playerCountPicker.selectedRow(inComponent: 0) + 2
}
}
//MARK: TODO: MULTIPEER CONNECTIVITY?
//MARK: TODO: CPU PLAYERS

View file

@ -0,0 +1,70 @@
//
// SupportingClasses.swift
// DevourAndDrought
//
// Created by Micah Gomez on 10/20/21.
//
import Foundation
class resource : Codable {
var name:String = ""
var cost:Int = 0
}
class player : Codable {
var name:String = ""
var laborpoints:Int = 0
var oil:Int = 0
var water:Int = 0
var wheat:Int = 0
var corn:Int = 0
var fish:Int = 0
var cattle:Int = 0
var medallions:Int = 0
}
struct GlobalVars {
static var playerCount:Int = 2
static var activePlayerInt:Int = 0
static var currentYear = -1
static var players:[player] = []
static var currentPlayer:player = player()
static var resourceSlots:[resource] = []
func endTurn() {
}
func nextPlayer() {
}
func gameEnd() {
}
static func newYear() {
for p in GlobalVars.players {
p.laborpoints = p.laborpoints+6
if (p.laborpoints > 13){
p.laborpoints = 13
}
}
GlobalVars.currentYear = GlobalVars.currentYear + 1
}
}

View file

@ -0,0 +1,33 @@
//
// DevourAndDroughtTests.swift
// DevourAndDroughtTests
//
// Created by Micah Gomez on 10/17/21.
//
import XCTest
@testable import DevourAndDrought
class DevourAndDroughtTests: 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.
}
}
}

View file

@ -0,0 +1,42 @@
//
// DevourAndDroughtUITests.swift
// DevourAndDroughtUITests
//
// Created by Micah Gomez on 10/17/21.
//
import XCTest
class DevourAndDroughtUITests: 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 its 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, watchOS 7.0, *) {
// This measures how long it takes to launch your application.
measure(metrics: [XCTApplicationLaunchMetric()]) {
XCUIApplication().launch()
}
}
}
}

View file

@ -0,0 +1,32 @@
//
// DevourAndDroughtUITestsLaunchTests.swift
// DevourAndDroughtUITests
//
// Created by Micah Gomez on 10/17/21.
//
import XCTest
class DevourAndDroughtUITestsLaunchTests: XCTestCase {
override class var runsForEachTargetApplicationUIConfiguration: Bool {
true
}
override func setUpWithError() throws {
continueAfterFailure = false
}
func testLaunch() throws {
let app = XCUIApplication()
app.launch()
// Insert steps here to perform after app launch but before taking a screenshot,
// such as logging into a test account or navigating somewhere in the app
let attachment = XCTAttachment(screenshot: app.screenshot())
attachment.name = "Launch Screen"
attachment.lifetime = .keepAlways
add(attachment)
}
}