Merge branch 'sprint_1_delivery' into 'master'

Sprint 1 delivery

See merge request marcel.schwarz/software-projekt-2!23
This commit is contained in:
Aldin Duraki 2020-04-23 21:06:59 +00:00
commit fd1ad465a0
93 changed files with 2186 additions and 0 deletions

113
.gitignore vendored Normal file
View File

@ -0,0 +1,113 @@
# Created by https://www.gitignore.io/api/macos,swift
# Edit at https://www.gitignore.io/?templates=macos,swift
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Swift ###
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
xcshareddata/
## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
## Playgrounds
timeline.xctimeline
playground.xcworkspace
# Swift Package Manager
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
# Package.resolved
.build/
# Add this line if you want to avoid checking in Xcode SPM integration.
# .swiftpm/xcode
# CocoaPods
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
# Pods/
# Add this line if you want to avoid checking in source code from the Xcode workspace
# *.xcworkspace
# Carthage
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# Accio dependency management
Dependencies/
.accio/
# fastlane
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output
# Code Injection
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode
iOSInjectionProject/
# End of https://www.gitignore.io/api/macos,swift

View File

@ -0,0 +1,5 @@
Description
**Acceptance Criteria**
* One
* Two

View File

@ -0,0 +1,641 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
110360D3244B101A008610AF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110360D2244B101A008610AF /* AppDelegate.swift */; };
110360D5244B101A008610AF /* GameScene.sks in Resources */ = {isa = PBXBuildFile; fileRef = 110360D4244B101A008610AF /* GameScene.sks */; };
110360D9244B101A008610AF /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110360D8244B101A008610AF /* GameScene.swift */; };
110360DB244B101A008610AF /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110360DA244B101A008610AF /* GameViewController.swift */; };
110360DE244B101A008610AF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 110360DC244B101A008610AF /* Main.storyboard */; };
110360E0244B101B008610AF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 110360DF244B101B008610AF /* Assets.xcassets */; };
110360E3244B101B008610AF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 110360E1244B101B008610AF /* LaunchScreen.storyboard */; };
110360EE244B101B008610AF /* GoldWarsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110360ED244B101B008610AF /* GoldWarsTests.swift */; };
110360F9244B101B008610AF /* GoldWarsUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110360F8244B101B008610AF /* GoldWarsUITests.swift */; };
11036111244B3D6A008610AF /* MenuScene.sks in Resources */ = {isa = PBXBuildFile; fileRef = 11036110244B3D6A008610AF /* MenuScene.sks */; };
11036113244B3E30008610AF /* MenuScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11036112244B3E30008610AF /* MenuScene.swift */; };
11738A3B24508F68004426F1 /* Unit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11738A3A24508F68004426F1 /* Unit.swift */; };
ABA03DA0244BD54F00A66916 /* Base.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABA03D9F244BD54F00A66916 /* Base.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
110360EA244B101B008610AF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 110360C7244B101A008610AF /* Project object */;
proxyType = 1;
remoteGlobalIDString = 110360CE244B101A008610AF;
remoteInfo = GoldWars;
};
110360F5244B101B008610AF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 110360C7244B101A008610AF /* Project object */;
proxyType = 1;
remoteGlobalIDString = 110360CE244B101A008610AF;
remoteInfo = GoldWars;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
110360CF244B101A008610AF /* GoldWars.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GoldWars.app; sourceTree = BUILT_PRODUCTS_DIR; };
110360D2244B101A008610AF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
110360D4244B101A008610AF /* GameScene.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = GameScene.sks; sourceTree = "<group>"; };
110360D8244B101A008610AF /* GameScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = "<group>"; };
110360DA244B101A008610AF /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = "<group>"; };
110360DD244B101A008610AF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
110360DF244B101B008610AF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
110360E2244B101B008610AF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
110360E4244B101B008610AF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
110360E9244B101B008610AF /* GoldWarsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GoldWarsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
110360ED244B101B008610AF /* GoldWarsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GoldWarsTests.swift; sourceTree = "<group>"; };
110360EF244B101B008610AF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
110360F4244B101B008610AF /* GoldWarsUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GoldWarsUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
110360F8244B101B008610AF /* GoldWarsUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GoldWarsUITests.swift; sourceTree = "<group>"; };
110360FA244B101B008610AF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
11036110244B3D6A008610AF /* MenuScene.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = MenuScene.sks; sourceTree = "<group>"; };
11036112244B3E30008610AF /* MenuScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuScene.swift; sourceTree = "<group>"; };
11738A3A24508F68004426F1 /* Unit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Unit.swift; sourceTree = "<group>"; };
ABA03D9F244BD54F00A66916 /* Base.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Base.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
110360CC244B101A008610AF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
110360E6244B101B008610AF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
110360F1244B101B008610AF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
110360C6244B101A008610AF = {
isa = PBXGroup;
children = (
110360D1244B101A008610AF /* GoldWars */,
110360EC244B101B008610AF /* GoldWarsTests */,
110360F7244B101B008610AF /* GoldWarsUITests */,
110360D0244B101A008610AF /* Products */,
);
sourceTree = "<group>";
};
110360D0244B101A008610AF /* Products */ = {
isa = PBXGroup;
children = (
110360CF244B101A008610AF /* GoldWars.app */,
110360E9244B101B008610AF /* GoldWarsTests.xctest */,
110360F4244B101B008610AF /* GoldWarsUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
110360D1244B101A008610AF /* GoldWars */ = {
isa = PBXGroup;
children = (
11738A3C24508F8C004426F1 /* Unit */,
ABA03D9E244BD53D00A66916 /* Base */,
11036114244B3E8A008610AF /* Menu */,
1103610F244B3D48008610AF /* Game */,
110360D2244B101A008610AF /* AppDelegate.swift */,
110360DA244B101A008610AF /* GameViewController.swift */,
110360DC244B101A008610AF /* Main.storyboard */,
110360DF244B101B008610AF /* Assets.xcassets */,
110360E1244B101B008610AF /* LaunchScreen.storyboard */,
110360E4244B101B008610AF /* Info.plist */,
);
path = GoldWars;
sourceTree = "<group>";
};
110360EC244B101B008610AF /* GoldWarsTests */ = {
isa = PBXGroup;
children = (
110360ED244B101B008610AF /* GoldWarsTests.swift */,
110360EF244B101B008610AF /* Info.plist */,
);
path = GoldWarsTests;
sourceTree = "<group>";
};
110360F7244B101B008610AF /* GoldWarsUITests */ = {
isa = PBXGroup;
children = (
110360F8244B101B008610AF /* GoldWarsUITests.swift */,
110360FA244B101B008610AF /* Info.plist */,
);
path = GoldWarsUITests;
sourceTree = "<group>";
};
1103610F244B3D48008610AF /* Game */ = {
isa = PBXGroup;
children = (
110360D4244B101A008610AF /* GameScene.sks */,
110360D8244B101A008610AF /* GameScene.swift */,
);
path = Game;
sourceTree = "<group>";
};
11036114244B3E8A008610AF /* Menu */ = {
isa = PBXGroup;
children = (
11036110244B3D6A008610AF /* MenuScene.sks */,
11036112244B3E30008610AF /* MenuScene.swift */,
);
path = Menu;
sourceTree = "<group>";
};
11738A3C24508F8C004426F1 /* Unit */ = {
isa = PBXGroup;
children = (
11738A3A24508F68004426F1 /* Unit.swift */,
);
path = Unit;
sourceTree = "<group>";
};
ABA03D9E244BD53D00A66916 /* Base */ = {
isa = PBXGroup;
children = (
ABA03D9F244BD54F00A66916 /* Base.swift */,
);
path = Base;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
110360CE244B101A008610AF /* GoldWars */ = {
isa = PBXNativeTarget;
buildConfigurationList = 110360FD244B101B008610AF /* Build configuration list for PBXNativeTarget "GoldWars" */;
buildPhases = (
110360CB244B101A008610AF /* Sources */,
110360CC244B101A008610AF /* Frameworks */,
110360CD244B101A008610AF /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = GoldWars;
productName = GoldWars;
productReference = 110360CF244B101A008610AF /* GoldWars.app */;
productType = "com.apple.product-type.application";
};
110360E8244B101B008610AF /* GoldWarsTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 11036100244B101B008610AF /* Build configuration list for PBXNativeTarget "GoldWarsTests" */;
buildPhases = (
110360E5244B101B008610AF /* Sources */,
110360E6244B101B008610AF /* Frameworks */,
110360E7244B101B008610AF /* Resources */,
);
buildRules = (
);
dependencies = (
110360EB244B101B008610AF /* PBXTargetDependency */,
);
name = GoldWarsTests;
productName = GoldWarsTests;
productReference = 110360E9244B101B008610AF /* GoldWarsTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
110360F3244B101B008610AF /* GoldWarsUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 11036103244B101B008610AF /* Build configuration list for PBXNativeTarget "GoldWarsUITests" */;
buildPhases = (
110360F0244B101B008610AF /* Sources */,
110360F1244B101B008610AF /* Frameworks */,
110360F2244B101B008610AF /* Resources */,
);
buildRules = (
);
dependencies = (
110360F6244B101B008610AF /* PBXTargetDependency */,
);
name = GoldWarsUITests;
productName = GoldWarsUITests;
productReference = 110360F4244B101B008610AF /* GoldWarsUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
110360C7244B101A008610AF /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1130;
LastUpgradeCheck = 1130;
ORGANIZATIONNAME = SP2;
TargetAttributes = {
110360CE244B101A008610AF = {
CreatedOnToolsVersion = 11.3.1;
};
110360E8244B101B008610AF = {
CreatedOnToolsVersion = 11.3.1;
TestTargetID = 110360CE244B101A008610AF;
};
110360F3244B101B008610AF = {
CreatedOnToolsVersion = 11.3.1;
TestTargetID = 110360CE244B101A008610AF;
};
};
};
buildConfigurationList = 110360CA244B101A008610AF /* Build configuration list for PBXProject "GoldWars" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 110360C6244B101A008610AF;
productRefGroup = 110360D0244B101A008610AF /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
110360CE244B101A008610AF /* GoldWars */,
110360E8244B101B008610AF /* GoldWarsTests */,
110360F3244B101B008610AF /* GoldWarsUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
110360CD244B101A008610AF /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
110360DE244B101A008610AF /* Main.storyboard in Resources */,
11036111244B3D6A008610AF /* MenuScene.sks in Resources */,
110360D5244B101A008610AF /* GameScene.sks in Resources */,
110360E0244B101B008610AF /* Assets.xcassets in Resources */,
110360E3244B101B008610AF /* LaunchScreen.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
110360E7244B101B008610AF /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
110360F2244B101B008610AF /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
110360CB244B101A008610AF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
110360D9244B101A008610AF /* GameScene.swift in Sources */,
11738A3B24508F68004426F1 /* Unit.swift in Sources */,
11036113244B3E30008610AF /* MenuScene.swift in Sources */,
ABA03DA0244BD54F00A66916 /* Base.swift in Sources */,
110360DB244B101A008610AF /* GameViewController.swift in Sources */,
110360D3244B101A008610AF /* AppDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
110360E5244B101B008610AF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
110360EE244B101B008610AF /* GoldWarsTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
110360F0244B101B008610AF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
110360F9244B101B008610AF /* GoldWarsUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
110360EB244B101B008610AF /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 110360CE244B101A008610AF /* GoldWars */;
targetProxy = 110360EA244B101B008610AF /* PBXContainerItemProxy */;
};
110360F6244B101B008610AF /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 110360CE244B101A008610AF /* GoldWars */;
targetProxy = 110360F5244B101B008610AF /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
110360DC244B101A008610AF /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
110360DD244B101A008610AF /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
110360E1244B101B008610AF /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
110360E2244B101B008610AF /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
110360FB244B101B008610AF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
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;
};
110360FC244B101B008610AF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
110360FE244B101B008610AF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = GoldWars/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.hft.stuttgart.GoldWars;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 2;
};
name = Debug;
};
110360FF244B101B008610AF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = GoldWars/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.hft.stuttgart.GoldWars;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 2;
};
name = Release;
};
11036101244B101B008610AF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = GoldWarsTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.hft.stuttgart.GoldWarsTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GoldWars.app/GoldWars";
};
name = Debug;
};
11036102244B101B008610AF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = GoldWarsTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.hft.stuttgart.GoldWarsTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GoldWars.app/GoldWars";
};
name = Release;
};
11036104244B101B008610AF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = GoldWarsUITests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.hft.stuttgart.GoldWarsUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = GoldWars;
};
name = Debug;
};
11036105244B101B008610AF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = GoldWarsUITests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.hft.stuttgart.GoldWarsUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = GoldWars;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
110360CA244B101A008610AF /* Build configuration list for PBXProject "GoldWars" */ = {
isa = XCConfigurationList;
buildConfigurations = (
110360FB244B101B008610AF /* Debug */,
110360FC244B101B008610AF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
110360FD244B101B008610AF /* Build configuration list for PBXNativeTarget "GoldWars" */ = {
isa = XCConfigurationList;
buildConfigurations = (
110360FE244B101B008610AF /* Debug */,
110360FF244B101B008610AF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
11036100244B101B008610AF /* Build configuration list for PBXNativeTarget "GoldWarsTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
11036101244B101B008610AF /* Debug */,
11036102244B101B008610AF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
11036103244B101B008610AF /* Build configuration list for PBXNativeTarget "GoldWarsUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
11036104244B101B008610AF /* Debug */,
11036105244B101B008610AF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 110360C7244B101A008610AF /* Project object */;
}

View File

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

View File

@ -0,0 +1,41 @@
//
// AppDelegate.swift
// GoldWars
//
// Created by Aldin Duraki on 18.04.20.
// Copyright © 2020 SP2. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
}

View File

@ -0,0 +1,108 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"filename" : "logo_20.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"filename" : "logo_40.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"filename" : "logo_29.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"filename" : "logo_58.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"filename" : "logo_40.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"filename" : "logo_80.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"filename" : "logo_76.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"filename" : "logo_152.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"filename" : "logo_167.png",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"filename" : "logo.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,23 @@
The different image sizes are used for:
App Store: logo.png
iPad Pro - App Icon: logo_167.png
iPad, iPad Mini - App Icon: logo_152.png
iPad (all) - Spotlight: logo_80.png
iPad (all) - Settings: logo_58.png
iPad (all) - Notifications: logo_40.png
Color Codes:
Coin:
Main: #ae841a
Edges: #daa520 (goldenrod)
Background flow:
From: #a9003c
To: #2f0011
The logo.svg file is a vectorized version of the coin without the background.

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

View File

@ -0,0 +1,11 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="1024px" height="1024px" viewBox="0 0 10240 10240" preserveAspectRatio="xMidYMid meet">
<g id="layer101" fill="#ae841a" stroke="none">
<path d="M4865 8994 c-610 -49 -1168 -217 -1661 -500 -538 -308 -994 -736 -1327 -1245 -346 -528 -544 -1082 -619 -1734 -17 -144 -17 -646 0 -790 54 -470 170 -881 362 -1283 260 -544 672 -1048 1157 -1415 569 -430 1224 -689 1948 -769 158 -17 632 -17 790 0 1186 131 2214 760 2859 1749 336 517 538 1086 608 1718 17 158 17 632 0 790 -70 631 -271 1200 -608 1718 -153 234 -280 392 -484 601 -619 635 -1428 1033 -2320 1141 -129 16 -590 28 -705 19z m1000 -3134 l740 -740 -743 -743 -742 -742 -742 742 -743 743 740 740 c407 407 742 740 745 740 3 0 338 -333 745 -740z"/>
</g>
<g id="layer102" fill="#daa520" stroke="none">
<path d="M4900 8989 c-942 -50 -1846 -455 -2520 -1129 -631 -631 -1018 -1443 -1116 -2342 -20 -184 -23 -578 -5 -753 79 -785 360 -1477 846 -2081 532 -663 1294 -1143 2125 -1338 298 -70 553 -98 890 -98 605 0 1135 118 1668 373 524 250 997 624 1352 1068 411 515 678 1100 795 1743 80 439 79 939 -1 1376 -305 1669 -1644 2941 -3322 3157 -121 16 -436 36 -522 33 -25 0 -110 -4 -190 -9z m616 -673 c1065 -138 1972 -771 2465 -1721 180 -345 290 -711 341 -1125 17 -136 17 -564 0 -700 -73 -593 -280 -1118 -622 -1575 -528 -705 -1298 -1153 -2188 -1272 -177 -24 -607 -24 -784 0 -890 119 -1660 567 -2188 1272 -342 457 -549 982 -622 1575 -17 136 -17 564 0 700 85 693 352 1290 807 1801 517 581 1276 971 2040 1048 61 6 126 13 145 15 78 9 493 -4 606 -18z"/>
<path d="M3907 6342 l-1217 -1217 1218 -1218 1217 -1217 1218 1218 1217 1217 -1218 1218 -1217 1217 -1218 -1218z m1958 -482 l740 -740 -743 -743 -742 -742 -742 742 -743 743 740 740 c407 407 742 740 745 740 3 0 338 -333 745 -740z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 849 KiB

View File

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

View File

@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "base-small.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "base-medium.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "base-large.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

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

View File

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

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_boxCheckmark.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_boxCross.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_boxTick.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button00.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button01.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button02.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button03.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button04.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button05.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button06.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button07.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button08.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button09.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button10.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button11.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button12.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_button13.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_checkmark.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_circle.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_cross.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_panel.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_sliderDown.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_sliderLeft.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_sliderRight.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_sliderUp.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "yellow_tick.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<capability name="Safe area layout guides" minToolsVersion="9.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="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BV1-FR-VrT">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Game View Controller-->
<scene sceneID="tXr-a1-R10">
<objects>
<viewController id="BV1-FR-VrT" customClass="GameViewController" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" multipleTouchEnabled="YES" contentMode="scaleToFill" id="3se-qz-xqx" customClass="SKView">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="4qk-I5-YsI"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="SZV-WD-TEh" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,71 @@
//
// Base.swift
// GoldWars
//
// Created by Marcel Schwarz on 18.04.20.
// Copyright © 2020 SP2. All rights reserved.
//
import SpriteKit
import GameplayKit
class Base : SKSpriteNode{
public static let colorSelected = SKColor.yellow
var availableBases = [Base]()
var defaultColor = SKColor.green
var unitType: Unit = Unit.General;
var unitCount: Int = 0;
init(color: UIColor, position: CGPoint, name: String, unitCount: Int = 0, unitType: Unit = Unit.General) {
super.init(texture: SKTexture(imageNamed: "Base"),
color: color,
size: CGSize(width: 50.0, height: 50.0)
)
defaultColor = color
self.colorBlendFactor = 1
self.name = name
self.position = position
self.zPosition = 2
self.isUserInteractionEnabled = true
self.unitCount = unitCount
self.unitType = unitType
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func addAvailableBase(base: Base) {
availableBases.append(base)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.run(
SKAction.sequence(
[
SKAction.resize(byWidth: 20, height: 20, duration: 0.5),
SKAction.resize(byWidth: -20, height: -20, duration: 0.5)
]
)
)
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
self.color = SKColor.yellow
for base in availableBases {
base.color = Base.colorSelected
base.size = CGSize(width: 60, height: 60)
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
self.color = defaultColor
for base in availableBases {
base.color = base.defaultColor
base.size = CGSize(width: 50, height: 50)
}
}
}

Binary file not shown.

View File

@ -0,0 +1,254 @@
//
// GameScene.swift
// GoldWars
//
// Created by Aldin Duraki on 18.04.20.
// Copyright © 2020 SP2. All rights reserved.
//
import SpriteKit
import GameplayKit
class GameScene: SKScene, SKPhysicsContactDelegate {
var entities = [GKEntity]()
var graphs = [String : GKGraph]()
var bases = [Base]()
var player = [Base]()
var popUpOnBaseCollision = SKSpriteNode()
// TODO: Refactoring following as Components in Sprint 2
var timer = SKLabelNode()
var backBtn = SKShapeNode(circleOfRadius: 40)
var backLabel = SKLabelNode()
var atkBoostSkill = SKShapeNode(circleOfRadius: 30)
var defBoostSkill = SKShapeNode(circleOfRadius: 30)
var spySkill = SKShapeNode(circleOfRadius: 30)
var atkBoostLabel = SKLabelNode()
var defBoostLabel = SKLabelNode()
var spyLabel = SKLabelNode()
// TODO: END
struct physicsBodyNumber {
static let basePlayer1Number: UInt32 = 0b1
static let basePlayer2Number: UInt32 = 0b10
static let base5Number: UInt32 = 0b101
static let base6Number: UInt32 = 0b110
static let base7Number: UInt32 = 0b111
static let emptyNumber: UInt32 = 0b100
}
override func sceneDidLoad() {
self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)
self.physicsWorld.contactDelegate = self
let maxX = self.size.width
let midY = self.size.height / 2
let basePlayer1 = Base(color: SKColor.red, position: CGPoint(x: maxX * 0.1, y: midY), name: "Player1", unitCount: 100, unitType: Unit.General)
let basePlayer2 = Base(color: SKColor.blue, position: CGPoint(x: maxX * 0.9, y: midY), name: "Player2", unitCount: 100, unitType: Unit.General)
basePlayer2.physicsBody = SKPhysicsBody(circleOfRadius: 50)
basePlayer2.physicsBody?.categoryBitMask = physicsBodyNumber.basePlayer2Number
basePlayer2.physicsBody?.collisionBitMask = physicsBodyNumber.emptyNumber
basePlayer2.physicsBody?.contactTestBitMask = physicsBodyNumber.base5Number & physicsBodyNumber.base6Number & physicsBodyNumber.base7Number
popUpOnBaseCollision = SKSpriteNode(color: SKColor.blue , size: CGSize(width: self.size.width * 0.4, height: self.size.height * 0.4))
popUpOnBaseCollision.position = CGPoint(x: self.size.width * 0.5, y: self.size.height * 0.5)
popUpOnBaseCollision.zPosition = 2
self.addChild(basePlayer1)
self.addChild(basePlayer2)
player.append(basePlayer1)
player.append(basePlayer2)
createVirginBases()
connectBases()
addPhysicsBodyToBase()
}
override func didMove(to view: SKView) {
let background = SKSpriteNode(imageNamed: "Background")
background.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
background.zPosition = -1
background.size = self.size
self.addChild(background)
// TODO: Refactor following as Components in Sprint 2
timer.text = "Roundtime: 30 Seconds left"
timer.fontColor = SKColor.black
timer.fontSize = 40
timer.position = CGPoint(x: self.size.width/2, y: self.size.height * 0.9)
backBtn.position = CGPoint(x: 40, y: self.size.height * 0.9)
backBtn.fillColor = SKColor.gray
backLabel.text = "Back"
backLabel.position = CGPoint(x: backBtn.position.x, y: backBtn.position.y - 15)
spySkill.position = CGPoint(x: self.size.width * 0.75, y: 40)
spySkill.fillColor = SKColor.gray
spyLabel.text = "Spy"
spyLabel.position = CGPoint(x: spySkill.position.x, y: spySkill.position.y - 15);
atkBoostSkill.position = CGPoint(x: self.size.width * 0.85, y: 40)
atkBoostSkill.fillColor = SKColor.gray
atkBoostLabel.text = "Atk"
atkBoostLabel.position = CGPoint(x: atkBoostSkill.position.x, y: atkBoostSkill.position.y - 15)
defBoostSkill.position = CGPoint(x: self.size.width * 0.95, y: 40)
defBoostSkill.fillColor = SKColor.gray
defBoostLabel.text = "Def"
defBoostLabel.position = CGPoint(x: defBoostSkill.position.x, y: defBoostSkill.position.y - 15)
self.addChild(timer)
self.addChild(backBtn)
self.addChild(backLabel)
self.addChild(atkBoostSkill)
self.addChild(defBoostSkill)
self.addChild(spySkill)
self.addChild(atkBoostLabel)
self.addChild(defBoostLabel)
self.addChild(spyLabel)
// TODO: END
}
func addPhysicsBodyToBase() {
bases[5].physicsBody = SKPhysicsBody(circleOfRadius: 20)
bases[5].physicsBody?.categoryBitMask = physicsBodyNumber.base5Number
bases[5].physicsBody?.collisionBitMask = physicsBodyNumber.emptyNumber
bases[5].physicsBody?.contactTestBitMask = physicsBodyNumber.basePlayer2Number
bases[6].physicsBody = SKPhysicsBody(circleOfRadius: 20)
bases[6].physicsBody?.categoryBitMask = physicsBodyNumber.base6Number
bases[6].physicsBody?.collisionBitMask = physicsBodyNumber.emptyNumber
bases[6].physicsBody?.contactTestBitMask = physicsBodyNumber.basePlayer2Number
bases[7].physicsBody = SKPhysicsBody(circleOfRadius: 20)
bases[7].physicsBody?.categoryBitMask = physicsBodyNumber.base7Number
bases[7].physicsBody?.collisionBitMask = physicsBodyNumber.emptyNumber
bases[7].physicsBody?.contactTestBitMask = physicsBodyNumber.basePlayer2Number
}
func createVirginBases() {
for i in 0...7 {
let base:Base
let color = SKColor.green
var position = CGPoint(x: 0, y: 0)
switch i {
case 0...2:
let width = self.size.width * 0.25
if i == 0 {
position = CGPoint(x: width, y: self.size.height * 0.25)
}
if i == 1 {
position = CGPoint(x: width, y: self.size.height * 0.5)
}
if i == 2{
position = CGPoint(x: width, y: self.size.height * 0.75)
}
case 3...4:
let width = self.size.width * 0.5
if i == 3{
position = CGPoint(x: width, y: self.size.height * 0.333)
}
if i == 4{
position = CGPoint(x: width, y: self.size.height * 0.666)
}
case 5...7:
let width = self.size.width * 0.75
if i == 5{
position = CGPoint(x: width, y: self.size.height * 0.25)
}
if i == 6{
position = CGPoint(x: width, y: self.size.height * 0.5)
}
if i == 7{
position = CGPoint(x: width, y: self.size.height * 0.75)
}
default:
break
}
base = Base(color: color, position: position, name: "Base\(i)")
bases.append(base)
self.addChild(base)
}
}
func addLine(base1: Base , base2: Base){
let line = SKShapeNode()
let linePath = CGMutablePath()
linePath.move(to: base1.position)
linePath.addLine(to: base2.position)
line.path = linePath
line.strokeColor = SKColor.white
addChild(line)
}
func connectBases(){
player[0].addAvailableBase(base: bases[0])
player[0].addAvailableBase(base: bases[1])
player[0].addAvailableBase(base: bases[2])
bases[0].addAvailableBase(base: bases[3])
bases[1].addAvailableBase(base: bases[3])
bases[1].addAvailableBase(base: bases[4])
bases[2].addAvailableBase(base: bases[4])
bases[3].addAvailableBase(base: bases[5])
bases[3].addAvailableBase(base: bases[6])
bases[4].addAvailableBase(base: bases[7])
bases[4].addAvailableBase(base: bases[6])
player[1].addAvailableBase(base: bases[5])
player[1].addAvailableBase(base: bases[6])
player[1].addAvailableBase(base: bases[7])
for base in player{
for availableBase in base.availableBases{
addLine(base1: base, base2: availableBase)
}
}
for base in bases{
for availableBase in base.availableBases{
addLine(base1: base, base2: availableBase)
}
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let locationUser = touch.location(in: self)
if atPoint(locationUser) == popUpOnBaseCollision {
popUpOnBaseCollision.removeFromParent()
}
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let locationUser = touch.location(in: self)
if atPoint(locationUser) == player[1]{
player[1].position = locationUser
}
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
let maxX = self.size.width
let midY = self.size.height / 2
player[1].position = CGPoint(x: maxX * 0.9, y: midY)
}
func didBegin(_ contact: SKPhysicsContact) {
self.addChild(popUpOnBaseCollision)
}
}

View File

@ -0,0 +1,44 @@
//
// GameViewController.swift
// GoldWars
//
// Created by Aldin Duraki on 18.04.20.
// Copyright © 2020 SP2. All rights reserved.
//
import UIKit
import SpriteKit
import GameplayKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
if let scene = SKScene(fileNamed: "MenuScene") {
//scene.scaleMode = .aspectFill
view.presentScene(scene)
//TODO: create dev profile or remove on delivery
view.showsFPS = true
view.showsNodeCount = true
}
}
}
override var shouldAutorotate: Bool {
return true
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
if UIDevice.current.userInterfaceIdiom == .phone {
return .allButUpsideDown
} else {
return .all
}
}
override var prefersStatusBarHidden: Bool {
return true
}
}

View File

@ -0,0 +1,45 @@
<?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>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

Binary file not shown.

View File

@ -0,0 +1,36 @@
//
// MenuScene.swift
// GoldWars
//
// Created by Aldin Duraki on 18.04.20.
// Copyright © 2020 SP2. All rights reserved.
//
import SpriteKit
class MenuScene: SKScene {
var startGameButtonNode:SKSpriteNode!
var settingsButtonNode:SKSpriteNode!
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let touch = touches.first else {
return
}
let gameScene = GameScene(size: self.size)
let location = touch.location(in: self)
let frontTouchedNode = atPoint(location).name
let transition = SKTransition.moveIn(with: .right, duration: 1)
if frontTouchedNode == "startGameBtn" || frontTouchedNode == "tmpStartGameLbl"{
self.view?.presentScene(gameScene, transition: transition)
}
if frontTouchedNode == "settingsBtn" || frontTouchedNode == "tmpSettingsLbl"{
//TODO: Implement settings functionality
}
}
}

View File

@ -0,0 +1,13 @@
//
// Units.swift
// GoldWars
//
// Created by Chauntalle Schüle on 20.04.20.
// Copyright © 2020 SP2. All rights reserved.
//
enum Unit{
case General
case Defence
case Attack
}

View File

@ -0,0 +1,34 @@
//
// GoldWarsTests.swift
// GoldWarsTests
//
// Created by Aldin Duraki on 18.04.20.
// Copyright © 2020 SP2. All rights reserved.
//
import XCTest
@testable import GoldWars
class GoldWarsTests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// 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,22 @@
<?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>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -0,0 +1,43 @@
//
// GoldWarsUITests.swift
// GoldWarsUITests
//
// Created by Aldin Duraki on 18.04.20.
// Copyright © 2020 SP2. All rights reserved.
//
import XCTest
class GoldWarsUITests: XCTestCase {
override func setUp() {
// 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 tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// 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() {
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) {
// This measures how long it takes to launch your application.
measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) {
XCUIApplication().launch()
}
}
}
}

View File

@ -0,0 +1,22 @@
<?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>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>