├── LICENSE
├── Media
├── 00.png
├── 01.png
├── 02.png
├── 03.png
├── 04.png
├── 05.png
├── 06.png
└── screenshots
│ ├── 0Login.png
│ ├── 0Login_framed.png
│ ├── 1MainScreen.png
│ ├── 1MainScreen_framed.png
│ ├── 2Gameplay.png
│ ├── 2Gameplay_framed.png
│ ├── 3Gameplay.png
│ ├── 3Gameplay_framed.png
│ ├── 4Gameplay.png
│ ├── 4Gameplay_framed.png
│ ├── 5Leaderboards.png
│ ├── 5Leaderboards_framed.png
│ ├── 6RulesGame.png
│ ├── 6RulesGame_framed.png
│ ├── 7AboutGame.png
│ └── 7AboutGame_framed.png
├── README.md
└── Source
├── .gitignore
├── .swift-version
├── .swiftlint.yml
├── Gemfile
├── Gemfile.lock
├── HardcoreTap.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── swiftpm
│ │ └── Package.resolved
└── xcshareddata
│ └── xcschemes
│ ├── HardcoreTap for Watch.xcscheme
│ └── HardcoreTap.xcscheme
├── HardcoreTap
├── AppDelegate.swift
├── Classes
│ └── PresentationLayer
│ │ ├── Base
│ │ └── BaseTabView.swift
│ │ ├── Common
│ │ ├── Styles
│ │ │ └── Colors.swift
│ │ └── UIElements
│ │ │ ├── ButtonLinkView.swift
│ │ │ └── Message.swift
│ │ └── Stories
│ │ ├── AboutGame
│ │ └── AboutGameView.swift
│ │ ├── Game
│ │ └── GameView.swift
│ │ ├── Leaderboard
│ │ └── LeaderboardView.swift
│ │ ├── Login
│ │ └── LoginView.swift
│ │ ├── Rules
│ │ ├── RuleView.swift
│ │ └── RulesView.swift
│ │ └── Settings
│ │ └── SettingsView.swift
├── DEPRECATED
│ ├── AboutGameViewController.swift
│ ├── Base.lproj
│ │ └── Main.storyboard
│ ├── BaseTabBarController.swift
│ ├── GameViewController.swift
│ ├── LeadearBoardViewController.swift
│ ├── LoginViewController.swift
│ ├── RulesViewController.swift
│ ├── SettingsCell.swift
│ ├── SettingsViewController.swift
│ ├── UIButtonExtension.swift
│ └── ru.lproj
│ │ └── Main.strings
├── HardcoreTap.entitlements
├── Launch
│ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ └── ru.lproj
│ │ └── LaunchScreen.strings
├── Resources
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-Small@2x-1.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ ├── Icon-Spotlight-40.png
│ │ │ ├── Icon-Spotlight-40@2x-1.png
│ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ └── Icon-Spotlight-40@3x.png
│ │ ├── Colors
│ │ │ ├── Contents.json
│ │ │ ├── blueBlue.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── blueberry.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── darkSkyBlue.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── lipstick.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── robinSEgg.colorset
│ │ │ │ └── Contents.json
│ │ │ └── yellowishGreen.colorset
│ │ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── icon.imageset
│ │ │ ├── Contents.json
│ │ │ ├── icon.png
│ │ │ ├── icon@2x.png
│ │ │ └── icon@3x.png
│ │ ├── iconRules.imageset
│ │ │ ├── Contents.json
│ │ │ ├── iconRules.png
│ │ │ ├── iconRules@2x.png
│ │ │ └── iconRules@3x.png
│ │ ├── rule1.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rules_1.png
│ │ │ ├── rules_1@2x.png
│ │ │ └── rules_1@3x.png
│ │ ├── rule2.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rules_2.png
│ │ │ ├── rules_2@2x.png
│ │ │ └── rules_2@3x.png
│ │ └── rule3.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rules_3.png
│ │ │ ├── rules_3@2x.png
│ │ │ └── rules_3@3x.png
│ ├── Audio
│ │ └── bmp60.mp3
│ └── Translations
│ │ ├── en.lproj
│ │ └── Localizable.strings
│ │ └── ru.lproj
│ │ └── Localizable.strings
├── SceneDelegate.swift
└── Supporting files
│ ├── GoogleService-Info.plist
│ └── Info.plist
└── fastlane
├── Appfile
├── Fastfile
├── Matchfile
└── Snapfile
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Bogdan Bystritskiy
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Media/00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/00.png
--------------------------------------------------------------------------------
/Media/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/01.png
--------------------------------------------------------------------------------
/Media/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/02.png
--------------------------------------------------------------------------------
/Media/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/03.png
--------------------------------------------------------------------------------
/Media/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/04.png
--------------------------------------------------------------------------------
/Media/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/05.png
--------------------------------------------------------------------------------
/Media/06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/06.png
--------------------------------------------------------------------------------
/Media/screenshots/0Login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/0Login.png
--------------------------------------------------------------------------------
/Media/screenshots/0Login_framed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/0Login_framed.png
--------------------------------------------------------------------------------
/Media/screenshots/1MainScreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/1MainScreen.png
--------------------------------------------------------------------------------
/Media/screenshots/1MainScreen_framed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/1MainScreen_framed.png
--------------------------------------------------------------------------------
/Media/screenshots/2Gameplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/2Gameplay.png
--------------------------------------------------------------------------------
/Media/screenshots/2Gameplay_framed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/2Gameplay_framed.png
--------------------------------------------------------------------------------
/Media/screenshots/3Gameplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/3Gameplay.png
--------------------------------------------------------------------------------
/Media/screenshots/3Gameplay_framed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/3Gameplay_framed.png
--------------------------------------------------------------------------------
/Media/screenshots/4Gameplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/4Gameplay.png
--------------------------------------------------------------------------------
/Media/screenshots/4Gameplay_framed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/4Gameplay_framed.png
--------------------------------------------------------------------------------
/Media/screenshots/5Leaderboards.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/5Leaderboards.png
--------------------------------------------------------------------------------
/Media/screenshots/5Leaderboards_framed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/5Leaderboards_framed.png
--------------------------------------------------------------------------------
/Media/screenshots/6RulesGame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/6RulesGame.png
--------------------------------------------------------------------------------
/Media/screenshots/6RulesGame_framed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/6RulesGame_framed.png
--------------------------------------------------------------------------------
/Media/screenshots/7AboutGame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/7AboutGame.png
--------------------------------------------------------------------------------
/Media/screenshots/7AboutGame_framed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Media/screenshots/7AboutGame_framed.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # HardcoreTap
2 | 
3 | 
4 |
5 | _The game is implemented on the hackathon from Swiftbook.ru (2nd place)_
6 |
7 | ### Road map
8 | - [ ] Convert project to SwiftUI and Combine
9 | - [ ] New design
10 | - [ ] Add support iPadOS
11 | - [ ] Add support macOS
12 | - [ ] Add support watchOS
13 |
14 |
15 | ### About game
16 | You must be able to kill time. “HardcoreTap” helps to kill time, not in vain, but with benefit. The player receives benefit in the form of training of attentiveness, rhythm and perseverance. Without this, it would not be possible to top the players rating. The main task of the player is to tap on the screen exactly 1 time per second with an accuracy of hundredths. (01:00, 02:00, 03:00, etc.). At first, the game is not so cruel to the player and makes mistakes of several hundredths. But gradually the error decreases and the player must be extremely accurate. Otherwise, he will lose and will have to start the game again.
17 |
18 | ### Screenshots
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Source/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 | vendor/
9 |
10 | ## Various settings
11 | *.pbxuser
12 | !default.pbxuser
13 | *.mode1v3
14 | !default.mode1v3
15 | *.mode2v3
16 | !default.mode2v3
17 | *.perspectivev3
18 | !default.perspectivev3
19 | xcuserdata/
20 | IDEWorkspaceChecks.plist
21 |
22 | ## Other
23 | *.moved-aside
24 | *.xccheckout
25 | *.xcscmblueprint
26 | *.xcbkptlist
27 |
28 | ## Obj-C/Swift specific
29 | *.hmap
30 | *.ipa
31 | *.dSYM.zip
32 | *.dSYM
33 |
34 | ## Playgrounds
35 | timeline.xctimeline
36 | playground.xcworkspace
37 |
38 | # Swift Package Manager
39 | #
40 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
41 | # Packages/
42 | # Package.pins
43 | # Package.resolved
44 | .build/
45 |
46 | # CocoaPods
47 | #
48 | # We recommend against adding the Pods directory to your .gitignore. However
49 | # you should judge for yourself, the pros and cons are mentioned at:
50 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
51 | #
52 | Pods/
53 |
54 | #
55 | # Add this line if you want to avoid checking in source code from the Xcode workspace
56 | # *.xcworkspace
57 |
58 | # Carthage
59 | #
60 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
61 | # Carthage/Checkouts
62 |
63 | Carthage/Build
64 |
65 | # fastlane
66 | #
67 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
68 | # screenshots whenever they are needed.
69 | # For more information about the recommended setup visit:
70 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
71 |
72 | fastlane/report.xml
73 | fastlane/Preview.html
74 | fastlane/screenshots/**/*.png
75 | fastlane/test_output
76 |
77 | # Code Injection
78 | #
79 | # After new code Injection tools there's a generated folder /iOSInjectionProject
80 | # https://github.com/johnno1962/injectionforxcode
81 |
82 | iOSInjectionProject/
83 |
84 | # R.swift
85 | **/R.generated.swift
86 |
--------------------------------------------------------------------------------
/Source/.swift-version:
--------------------------------------------------------------------------------
1 | 5.0
--------------------------------------------------------------------------------
/Source/.swiftlint.yml:
--------------------------------------------------------------------------------
1 | whitelist_rules:
2 | - closure_end_indentation
3 | - closure_spacing
4 | - colon
5 | - control_statement
6 | - empty_enum_arguments
7 | - empty_parentheses_with_trailing_closure
8 | - fatal_error_message
9 | - force_try
10 | - force_unwrapping
11 | - implicitly_unwrapped_optional
12 | - legacy_cggeometry_functions
13 | - legacy_constant
14 | - legacy_constructor
15 | - legacy_nsgeometry_functions
16 | - operator_usage_whitespace
17 | - redundant_string_enum_value
18 | - redundant_void_return
19 | - return_arrow_whitespace
20 | - trailing_newline
21 | - type_name
22 | - unneeded_parentheses_in_closure_argument
23 | - unused_closure_parameter
24 | - vertical_whitespace
25 | - void_return
26 |
27 | excluded:
28 | - Carthage
29 | - Pods
30 | - HardcoreTap/Resources/Generated/R.generated.swift
31 |
32 | identifier_name:
33 | excluded:
34 | - id
35 | - to
36 | - in
37 | - at
38 | - of
39 | - up
40 |
41 | colon:
42 | apply_to_dictionaries: false
43 |
44 | indentation: 2
45 |
46 | custom_rules:
47 | no_objcMembers:
48 | name: "@objcMembers"
49 | regex: "@objcMembers"
50 | message: "Explicitly use @objc on each member you want to expose to Objective-C"
51 | severity: error
52 |
--------------------------------------------------------------------------------
/Source/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'fastlane'
--------------------------------------------------------------------------------
/Source/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | CFPropertyList (3.0.1)
5 | activesupport (4.2.11.1)
6 | i18n (~> 0.7)
7 | minitest (~> 5.1)
8 | thread_safe (~> 0.3, >= 0.3.4)
9 | tzinfo (~> 1.1)
10 | addressable (2.8.0)
11 | public_suffix (>= 2.0.2, < 5.0)
12 | algoliasearch (1.27.1)
13 | httpclient (~> 2.8, >= 2.8.3)
14 | json (>= 1.5.1)
15 | atomos (0.1.3)
16 | babosa (1.0.3)
17 | claide (1.0.3)
18 | cocoapods (1.8.3)
19 | activesupport (>= 4.0.2, < 5)
20 | claide (>= 1.0.2, < 2.0)
21 | cocoapods-core (= 1.8.3)
22 | cocoapods-deintegrate (>= 1.0.3, < 2.0)
23 | cocoapods-downloader (>= 1.2.2, < 2.0)
24 | cocoapods-plugins (>= 1.0.0, < 2.0)
25 | cocoapods-search (>= 1.0.0, < 2.0)
26 | cocoapods-stats (>= 1.0.0, < 2.0)
27 | cocoapods-trunk (>= 1.4.0, < 2.0)
28 | cocoapods-try (>= 1.1.0, < 2.0)
29 | colored2 (~> 3.1)
30 | escape (~> 0.0.4)
31 | fourflusher (>= 2.3.0, < 3.0)
32 | gh_inspector (~> 1.0)
33 | molinillo (~> 0.6.6)
34 | nap (~> 1.0)
35 | ruby-macho (~> 1.4)
36 | xcodeproj (>= 1.11.1, < 2.0)
37 | cocoapods-core (1.8.3)
38 | activesupport (>= 4.0.2, < 6)
39 | algoliasearch (~> 1.0)
40 | concurrent-ruby (~> 1.1)
41 | fuzzy_match (~> 2.0.4)
42 | nap (~> 1.0)
43 | cocoapods-deintegrate (1.0.4)
44 | cocoapods-downloader (1.6.3)
45 | cocoapods-plugins (1.0.0)
46 | nap
47 | cocoapods-search (1.0.0)
48 | cocoapods-stats (1.1.0)
49 | cocoapods-trunk (1.4.1)
50 | nap (>= 0.8, < 2.0)
51 | netrc (~> 0.11)
52 | cocoapods-try (1.1.0)
53 | colored (1.2)
54 | colored2 (3.1.2)
55 | commander-fastlane (4.4.6)
56 | highline (~> 1.7.2)
57 | concurrent-ruby (1.1.5)
58 | declarative (0.0.10)
59 | declarative-option (0.1.0)
60 | digest-crc (0.4.1)
61 | domain_name (0.5.20190701)
62 | unf (>= 0.0.5, < 1.0.0)
63 | dotenv (2.7.5)
64 | emoji_regex (1.0.1)
65 | escape (0.0.4)
66 | excon (0.71.0)
67 | faraday (0.15.4)
68 | multipart-post (>= 1.2, < 3)
69 | faraday-cookie_jar (0.0.6)
70 | faraday (>= 0.7.4)
71 | http-cookie (~> 1.0.0)
72 | faraday_middleware (0.13.1)
73 | faraday (>= 0.7.4, < 1.0)
74 | fastimage (2.1.7)
75 | fastlane (2.133.0)
76 | CFPropertyList (>= 2.3, < 4.0.0)
77 | addressable (>= 2.3, < 3.0.0)
78 | babosa (>= 1.0.2, < 2.0.0)
79 | bundler (>= 1.12.0, < 3.0.0)
80 | colored
81 | commander-fastlane (>= 4.4.6, < 5.0.0)
82 | dotenv (>= 2.1.1, < 3.0.0)
83 | emoji_regex (>= 0.1, < 2.0)
84 | excon (>= 0.45.0, < 1.0.0)
85 | faraday (< 0.16.0)
86 | faraday-cookie_jar (~> 0.0.6)
87 | faraday_middleware (< 0.16.0)
88 | fastimage (>= 2.1.0, < 3.0.0)
89 | gh_inspector (>= 1.1.2, < 2.0.0)
90 | google-api-client (>= 0.21.2, < 0.24.0)
91 | google-cloud-storage (>= 1.15.0, < 2.0.0)
92 | highline (>= 1.7.2, < 2.0.0)
93 | json (< 3.0.0)
94 | jwt (~> 2.1.0)
95 | mini_magick (>= 4.9.4, < 5.0.0)
96 | multi_xml (~> 0.5)
97 | multipart-post (~> 2.0.0)
98 | plist (>= 3.1.0, < 4.0.0)
99 | public_suffix (~> 2.0.0)
100 | rubyzip (>= 1.3.0, < 2.0.0)
101 | security (= 0.1.3)
102 | simctl (~> 1.6.3)
103 | slack-notifier (>= 2.0.0, < 3.0.0)
104 | terminal-notifier (>= 2.0.0, < 3.0.0)
105 | terminal-table (>= 1.4.5, < 2.0.0)
106 | tty-screen (>= 0.6.3, < 1.0.0)
107 | tty-spinner (>= 0.8.0, < 1.0.0)
108 | word_wrap (~> 1.0.0)
109 | xcodeproj (>= 1.8.1, < 2.0.0)
110 | xcpretty (~> 0.3.0)
111 | xcpretty-travis-formatter (>= 0.0.3)
112 | fourflusher (2.3.1)
113 | fuzzy_match (2.0.4)
114 | gh_inspector (1.1.3)
115 | google-api-client (0.23.9)
116 | addressable (~> 2.5, >= 2.5.1)
117 | googleauth (>= 0.5, < 0.7.0)
118 | httpclient (>= 2.8.1, < 3.0)
119 | mime-types (~> 3.0)
120 | representable (~> 3.0)
121 | retriable (>= 2.0, < 4.0)
122 | signet (~> 0.9)
123 | google-cloud-core (1.3.1)
124 | google-cloud-env (~> 1.0)
125 | google-cloud-env (1.2.1)
126 | faraday (~> 0.11)
127 | google-cloud-storage (1.16.0)
128 | digest-crc (~> 0.4)
129 | google-api-client (~> 0.23)
130 | google-cloud-core (~> 1.2)
131 | googleauth (>= 0.6.2, < 0.10.0)
132 | googleauth (0.6.7)
133 | faraday (~> 0.12)
134 | jwt (>= 1.4, < 3.0)
135 | memoist (~> 0.16)
136 | multi_json (~> 1.11)
137 | os (>= 0.9, < 2.0)
138 | signet (~> 0.7)
139 | highline (1.7.10)
140 | http-cookie (1.0.3)
141 | domain_name (~> 0.5)
142 | httpclient (2.8.3)
143 | i18n (0.9.5)
144 | concurrent-ruby (~> 1.0)
145 | json (2.3.1)
146 | jwt (2.1.0)
147 | memoist (0.16.0)
148 | mime-types (3.3)
149 | mime-types-data (~> 3.2015)
150 | mime-types-data (3.2019.0904)
151 | mini_magick (4.9.5)
152 | minitest (5.12.2)
153 | molinillo (0.6.6)
154 | multi_json (1.13.1)
155 | multi_xml (0.6.0)
156 | multipart-post (2.0.0)
157 | nanaimo (0.2.6)
158 | nap (1.1.0)
159 | naturally (2.2.0)
160 | netrc (0.11.0)
161 | os (1.0.1)
162 | plist (3.5.0)
163 | public_suffix (2.0.5)
164 | representable (3.0.4)
165 | declarative (< 0.1.0)
166 | declarative-option (< 0.2.0)
167 | uber (< 0.2.0)
168 | retriable (3.1.2)
169 | rouge (2.0.7)
170 | ruby-macho (1.4.0)
171 | rubyzip (1.3.0)
172 | security (0.1.3)
173 | signet (0.11.0)
174 | addressable (~> 2.3)
175 | faraday (~> 0.9)
176 | jwt (>= 1.5, < 3.0)
177 | multi_json (~> 1.10)
178 | simctl (1.6.6)
179 | CFPropertyList
180 | naturally
181 | slack-notifier (2.3.2)
182 | terminal-notifier (2.0.0)
183 | terminal-table (1.8.0)
184 | unicode-display_width (~> 1.1, >= 1.1.1)
185 | thread_safe (0.3.6)
186 | tty-cursor (0.7.0)
187 | tty-screen (0.7.0)
188 | tty-spinner (0.9.1)
189 | tty-cursor (~> 0.7)
190 | tzinfo (1.2.10)
191 | thread_safe (~> 0.1)
192 | uber (0.1.0)
193 | unf (0.1.4)
194 | unf_ext
195 | unf_ext (0.0.7.6)
196 | unicode-display_width (1.6.0)
197 | word_wrap (1.0.0)
198 | xcodeproj (1.12.0)
199 | CFPropertyList (>= 2.3.3, < 4.0)
200 | atomos (~> 0.1.3)
201 | claide (>= 1.0.2, < 2.0)
202 | colored2 (~> 3.1)
203 | nanaimo (~> 0.2.6)
204 | xcpretty (0.3.0)
205 | rouge (~> 2.0.7)
206 | xcpretty-travis-formatter (1.0.0)
207 | xcpretty (~> 0.2, >= 0.0.7)
208 |
209 | PLATFORMS
210 | ruby
211 |
212 | DEPENDENCIES
213 | cocoapods
214 | fastlane
215 |
216 | BUNDLED WITH
217 | 2.0.2
218 |
--------------------------------------------------------------------------------
/Source/HardcoreTap.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 52;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 3634F807235894840053699F /* AboutGameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3634F806235894840053699F /* AboutGameView.swift */; };
11 | 3644DC2323A3D1A500D4CAB7 /* ButtonLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3644DC2223A3D1A500D4CAB7 /* ButtonLinkView.swift */; };
12 | 3644DC2523A3D1C400D4CAB7 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3644DC2423A3D1C400D4CAB7 /* SettingsView.swift */; };
13 | 36668D0A235734D800EEC8BC /* LeaderboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36668D09235734D800EEC8BC /* LeaderboardView.swift */; };
14 | 36668D0C235739FF00EEC8BC /* RulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36668D0B235739FF00EEC8BC /* RulesView.swift */; };
15 | 369243452350D4D800EA40C9 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 369243442350D4D800EA40C9 /* SceneDelegate.swift */; };
16 | 369243472350D98B00EA40C9 /* BaseTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 369243462350D98B00EA40C9 /* BaseTabView.swift */; };
17 | 36B7A872235F27ED00CBCE24 /* RuleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36B7A871235F27ED00CBCE24 /* RuleView.swift */; };
18 | 36CEAB2B234DFD6800812E09 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36CEAB2A234DFD6800812E09 /* LoginView.swift */; };
19 | 36D756BD2374646F00F6791D /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36D756BC2374646F00F6791D /* GameView.swift */; };
20 | 36D756C02374654800F6791D /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 36D756C22374654800F6791D /* Localizable.strings */; };
21 | 3C092B061FB771EF0019687C /* RulesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C092B051FB771EF0019687C /* RulesViewController.swift */; };
22 | 3C092B0A1FB774010019687C /* BaseTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C092B091FB774010019687C /* BaseTabBarController.swift */; };
23 | 3CA83B8B1FBA5D7B0046ED8D /* bmp60.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 3CA83B8A1FBA5D7B0046ED8D /* bmp60.mp3 */; };
24 | 3CE12BFD1FB62FED00945352 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CE12BFC1FB62FED00945352 /* AppDelegate.swift */; };
25 | 3CE12BFF1FB62FEE00945352 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CE12BFE1FB62FEE00945352 /* GameViewController.swift */; };
26 | 3CE12C021FB62FEE00945352 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3CE12C001FB62FEE00945352 /* Main.storyboard */; };
27 | 3CE12C041FB62FEE00945352 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3CE12C031FB62FEE00945352 /* Assets.xcassets */; };
28 | 3CE12C071FB62FEE00945352 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3CE12C051FB62FEE00945352 /* LaunchScreen.storyboard */; };
29 | 3CE12C111FB643CB00945352 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CE12C101FB643CB00945352 /* LoginViewController.swift */; };
30 | 3CE12C151FB663A000945352 /* LeadearBoardViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CE12C141FB663A000945352 /* LeadearBoardViewController.swift */; };
31 | 739F733F200B98FE0073C198 /* SettingsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 739F733E200B98FE0073C198 /* SettingsCell.swift */; };
32 | 73BC136B1FB876A200BDB8B0 /* UIButtonExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73BC136A1FB876A200BDB8B0 /* UIButtonExtension.swift */; };
33 | 8D0B2BED1FC89B3700CE102C /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0B2BEC1FC89B3600CE102C /* SettingsViewController.swift */; };
34 | 8D0B2BF11FC89BA400CE102C /* AboutGameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0B2BF01FC89BA400CE102C /* AboutGameViewController.swift */; };
35 | 8D4E36BD2008CC8200508D6B /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D4E36BC2008CC8200508D6B /* GoogleService-Info.plist */; };
36 | 8D90EB9820B96F44002A3711 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D90EB9720B96F44002A3711 /* StoreKit.framework */; };
37 | 8D90EB9A20B981B1002A3711 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D90EB9920B981B1002A3711 /* GameKit.framework */; };
38 | FDFF966428B3F05200A68F95 /* SwiftEntryKit in Frameworks */ = {isa = PBXBuildFile; productRef = FDFF966328B3F05200A68F95 /* SwiftEntryKit */; };
39 | FDFFEFE2227831AD00AB8ACA /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDFFEFE1227831AD00AB8ACA /* Message.swift */; };
40 | FDFFEFE4227832DD00AB8ACA /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDFFEFE3227832DD00AB8ACA /* Colors.swift */; };
41 | /* End PBXBuildFile section */
42 |
43 | /* Begin PBXCopyFilesBuildPhase section */
44 | 36409E522359D842002AB92F /* Embed Watch Content */ = {
45 | isa = PBXCopyFilesBuildPhase;
46 | buildActionMask = 2147483647;
47 | dstPath = "$(CONTENTS_FOLDER_PATH)/Watch";
48 | dstSubfolderSpec = 16;
49 | files = (
50 | );
51 | name = "Embed Watch Content";
52 | runOnlyForDeploymentPostprocessing = 0;
53 | };
54 | /* End PBXCopyFilesBuildPhase section */
55 |
56 | /* Begin PBXFileReference section */
57 | 3634F806235894840053699F /* AboutGameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutGameView.swift; sourceTree = ""; };
58 | 3644DC2223A3D1A500D4CAB7 /* ButtonLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonLinkView.swift; sourceTree = ""; };
59 | 3644DC2423A3D1C400D4CAB7 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; };
60 | 36668D09235734D800EEC8BC /* LeaderboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeaderboardView.swift; sourceTree = ""; };
61 | 36668D0B235739FF00EEC8BC /* RulesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulesView.swift; sourceTree = ""; };
62 | 369243442350D4D800EA40C9 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
63 | 369243462350D98B00EA40C9 /* BaseTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTabView.swift; sourceTree = ""; };
64 | 369F7410234DD3010062A29E /* HardcoreTap.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = HardcoreTap.entitlements; sourceTree = ""; };
65 | 36B7A871235F27ED00CBCE24 /* RuleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleView.swift; sourceTree = ""; };
66 | 36CEAB2A234DFD6800812E09 /* LoginView.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; tabWidth = 4; };
67 | 36D756BC2374646F00F6791D /* GameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameView.swift; sourceTree = ""; };
68 | 36D756C12374654800F6791D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };
69 | 36E9C9A12384466100D88217 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Main.strings; sourceTree = ""; };
70 | 36E9C9A22384466100D88217 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/LaunchScreen.strings; sourceTree = ""; };
71 | 36E9C9A52384466100D88217 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; };
72 | 3C092B051FB771EF0019687C /* RulesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulesViewController.swift; sourceTree = ""; };
73 | 3C092B091FB774010019687C /* BaseTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTabBarController.swift; sourceTree = ""; };
74 | 3CA83B8A1FBA5D7B0046ED8D /* bmp60.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = bmp60.mp3; sourceTree = ""; };
75 | 3CE12BF91FB62FED00945352 /* HardcoreTap.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HardcoreTap.app; sourceTree = BUILT_PRODUCTS_DIR; };
76 | 3CE12BFC1FB62FED00945352 /* AppDelegate.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; tabWidth = 4; };
77 | 3CE12BFE1FB62FEE00945352 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; };
78 | 3CE12C011FB62FEE00945352 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
79 | 3CE12C031FB62FEE00945352 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
80 | 3CE12C061FB62FEE00945352 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
81 | 3CE12C081FB62FEE00945352 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
82 | 3CE12C101FB643CB00945352 /* LoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; };
83 | 3CE12C141FB663A000945352 /* LeadearBoardViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeadearBoardViewController.swift; sourceTree = ""; };
84 | 739F733E200B98FE0073C198 /* SettingsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsCell.swift; sourceTree = ""; };
85 | 73BC136A1FB876A200BDB8B0 /* UIButtonExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtension.swift; sourceTree = ""; };
86 | 8D0B2BEC1FC89B3600CE102C /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; };
87 | 8D0B2BF01FC89BA400CE102C /* AboutGameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutGameViewController.swift; sourceTree = ""; };
88 | 8D4E36BC2008CC8200508D6B /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
89 | 8D90EB9720B96F44002A3711 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
90 | 8D90EB9920B981B1002A3711 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
91 | FDFFEFE1227831AD00AB8ACA /* Message.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Message.swift; sourceTree = ""; };
92 | FDFFEFE3227832DD00AB8ACA /* Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = ""; };
93 | /* End PBXFileReference section */
94 |
95 | /* Begin PBXFrameworksBuildPhase section */
96 | 3CE12BF61FB62FED00945352 /* Frameworks */ = {
97 | isa = PBXFrameworksBuildPhase;
98 | buildActionMask = 2147483647;
99 | files = (
100 | 8D90EB9A20B981B1002A3711 /* GameKit.framework in Frameworks */,
101 | 8D90EB9820B96F44002A3711 /* StoreKit.framework in Frameworks */,
102 | FDFF966428B3F05200A68F95 /* SwiftEntryKit in Frameworks */,
103 | );
104 | runOnlyForDeploymentPostprocessing = 0;
105 | };
106 | /* End PBXFrameworksBuildPhase section */
107 |
108 | /* Begin PBXGroup section */
109 | 36409E122359C9BD002AB92F /* DEPRECATED */ = {
110 | isa = PBXGroup;
111 | children = (
112 | 3CE12BFE1FB62FEE00945352 /* GameViewController.swift */,
113 | 3CE12C141FB663A000945352 /* LeadearBoardViewController.swift */,
114 | 8D0B2BEC1FC89B3600CE102C /* SettingsViewController.swift */,
115 | 8D0B2BF01FC89BA400CE102C /* AboutGameViewController.swift */,
116 | 3CE12C101FB643CB00945352 /* LoginViewController.swift */,
117 | 3C092B091FB774010019687C /* BaseTabBarController.swift */,
118 | 3C092B051FB771EF0019687C /* RulesViewController.swift */,
119 | 739F733E200B98FE0073C198 /* SettingsCell.swift */,
120 | 73BC136A1FB876A200BDB8B0 /* UIButtonExtension.swift */,
121 | 3CE12C001FB62FEE00945352 /* Main.storyboard */,
122 | );
123 | path = DEPRECATED;
124 | sourceTree = "";
125 | };
126 | 36D756C32374655100F6791D /* Translations */ = {
127 | isa = PBXGroup;
128 | children = (
129 | 36D756C22374654800F6791D /* Localizable.strings */,
130 | );
131 | path = Translations;
132 | sourceTree = "";
133 | };
134 | 3C52CAE71FBBC873004E31B8 /* Audio */ = {
135 | isa = PBXGroup;
136 | children = (
137 | 3CA83B8A1FBA5D7B0046ED8D /* bmp60.mp3 */,
138 | );
139 | path = Audio;
140 | sourceTree = "";
141 | };
142 | 3CE12BF01FB62FED00945352 = {
143 | isa = PBXGroup;
144 | children = (
145 | 3CE12BFB1FB62FED00945352 /* HardcoreTap */,
146 | 3CE12BFA1FB62FED00945352 /* Products */,
147 | A1D86CDE2B60F3C896ECD78A /* Frameworks */,
148 | );
149 | indentWidth = 4;
150 | sourceTree = "";
151 | tabWidth = 4;
152 | };
153 | 3CE12BFA1FB62FED00945352 /* Products */ = {
154 | isa = PBXGroup;
155 | children = (
156 | 3CE12BF91FB62FED00945352 /* HardcoreTap.app */,
157 | );
158 | name = Products;
159 | sourceTree = "";
160 | };
161 | 3CE12BFB1FB62FED00945352 /* HardcoreTap */ = {
162 | isa = PBXGroup;
163 | children = (
164 | 36409E122359C9BD002AB92F /* DEPRECATED */,
165 | 369F7410234DD3010062A29E /* HardcoreTap.entitlements */,
166 | 3CE12BFC1FB62FED00945352 /* AppDelegate.swift */,
167 | 369243442350D4D800EA40C9 /* SceneDelegate.swift */,
168 | FD1631532272F1E30040FC3F /* Classes */,
169 | FD1631552272F1F40040FC3F /* Launch */,
170 | FD1631562272F1FD0040FC3F /* Resources */,
171 | 8D4D773C20F10AF4001F3E91 /* Supporting files */,
172 | );
173 | path = HardcoreTap;
174 | sourceTree = "";
175 | };
176 | 8D4D773C20F10AF4001F3E91 /* Supporting files */ = {
177 | isa = PBXGroup;
178 | children = (
179 | 3CE12C081FB62FEE00945352 /* Info.plist */,
180 | 8D4E36BC2008CC8200508D6B /* GoogleService-Info.plist */,
181 | );
182 | path = "Supporting files";
183 | sourceTree = "";
184 | };
185 | 8D4D773E20F10B9E001F3E91 /* Stories */ = {
186 | isa = PBXGroup;
187 | children = (
188 | 8D4D774820F10D6B001F3E91 /* Login */,
189 | 8D4D774220F10D08001F3E91 /* Game */,
190 | 8D4D774420F10D20001F3E91 /* Leaderboard */,
191 | 8D4D774720F10D52001F3E91 /* AboutGame */,
192 | 8D4D774620F10D4E001F3E91 /* Settings */,
193 | 8D4D774520F10D29001F3E91 /* Rules */,
194 | );
195 | path = Stories;
196 | sourceTree = "";
197 | };
198 | 8D4D774220F10D08001F3E91 /* Game */ = {
199 | isa = PBXGroup;
200 | children = (
201 | 36D756BC2374646F00F6791D /* GameView.swift */,
202 | );
203 | path = Game;
204 | sourceTree = "";
205 | };
206 | 8D4D774420F10D20001F3E91 /* Leaderboard */ = {
207 | isa = PBXGroup;
208 | children = (
209 | 36668D09235734D800EEC8BC /* LeaderboardView.swift */,
210 | );
211 | path = Leaderboard;
212 | sourceTree = "";
213 | };
214 | 8D4D774520F10D29001F3E91 /* Rules */ = {
215 | isa = PBXGroup;
216 | children = (
217 | 36B7A871235F27ED00CBCE24 /* RuleView.swift */,
218 | 36668D0B235739FF00EEC8BC /* RulesView.swift */,
219 | );
220 | path = Rules;
221 | sourceTree = "";
222 | };
223 | 8D4D774620F10D4E001F3E91 /* Settings */ = {
224 | isa = PBXGroup;
225 | children = (
226 | 3644DC2423A3D1C400D4CAB7 /* SettingsView.swift */,
227 | );
228 | path = Settings;
229 | sourceTree = "";
230 | };
231 | 8D4D774720F10D52001F3E91 /* AboutGame */ = {
232 | isa = PBXGroup;
233 | children = (
234 | 3634F806235894840053699F /* AboutGameView.swift */,
235 | );
236 | path = AboutGame;
237 | sourceTree = "";
238 | };
239 | 8D4D774820F10D6B001F3E91 /* Login */ = {
240 | isa = PBXGroup;
241 | children = (
242 | 36CEAB2A234DFD6800812E09 /* LoginView.swift */,
243 | );
244 | path = Login;
245 | sourceTree = "";
246 | };
247 | A1D86CDE2B60F3C896ECD78A /* Frameworks */ = {
248 | isa = PBXGroup;
249 | children = (
250 | 8D90EB9920B981B1002A3711 /* GameKit.framework */,
251 | 8D90EB9720B96F44002A3711 /* StoreKit.framework */,
252 | );
253 | name = Frameworks;
254 | sourceTree = "";
255 | };
256 | FD1631532272F1E30040FC3F /* Classes */ = {
257 | isa = PBXGroup;
258 | children = (
259 | FD1631582272F2350040FC3F /* PresentationLayer */,
260 | );
261 | path = Classes;
262 | sourceTree = "";
263 | };
264 | FD1631552272F1F40040FC3F /* Launch */ = {
265 | isa = PBXGroup;
266 | children = (
267 | 3CE12C051FB62FEE00945352 /* LaunchScreen.storyboard */,
268 | );
269 | path = Launch;
270 | sourceTree = "";
271 | };
272 | FD1631562272F1FD0040FC3F /* Resources */ = {
273 | isa = PBXGroup;
274 | children = (
275 | 36D756C32374655100F6791D /* Translations */,
276 | 3C52CAE71FBBC873004E31B8 /* Audio */,
277 | 3CE12C031FB62FEE00945352 /* Assets.xcassets */,
278 | );
279 | path = Resources;
280 | sourceTree = "";
281 | };
282 | FD1631582272F2350040FC3F /* PresentationLayer */ = {
283 | isa = PBXGroup;
284 | children = (
285 | FD1631592272F2400040FC3F /* Common */,
286 | FD16315C2272F29A0040FC3F /* Base */,
287 | 8D4D773E20F10B9E001F3E91 /* Stories */,
288 | );
289 | path = PresentationLayer;
290 | sourceTree = "";
291 | };
292 | FD1631592272F2400040FC3F /* Common */ = {
293 | isa = PBXGroup;
294 | children = (
295 | FD16315B2272F24E0040FC3F /* UIElements */,
296 | FD16315A2272F2470040FC3F /* Styles */,
297 | );
298 | path = Common;
299 | sourceTree = "";
300 | };
301 | FD16315A2272F2470040FC3F /* Styles */ = {
302 | isa = PBXGroup;
303 | children = (
304 | FDFFEFE3227832DD00AB8ACA /* Colors.swift */,
305 | );
306 | path = Styles;
307 | sourceTree = "";
308 | };
309 | FD16315B2272F24E0040FC3F /* UIElements */ = {
310 | isa = PBXGroup;
311 | children = (
312 | FDFFEFE1227831AD00AB8ACA /* Message.swift */,
313 | 3644DC2223A3D1A500D4CAB7 /* ButtonLinkView.swift */,
314 | );
315 | path = UIElements;
316 | sourceTree = "";
317 | };
318 | FD16315C2272F29A0040FC3F /* Base */ = {
319 | isa = PBXGroup;
320 | children = (
321 | 369243462350D98B00EA40C9 /* BaseTabView.swift */,
322 | );
323 | path = Base;
324 | sourceTree = "";
325 | };
326 | /* End PBXGroup section */
327 |
328 | /* Begin PBXNativeTarget section */
329 | 3CE12BF81FB62FED00945352 /* HardcoreTap */ = {
330 | isa = PBXNativeTarget;
331 | buildConfigurationList = 3CE12C0B1FB62FEE00945352 /* Build configuration list for PBXNativeTarget "HardcoreTap" */;
332 | buildPhases = (
333 | 3CE12BF51FB62FED00945352 /* Sources */,
334 | 3CE12BF61FB62FED00945352 /* Frameworks */,
335 | 3CE12BF71FB62FED00945352 /* Resources */,
336 | 36409E522359D842002AB92F /* Embed Watch Content */,
337 | );
338 | buildRules = (
339 | );
340 | dependencies = (
341 | );
342 | name = HardcoreTap;
343 | packageProductDependencies = (
344 | FDFF966328B3F05200A68F95 /* SwiftEntryKit */,
345 | );
346 | productName = TimeKillerApp;
347 | productReference = 3CE12BF91FB62FED00945352 /* HardcoreTap.app */;
348 | productType = "com.apple.product-type.application";
349 | };
350 | /* End PBXNativeTarget section */
351 |
352 | /* Begin PBXProject section */
353 | 3CE12BF11FB62FED00945352 /* Project object */ = {
354 | isa = PBXProject;
355 | attributes = {
356 | LastSwiftUpdateCheck = 1110;
357 | LastUpgradeCheck = 1340;
358 | ORGANIZATIONNAME = "Bogdan Bystritskiy";
359 | TargetAttributes = {
360 | 3CE12BF81FB62FED00945352 = {
361 | CreatedOnToolsVersion = 9.1;
362 | ProvisioningStyle = Automatic;
363 | SystemCapabilities = {
364 | com.apple.GameCenter.iOS = {
365 | enabled = 1;
366 | };
367 | com.apple.InAppPurchase = {
368 | enabled = 1;
369 | };
370 | };
371 | };
372 | };
373 | };
374 | buildConfigurationList = 3CE12BF41FB62FED00945352 /* Build configuration list for PBXProject "HardcoreTap" */;
375 | compatibilityVersion = "Xcode 8.0";
376 | developmentRegion = en;
377 | hasScannedForEncodings = 0;
378 | knownRegions = (
379 | en,
380 | Base,
381 | ru,
382 | );
383 | mainGroup = 3CE12BF01FB62FED00945352;
384 | packageReferences = (
385 | FDFF966228B3F05200A68F95 /* XCRemoteSwiftPackageReference "SwiftEntryKit" */,
386 | );
387 | productRefGroup = 3CE12BFA1FB62FED00945352 /* Products */;
388 | projectDirPath = "";
389 | projectRoot = "";
390 | targets = (
391 | 3CE12BF81FB62FED00945352 /* HardcoreTap */,
392 | );
393 | };
394 | /* End PBXProject section */
395 |
396 | /* Begin PBXResourcesBuildPhase section */
397 | 3CE12BF71FB62FED00945352 /* Resources */ = {
398 | isa = PBXResourcesBuildPhase;
399 | buildActionMask = 2147483647;
400 | files = (
401 | 8D4E36BD2008CC8200508D6B /* GoogleService-Info.plist in Resources */,
402 | 36D756C02374654800F6791D /* Localizable.strings in Resources */,
403 | 3CE12C071FB62FEE00945352 /* LaunchScreen.storyboard in Resources */,
404 | 3CE12C041FB62FEE00945352 /* Assets.xcassets in Resources */,
405 | 3CE12C021FB62FEE00945352 /* Main.storyboard in Resources */,
406 | 3CA83B8B1FBA5D7B0046ED8D /* bmp60.mp3 in Resources */,
407 | );
408 | runOnlyForDeploymentPostprocessing = 0;
409 | };
410 | /* End PBXResourcesBuildPhase section */
411 |
412 | /* Begin PBXSourcesBuildPhase section */
413 | 3CE12BF51FB62FED00945352 /* Sources */ = {
414 | isa = PBXSourcesBuildPhase;
415 | buildActionMask = 2147483647;
416 | files = (
417 | 369243472350D98B00EA40C9 /* BaseTabView.swift in Sources */,
418 | 3CE12C151FB663A000945352 /* LeadearBoardViewController.swift in Sources */,
419 | 3644DC2323A3D1A500D4CAB7 /* ButtonLinkView.swift in Sources */,
420 | 73BC136B1FB876A200BDB8B0 /* UIButtonExtension.swift in Sources */,
421 | FDFFEFE4227832DD00AB8ACA /* Colors.swift in Sources */,
422 | 3CE12BFF1FB62FEE00945352 /* GameViewController.swift in Sources */,
423 | 3634F807235894840053699F /* AboutGameView.swift in Sources */,
424 | 369243452350D4D800EA40C9 /* SceneDelegate.swift in Sources */,
425 | 3C092B0A1FB774010019687C /* BaseTabBarController.swift in Sources */,
426 | 3C092B061FB771EF0019687C /* RulesViewController.swift in Sources */,
427 | 36D756BD2374646F00F6791D /* GameView.swift in Sources */,
428 | 3CE12BFD1FB62FED00945352 /* AppDelegate.swift in Sources */,
429 | 3644DC2523A3D1C400D4CAB7 /* SettingsView.swift in Sources */,
430 | 36668D0A235734D800EEC8BC /* LeaderboardView.swift in Sources */,
431 | 36668D0C235739FF00EEC8BC /* RulesView.swift in Sources */,
432 | 3CE12C111FB643CB00945352 /* LoginViewController.swift in Sources */,
433 | 36B7A872235F27ED00CBCE24 /* RuleView.swift in Sources */,
434 | 8D0B2BF11FC89BA400CE102C /* AboutGameViewController.swift in Sources */,
435 | FDFFEFE2227831AD00AB8ACA /* Message.swift in Sources */,
436 | 8D0B2BED1FC89B3700CE102C /* SettingsViewController.swift in Sources */,
437 | 36CEAB2B234DFD6800812E09 /* LoginView.swift in Sources */,
438 | 739F733F200B98FE0073C198 /* SettingsCell.swift in Sources */,
439 | );
440 | runOnlyForDeploymentPostprocessing = 0;
441 | };
442 | /* End PBXSourcesBuildPhase section */
443 |
444 | /* Begin PBXVariantGroup section */
445 | 36D756C22374654800F6791D /* Localizable.strings */ = {
446 | isa = PBXVariantGroup;
447 | children = (
448 | 36D756C12374654800F6791D /* en */,
449 | 36E9C9A52384466100D88217 /* ru */,
450 | );
451 | name = Localizable.strings;
452 | sourceTree = "";
453 | };
454 | 3CE12C001FB62FEE00945352 /* Main.storyboard */ = {
455 | isa = PBXVariantGroup;
456 | children = (
457 | 3CE12C011FB62FEE00945352 /* Base */,
458 | 36E9C9A12384466100D88217 /* ru */,
459 | );
460 | name = Main.storyboard;
461 | sourceTree = "";
462 | };
463 | 3CE12C051FB62FEE00945352 /* LaunchScreen.storyboard */ = {
464 | isa = PBXVariantGroup;
465 | children = (
466 | 3CE12C061FB62FEE00945352 /* Base */,
467 | 36E9C9A22384466100D88217 /* ru */,
468 | );
469 | name = LaunchScreen.storyboard;
470 | sourceTree = "";
471 | };
472 | /* End PBXVariantGroup section */
473 |
474 | /* Begin XCBuildConfiguration section */
475 | 3CE12C091FB62FEE00945352 /* Debug */ = {
476 | isa = XCBuildConfiguration;
477 | buildSettings = {
478 | ALWAYS_SEARCH_USER_PATHS = NO;
479 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
480 | CLANG_ANALYZER_NONNULL = YES;
481 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
482 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
483 | CLANG_CXX_LIBRARY = "libc++";
484 | CLANG_ENABLE_MODULES = YES;
485 | CLANG_ENABLE_OBJC_ARC = YES;
486 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
487 | CLANG_WARN_BOOL_CONVERSION = YES;
488 | CLANG_WARN_COMMA = YES;
489 | CLANG_WARN_CONSTANT_CONVERSION = YES;
490 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
491 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
492 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
493 | CLANG_WARN_EMPTY_BODY = YES;
494 | CLANG_WARN_ENUM_CONVERSION = YES;
495 | CLANG_WARN_INFINITE_RECURSION = YES;
496 | CLANG_WARN_INT_CONVERSION = YES;
497 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
498 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
499 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
500 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
501 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
502 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
503 | CLANG_WARN_STRICT_PROTOTYPES = YES;
504 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
505 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
506 | CLANG_WARN_UNREACHABLE_CODE = YES;
507 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
508 | CODE_SIGN_IDENTITY = "iPhone Developer";
509 | COPY_PHASE_STRIP = NO;
510 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
511 | ENABLE_NS_ASSERTIONS = NO;
512 | ENABLE_STRICT_OBJC_MSGSEND = YES;
513 | ENABLE_TESTABILITY = YES;
514 | GCC_C_LANGUAGE_STANDARD = gnu11;
515 | GCC_DYNAMIC_NO_PIC = NO;
516 | GCC_NO_COMMON_BLOCKS = YES;
517 | GCC_OPTIMIZATION_LEVEL = 0;
518 | GCC_PREPROCESSOR_DEFINITIONS = (
519 | "DEBUG=1",
520 | "$(inherited)",
521 | );
522 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
523 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
524 | GCC_WARN_UNDECLARED_SELECTOR = YES;
525 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
526 | GCC_WARN_UNUSED_FUNCTION = YES;
527 | GCC_WARN_UNUSED_VARIABLE = YES;
528 | IPHONEOS_DEPLOYMENT_TARGET = 15.0;
529 | MTL_ENABLE_DEBUG_INFO = NO;
530 | ONLY_ACTIVE_ARCH = YES;
531 | SDKROOT = iphoneos;
532 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
533 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
534 | SWIFT_VERSION = 5.0;
535 | TARGETED_DEVICE_FAMILY = "1,2";
536 | };
537 | name = Debug;
538 | };
539 | 3CE12C0A1FB62FEE00945352 /* Release */ = {
540 | isa = XCBuildConfiguration;
541 | buildSettings = {
542 | ALWAYS_SEARCH_USER_PATHS = NO;
543 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
544 | CLANG_ANALYZER_NONNULL = YES;
545 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
546 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
547 | CLANG_CXX_LIBRARY = "libc++";
548 | CLANG_ENABLE_MODULES = YES;
549 | CLANG_ENABLE_OBJC_ARC = YES;
550 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
551 | CLANG_WARN_BOOL_CONVERSION = YES;
552 | CLANG_WARN_COMMA = YES;
553 | CLANG_WARN_CONSTANT_CONVERSION = YES;
554 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
555 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
556 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
557 | CLANG_WARN_EMPTY_BODY = YES;
558 | CLANG_WARN_ENUM_CONVERSION = YES;
559 | CLANG_WARN_INFINITE_RECURSION = YES;
560 | CLANG_WARN_INT_CONVERSION = YES;
561 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
562 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
563 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
564 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
565 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
566 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
567 | CLANG_WARN_STRICT_PROTOTYPES = YES;
568 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
569 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
570 | CLANG_WARN_UNREACHABLE_CODE = YES;
571 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
572 | CODE_SIGN_IDENTITY = "iPhone Developer";
573 | COPY_PHASE_STRIP = NO;
574 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
575 | ENABLE_NS_ASSERTIONS = YES;
576 | ENABLE_STRICT_OBJC_MSGSEND = YES;
577 | ENABLE_TESTABILITY = YES;
578 | GCC_C_LANGUAGE_STANDARD = gnu11;
579 | GCC_NO_COMMON_BLOCKS = YES;
580 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
581 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
582 | GCC_WARN_UNDECLARED_SELECTOR = YES;
583 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
584 | GCC_WARN_UNUSED_FUNCTION = YES;
585 | GCC_WARN_UNUSED_VARIABLE = YES;
586 | IPHONEOS_DEPLOYMENT_TARGET = 15.0;
587 | MTL_ENABLE_DEBUG_INFO = YES;
588 | ONLY_ACTIVE_ARCH = YES;
589 | SDKROOT = iphoneos;
590 | SWIFT_COMPILATION_MODE = wholemodule;
591 | SWIFT_OPTIMIZATION_LEVEL = "-O";
592 | SWIFT_VERSION = 5.0;
593 | TARGETED_DEVICE_FAMILY = "1,2";
594 | VALIDATE_PRODUCT = YES;
595 | };
596 | name = Release;
597 | };
598 | 3CE12C0C1FB62FEE00945352 /* Debug */ = {
599 | isa = XCBuildConfiguration;
600 | buildSettings = {
601 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
602 | CODE_SIGN_ENTITLEMENTS = HardcoreTap/HardcoreTap.entitlements;
603 | CODE_SIGN_IDENTITY = "iPhone Developer";
604 | "CODE_SIGN_IDENTITY[sdk=*]" = "iPhone Developer";
605 | CODE_SIGN_STYLE = Automatic;
606 | CURRENT_PROJECT_VERSION = 6;
607 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
608 | DEVELOPMENT_TEAM = F7AZ625QQ5;
609 | "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = NO;
610 | INFOPLIST_FILE = "$(SRCROOT)/HardcoreTap/Supporting files/Info.plist";
611 | IPHONEOS_DEPLOYMENT_TARGET = 15.0;
612 | LD_RUNPATH_SEARCH_PATHS = (
613 | "$(inherited)",
614 | "@executable_path/Frameworks",
615 | );
616 | MARKETING_VERSION = 2.0;
617 | PRODUCT_BUNDLE_IDENTIFIER = com.bystritskiy.HardcoreTap;
618 | PRODUCT_NAME = "$(TARGET_NAME)";
619 | PROVISIONING_PROFILE = "";
620 | PROVISIONING_PROFILE_SPECIFIER = "";
621 | SUPPORTS_MACCATALYST = YES;
622 | SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
623 | SWIFT_VERSION = 5.0;
624 | TARGETED_DEVICE_FAMILY = 1;
625 | };
626 | name = Debug;
627 | };
628 | 3CE12C0D1FB62FEE00945352 /* Release */ = {
629 | isa = XCBuildConfiguration;
630 | buildSettings = {
631 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
632 | CODE_SIGN_ENTITLEMENTS = HardcoreTap/HardcoreTap.entitlements;
633 | CODE_SIGN_IDENTITY = "iPhone Developer";
634 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
635 | CODE_SIGN_STYLE = Automatic;
636 | CURRENT_PROJECT_VERSION = 6;
637 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
638 | DEVELOPMENT_TEAM = F7AZ625QQ5;
639 | "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = NO;
640 | INFOPLIST_FILE = "$(SRCROOT)/HardcoreTap/Supporting files/Info.plist";
641 | IPHONEOS_DEPLOYMENT_TARGET = 15.0;
642 | LD_RUNPATH_SEARCH_PATHS = (
643 | "$(inherited)",
644 | "@executable_path/Frameworks",
645 | );
646 | MARKETING_VERSION = 2.0;
647 | PRODUCT_BUNDLE_IDENTIFIER = com.bystritskiy.HardcoreTap;
648 | PRODUCT_NAME = "$(TARGET_NAME)";
649 | PROVISIONING_PROFILE = "";
650 | PROVISIONING_PROFILE_SPECIFIER = "";
651 | SUPPORTS_MACCATALYST = YES;
652 | SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
653 | SWIFT_VERSION = 5.0;
654 | TARGETED_DEVICE_FAMILY = 1;
655 | };
656 | name = Release;
657 | };
658 | /* End XCBuildConfiguration section */
659 |
660 | /* Begin XCConfigurationList section */
661 | 3CE12BF41FB62FED00945352 /* Build configuration list for PBXProject "HardcoreTap" */ = {
662 | isa = XCConfigurationList;
663 | buildConfigurations = (
664 | 3CE12C091FB62FEE00945352 /* Debug */,
665 | 3CE12C0A1FB62FEE00945352 /* Release */,
666 | );
667 | defaultConfigurationIsVisible = 0;
668 | defaultConfigurationName = Release;
669 | };
670 | 3CE12C0B1FB62FEE00945352 /* Build configuration list for PBXNativeTarget "HardcoreTap" */ = {
671 | isa = XCConfigurationList;
672 | buildConfigurations = (
673 | 3CE12C0C1FB62FEE00945352 /* Debug */,
674 | 3CE12C0D1FB62FEE00945352 /* Release */,
675 | );
676 | defaultConfigurationIsVisible = 0;
677 | defaultConfigurationName = Release;
678 | };
679 | /* End XCConfigurationList section */
680 |
681 | /* Begin XCRemoteSwiftPackageReference section */
682 | FDFF966228B3F05200A68F95 /* XCRemoteSwiftPackageReference "SwiftEntryKit" */ = {
683 | isa = XCRemoteSwiftPackageReference;
684 | repositoryURL = "https://github.com/huri000/SwiftEntryKit";
685 | requirement = {
686 | kind = upToNextMajorVersion;
687 | minimumVersion = 2.0.0;
688 | };
689 | };
690 | /* End XCRemoteSwiftPackageReference section */
691 |
692 | /* Begin XCSwiftPackageProductDependency section */
693 | FDFF966328B3F05200A68F95 /* SwiftEntryKit */ = {
694 | isa = XCSwiftPackageProductDependency;
695 | package = FDFF966228B3F05200A68F95 /* XCRemoteSwiftPackageReference "SwiftEntryKit" */;
696 | productName = SwiftEntryKit;
697 | };
698 | /* End XCSwiftPackageProductDependency section */
699 | };
700 | rootObject = 3CE12BF11FB62FED00945352 /* Project object */;
701 | }
702 |
--------------------------------------------------------------------------------
/Source/HardcoreTap.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Source/HardcoreTap.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swiftentrykit",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/huri000/SwiftEntryKit",
7 | "state" : {
8 | "revision" : "5ad36cccf0c4b9fea32f4e9b17a8e38f07563ef0",
9 | "version" : "2.0.0"
10 | }
11 | }
12 | ],
13 | "version" : 2
14 | }
15 |
--------------------------------------------------------------------------------
/Source/HardcoreTap.xcodeproj/xcshareddata/xcschemes/HardcoreTap for Watch.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
44 |
45 |
46 |
47 |
57 |
61 |
67 |
68 |
69 |
70 |
76 |
80 |
86 |
87 |
88 |
89 |
95 |
96 |
97 |
98 |
100 |
101 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/Source/HardcoreTap.xcodeproj/xcshareddata/xcschemes/HardcoreTap.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
45 |
51 |
52 |
53 |
54 |
60 |
62 |
68 |
69 |
70 |
71 |
73 |
74 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // TimeKillerApp
4 | //
5 | // Created by Bogdan Bystritskiy on 10/11/2017.
6 | // Copyright © 2017 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
15 | return true
16 | }
17 |
18 | // MARK: UISceneSession Lifecycle
19 |
20 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
21 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Base/BaseTabView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TabView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 11.10.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | struct BaseTabView: View {
12 |
13 | @State private var selection = 1
14 |
15 | var body: some View {
16 | TabView (selection: $selection) {
17 | GameView()
18 | .tabItem {
19 | Image(systemName: "1.square.fill")
20 | Text("Game")
21 | }
22 | .tag(1)
23 | LeaderboardView()
24 | .tabItem {
25 | Image(systemName: "2.square.fill")
26 | Text("Leaderboard")
27 | }.tag(2)
28 | RulesView()
29 | .tabItem {
30 | Image(systemName: "4.square.fill")
31 | Text("Rules")
32 | }.tag(3)
33 | AboutGameView()
34 | .tabItem {
35 | Image(systemName: "4.square.fill")
36 | Text("About game")
37 | }.tag(4)
38 | }
39 | .font(.headline)
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Common/Styles/Colors.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Colors.swift
3 | // HardcoreTap
4 | //
5 | // Created by Богдан Быстрицкий on 30/04/2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIColor {
12 |
13 | static let htAlert = UIColor.blue
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Common/UIElements/ButtonLinkView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SwiftUIView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 13.12.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | struct ButtonLinkView: View {
12 | var body: some View {
13 | Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
14 | }
15 | }
16 |
17 | struct SwiftUIView_Previews: PreviewProvider {
18 | static var previews: some View {
19 | ButtonLinkView()
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Common/UIElements/Message.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Message.swift
3 | // HardcoreTap
4 | //
5 | // Created by Богдан Быстрицкий on 30/04/2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftEntryKit
10 | import UIKit
11 |
12 | enum MessageType {
13 | case simple
14 | case success
15 | case error
16 |
17 | var color: UIColor {
18 | switch self {
19 | case .simple:
20 | return UIColor.gray.withAlphaComponent(0.95)
21 | case .success:
22 | return UIColor.htAlert.withAlphaComponent(0.95)
23 | case .error:
24 | return UIColor.red.withAlphaComponent(0.95)
25 | }
26 | }
27 |
28 | var hapticType: EKAttributes.NotificationHapticFeedback {
29 | switch self {
30 | case .simple:
31 | return .none
32 | case .success:
33 | return .success
34 | case .error:
35 | return .error
36 | }
37 | }
38 |
39 | }
40 |
41 | struct Message {
42 |
43 | static let shared = Message()
44 |
45 | func showMessage(with text: String, type: MessageType) {
46 | let titleFont = UIFont.boldSystemFont(ofSize: 15)
47 | var attributes = EKAttributes.topToast
48 | attributes.entryBackground = .color(color: EKColor(type.color))
49 | attributes.popBehavior = .animated(animation: .init(translate: .init(duration: 0.3), scale: .init(from: 1, to: 0.7, duration: 0.7)))
50 | attributes.scroll = .enabled(swipeable: true, pullbackAnimation: .jolt)
51 | attributes.hapticFeedbackType = type.hapticType
52 | var title = EKProperty.LabelContent(text: text, style: .init(font: titleFont, color: .white))
53 | title.style.alignment = .center
54 | let contentView = EKNoteMessageView(with: title)
55 | SwiftEntryKit.display(entry: contentView, using: attributes)
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Stories/AboutGame/AboutGameView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AboutGameView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 17.10.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | // TODO:
12 | struct AboutGameView: View {
13 |
14 | var body: some View {
15 | NavigationView {
16 | List {
17 | Section(header: Text("Об игре")) {
18 | Text("Лови ритм! Не убивай время просто так. Убивай время с пользой. HardcoreTap — отличная тренировка внимательности, терпеливости, чувства ритма и упорства. Поднимись на вершину рейтинга таперов. Жми на экран с интервалом в одну секунду. Важна точность до сотых. С повышением уровня игра будет к тебе всё строже. Думаешь, это так просто? Попробуй.")
19 | }
20 | Section(header: Text("Расскажите о нас")) {
21 | ExampleRowView()
22 | ExampleRowView()
23 | }
24 | Section(header: Text("Мы на Github")) {
25 | ExampleRowView()
26 | ExampleRowView()
27 | ExampleRowView()
28 | }
29 | }.listStyle(GroupedListStyle())
30 | }.navigationBarTitle("About game")
31 | }
32 |
33 | }
34 |
35 | struct AboutGameView_Previews: PreviewProvider {
36 | static var previews: some View {
37 | Group {
38 | AboutGameView()
39 | }
40 | }
41 | }
42 |
43 | struct ExampleRowView: View {
44 | var body: some View {
45 | Text("todo")
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Stories/Game/GameView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GameView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 07.11.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | // TODO:
12 | struct GameView: View {
13 |
14 | var body: some View {
15 | NavigationView {
16 | VStack {
17 | Image("star.fill")
18 | Button(action: {
19 | }) { Text("play") }
20 | .foregroundColor(.red)
21 | .padding()
22 | }
23 | }.navigationBarTitle("Game")
24 | }
25 |
26 | }
27 |
28 | struct GameView_Previews: PreviewProvider {
29 | static var previews: some View {
30 | GameView()
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Stories/Leaderboard/LeaderboardView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LeaderboardView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 16.10.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | struct LeaderboardView: View {
12 |
13 | var body: some View {
14 | NavigationView {
15 | VStack {
16 | List(0..<10) { item in
17 | HStack {
18 | Image("star.fill")
19 | .padding()
20 | Text("nickname \(item)")
21 | }
22 | }
23 | }
24 | }.navigationBarTitle("Leaderboard")
25 | }
26 |
27 | }
28 |
29 | struct LeaderboardView_Previews: PreviewProvider {
30 | static var previews: some View {
31 | Group {
32 | LeaderboardView()
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Stories/Login/LoginView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoginView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 09.10.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | // TODO:
12 | struct LoginView: View {
13 | @State var nickname: String = ""
14 | @State var didTapStartButton = false
15 |
16 | var body: some View {
17 | NavigationView {
18 | VStack {
19 | Image("icon")
20 | .padding()
21 | Text("welcome")
22 | .font(.title)
23 | .padding()
24 | TextField("create.nickname", text: $nickname)
25 | .padding()
26 | Button(action: {
27 | self.didTapStartButton = true
28 | }) { Text("start.game") }
29 | .foregroundColor(.red)
30 | .padding()
31 | }
32 | .sheet(isPresented: $didTapStartButton) {
33 | BaseTabView()
34 | }
35 | }.navigationBarTitle("HardcoreTap")
36 | }
37 |
38 | }
39 |
40 | struct LoginView_Previews: PreviewProvider {
41 | static var previews: some View {
42 | LoginView()
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Stories/Rules/RuleView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RuleView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 22.10.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | enum RuleType {
12 | case rule1
13 | case rule2
14 | case rule3
15 |
16 | var text: String {
17 | switch self {
18 | case .rule1: return "Тапай по экрану с интервалом ровно в одну секунду. Идеальная точность — 00 миллисекунд."
19 | case .rule2: return "С ростом уровня, тебе нужно быть всё точнее. Допустимая погрешность уменьшается и приближается к нулю. "
20 | case .rule3: return "Цель игры — стать лучшим ловцом ритма и возглавить TOP 10 игроков!"
21 | }
22 | }
23 |
24 | var image: String {
25 | switch self {
26 | case .rule1: return "rule1"
27 | case .rule2: return "rule2"
28 | case .rule3: return "rule3"
29 | }
30 | }
31 | }
32 |
33 | struct RuleView: View {
34 |
35 | @State var type: RuleType
36 |
37 | var body: some View {
38 | HStack {
39 | Image(type.image).padding()
40 | Text(type.text)
41 | }
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Stories/Rules/RulesView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RulesView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 16.10.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | // TODO:
12 | struct RulesView: View {
13 |
14 | var body: some View {
15 | NavigationView {
16 | VStack {
17 | RuleView(type: .rule1)
18 | RuleView(type: .rule2)
19 | RuleView(type: .rule3)
20 | }.padding()
21 | }.navigationBarTitle("Rules")
22 | }
23 |
24 | }
25 |
26 | struct RulesView_Previews: PreviewProvider {
27 | static var previews: some View {
28 | Group {
29 | RulesView()
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Classes/PresentationLayer/Stories/Settings/SettingsView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SettingsView.swift
3 | // HardcoreTap
4 | //
5 | // Created by Быстрицкий Богдан on 13.12.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | // TODO:
12 | struct SettingsView: View {
13 | var body: some View {
14 | Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
15 | }
16 | }
17 |
18 | struct SettingsView_Previews: PreviewProvider {
19 | static var previews: some View {
20 | SettingsView()
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/AboutGameViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AboutGameVC.swift
3 | // HardcoreTap
4 | //
5 | // Created by Богдан Быстрицкий on 24/11/2017.
6 | // Copyright © 2017 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AboutGameViewController: UIViewController {
12 |
13 | @IBOutlet weak var tableView: UITableView!
14 | @IBOutlet weak var aboutGameLabel: UILabel!
15 |
16 | let appID = "1334647124"
17 |
18 | var sectionTitles = ["Поддержите разработчиков", "Расскажите о нас", "Мы на GitHub"]
19 | var sectionContent = [
20 | ["Отключить рекламу в приложении"],
21 | ["Оцените приложение на App Store", "Репозиторий на GitHub"],
22 | ["Dunaev Sergey", "Bystritskiy Bogdan", "Anpleenko Pavel"]
23 | ]
24 |
25 | override func viewDidLoad() {
26 | super.viewDidLoad()
27 |
28 | tableView.tableFooterView = UIView(frame: CGRect.zero)
29 | aboutGameLabel.text = "Лови ритм! Не убивай время просто так. Убивай время с пользой. HardcoreTap — отличная тренировка внимательности, терпеливости, чувства ритма и упорства. Поднимись на вершину рейтинга таперов. Жми на экран с интервалом в одну секунду. Важна точность до сотых. С повышением уровня игра будет к тебе всё строже. Думаешь, это так просто? Попробуй."
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | OpenSans
13 |
14 |
15 | OpenSans-Semibold
16 |
17 |
18 | SFUIDisplay-Regular
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
44 |
50 |
65 |
66 |
67 |
68 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
113 |
123 |
136 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
195 |
196 |
197 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
308 |
309 |
310 |
311 |
312 |
325 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
435 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
517 |
518 |
519 |
520 |
521 |
522 |
523 |
524 |
525 |
526 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 |
566 |
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 |
584 |
585 |
586 |
587 |
588 |
589 |
590 |
591 |
592 |
593 |
594 |
595 |
596 |
597 |
598 |
599 |
600 |
601 |
602 |
603 |
604 |
605 |
606 |
607 |
608 |
609 |
610 |
620 |
630 |
639 |
640 |
641 |
642 |
643 |
644 |
645 |
646 |
647 |
648 |
649 |
650 |
651 |
652 |
653 |
654 |
655 |
656 |
657 |
658 |
659 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 |
670 |
671 |
672 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
680 |
681 |
682 |
683 |
684 |
685 |
686 |
687 |
688 |
689 |
690 |
691 |
692 |
693 |
694 |
695 |
696 |
697 |
698 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 |
707 |
708 |
709 |
710 |
711 |
712 |
713 |
714 |
715 |
716 |
717 |
718 |
719 |
720 |
721 |
722 |
723 |
724 |
725 |
726 |
727 |
728 |
729 |
730 |
731 |
732 |
733 |
734 |
735 |
736 |
737 |
738 |
739 |
740 |
741 |
742 |
743 |
744 |
745 |
746 |
747 |
748 |
749 |
750 |
751 |
752 |
753 |
754 |
755 |
756 |
757 |
758 |
759 |
760 |
761 |
762 |
763 |
764 |
765 |
766 |
767 |
768 |
769 |
770 |
771 |
772 |
773 |
774 |
775 |
776 |
777 |
778 |
779 |
780 |
781 |
782 |
783 |
784 |
785 |
786 |
787 |
788 |
789 |
790 |
791 |
792 |
793 |
794 |
795 |
796 |
797 |
798 |
799 |
800 |
801 |
802 |
803 |
804 |
805 |
806 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
814 |
815 |
816 |
817 |
818 |
819 |
820 |
821 |
822 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/BaseTabBarController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TabBarVC.swift
3 | // TimeKillerApp
4 | //
5 | // Created by Bogdan Bystritskiy on 11/11/2017.
6 | // Copyright © 2017 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class BaseTabBarController: UITabBarController {
12 |
13 | @IBOutlet weak var myTabBar: UITabBar!
14 |
15 | override func viewDidLoad() {
16 | super.viewDidLoad()
17 |
18 | myTabBar.backgroundColor = UIColor.clear
19 | myTabBar.backgroundImage = UIImage()
20 | myTabBar.shadowImage = UIImage()
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/GameViewController.swift:
--------------------------------------------------------------------------------
1 | ////
2 | //// ViewController.swift
3 | ////
4 | //// Created by Bogdan Bystritskiy on 10/11/17.
5 | //// Copyright © 2017 Bogdan Bystritskiy. All rights reserved.
6 | ////
7 | //
8 | //import UIKit
9 | //import Firebase
10 | //import AudioToolbox
11 | //import AVFoundation
12 | //import GoogleMobileAds
13 | //import GameKit
14 | //import StoreKit
15 | //
16 | //class GameViewController: UIViewController, GADBannerViewDelegate, GKGameCenterControllerDelegate, SKPaymentTransactionObserver, SKProductsRequestDelegate {
17 | //
18 | // var bombSoundEffect: AVAudioPlayer? // Плеер звуков
19 | //
20 | // var count: Int = 0 // Счетчик очков
21 | //
22 | // var seconds: Int = 0 // Счетчик секунд
23 | // var seconds100: Int = 0 // Счетчик десятых секунды
24 | // var fault = 0.10 { // Погрешность
25 | // didSet {
26 | // faultLabel.text = "Погрешность: \(fault)"
27 | // }
28 | // }
29 | //
30 | // var isHarcoreMode: Bool = false
31 | //
32 | // var timer = Timer()
33 | // var flPlaying: Bool = false // Флаг запуска игры
34 | // var bgSound: Bool = true // Флаг проигрывание музыки
35 | // var timeStop = Date()
36 | //
37 | // let layerColors = [UIColor(red: 1.0, green: 0.5, blue: 0.5, alpha: 0.6),
38 | // UIColor(red: 0.5, green: 0.1, blue: 0.5, alpha: 0.6),
39 | // UIColor(red: 0.5, green: 0.5, blue: 0.1, alpha: 0.6),
40 | // UIColor(red: 1.0, green: 1.0, blue: 0.5, alpha: 0.6),
41 | // UIColor(red: 1.0, green: 0.5, blue: 1.0, alpha: 0.6),
42 | // UIColor(red: 0.19, green: 0.91, blue: 0.74, alpha: 1.00),
43 | // UIColor(red: 0.66, green: 0.40, blue: 0.93, alpha: 1.00),
44 | // UIColor(red: 0.40, green: 0.93, blue: 0.47, alpha: 1.00),
45 | // UIColor(red: 0.93, green: 0.56, blue: 0.40, alpha: 1.00),
46 | // UIColor(red: 0.93, green: 0.40, blue: 0.67, alpha: 1.00),
47 | // UIColor(red: 0.68, green: 0.92, blue: 0.00, alpha: 1.00),
48 | // UIColor(red: 0.81, green: 0.85, blue: 0.40, alpha: 1.00),
49 | // UIColor(red: 0.00, green: 0.90, blue: 0.46, alpha: 1.00),
50 | // UIColor(red: 0.98, green: 0.75, blue: 0.18, alpha: 1.00)]
51 | //
52 | // let leftLayer = CAGradientLayer()
53 | // let rightLayer = CAGradientLayer()
54 | //
55 | // var rootRef = Database.database().reference()
56 | // var scoreRef: DatabaseReference!
57 | // let userDefaults = UserDefaults.standard
58 | //
59 | // @IBOutlet weak var switchModeGame: UISwitch!
60 | //
61 | // @IBOutlet weak var timerLabel: UILabel!
62 | // @IBOutlet weak var scoreLabel: UILabel!
63 | // @IBOutlet weak var highScoreLabel: UILabel!
64 | // @IBOutlet weak var faultLabel: UILabel!
65 | //
66 | // @IBOutlet weak var tapToRestartButton: UIButton!
67 | // @IBOutlet weak var startGameButton: UIButton!
68 | // @IBOutlet weak var shareButton: UIButton!
69 | // @IBOutlet weak var helloButtonWithPlayerName: UIButton!
70 | // @IBOutlet weak var hardcoreLabel: UIButton!
71 | //
72 | // var nameFromUserDefaults = " "
73 | // var highscoreFromUserDefaults: Int = 0
74 | //
75 | // @IBOutlet weak var bannerView: GADBannerView!
76 | // @IBOutlet weak var heightBannerView: NSLayoutConstraint!
77 | //
78 | // var productToPurshase = SKProduct()
79 | //
80 | // func buyDisableAd() {
81 | // print("Покупка = \(productToPurshase)")
82 | // let pay = SKPayment(product: productToPurshase)
83 | // SKPaymentQueue.default().add(self)
84 | // SKPaymentQueue.default().add(pay)
85 | // }
86 | //
87 | // override func viewDidLoad() {
88 | // super.viewDidLoad()
89 | //
90 | // if SKPaymentQueue.canMakePayments() {
91 | // print("Покупки доступны")
92 | // let productID: Set = ["1"]
93 | // let request = SKProductsRequest(productIdentifiers: productID)
94 | // request.delegate = self
95 | // request.start()
96 | // } else {
97 | // print("Покупки недоступны")
98 | // }
99 | //
100 | // authPlayerInGameCenter()
101 | //
102 | // bannerView.adUnitID = PrivateInfo.admobBannerID
103 | // bannerView.rootViewController = self
104 | // bannerView.load(GADRequest())
105 | // bannerView.delegate = self
106 | //
107 | // // проверка проигрывания фоновой музыки
108 | // if userDefaults.bool(forKey: "bgSound") {
109 | // bgSound = true
110 | // userDefaults.set(bgSound, forKey: "bgSound")
111 | // } else {
112 | // bgSound = false
113 | // userDefaults.set(bgSound, forKey: "bgSound")
114 | // }
115 | //
116 | // //имя пользователя в левом вехнем углу
117 | // if let username = UserDefaults.standard.value(forKey: "userNAME") as? String {
118 | // self.nameFromUserDefaults = username
119 | // } else {
120 | // self.nameFromUserDefaults = " "
121 | // }
122 | // scoreRef = rootRef.child("leaderboards_normal").child(nameFromUserDefaults)
123 | //
124 | // //подгрузка рекорда из UserDefaults
125 | // if UserDefaults.standard.value(forKey: "highscore_normal") != nil {
126 | // self.highscoreFromUserDefaults = UserDefaults.standard.value(forKey: "highscore_normal") as! Int
127 | // highScoreLabel.text = "Ваш рекорд: \(self.highscoreFromUserDefaults)"
128 | // } else {
129 | // highScoreLabel.text = "Ваш рекорд: 0"
130 | // }
131 | //
132 | // // Регистрация рекогнайзера жестов
133 | // let tapGR = UITapGestureRecognizer(target: self, action: #selector(didTap))
134 | // view.addGestureRecognizer(tapGR)
135 | //
136 | // // Тень у кнопки
137 | // startGameButton.addShadow()
138 | //
139 | // self.navigationItem.title = "HardcoreTap"
140 | // self.helloButtonWithPlayerName.setTitle("Привет, \(self.nameFromUserDefaults)", for: .normal)
141 | // self.helloButtonWithPlayerName.isEnabled = false
142 | //
143 | // setupGALayers()
144 | //
145 | // view.layer.insertSublayer(rightLayer, at: 0)
146 | // view.layer.insertSublayer(leftLayer, at: 0)
147 | // }
148 | //
149 | // override func viewWillAppear(_ animated: Bool) {
150 | // //скрываем все лишнее, и ждем нажатия кнопки "Начать игру"
151 | // scoreLabel.isHidden = true
152 | // shareButton.isHidden = true
153 | // tapToRestartButton.isHidden = true
154 | // highScoreLabel.isHidden = true
155 | //
156 | // startGameButton.isHidden = false
157 | // switchModeGame.isHidden = false
158 | // hardcoreLabel.isHidden = false
159 | // }
160 | //
161 | // var gcEnable = Bool()
162 | // var gcDefaultLeaderboard = String()
163 | //
164 | // func authPlayerInGameCenter() {
165 | // let localePlayer: GKLocalPlayer = GKLocalPlayer.local
166 | // localePlayer.authenticateHandler = {viewController, error -> Void in
167 | // if viewController != nil {
168 | // self.present(viewController!, animated: true, completion: nil)
169 | // } else if localePlayer.isAuthenticated {
170 | // print("Local player already auth")
171 | // self.gcEnable = true
172 | //
173 | // // Get the default leaderboard ID
174 | // localePlayer.loadDefaultLeaderboardIdentifier(completionHandler: { leaderboardString, error in
175 | // if error == nil {
176 | // self.gcDefaultLeaderboard = leaderboardString!
177 | // }
178 | // })
179 | // } else {
180 | // print("Local player not auth. Disable Game center")
181 | // self.gcEnable = false
182 | // }
183 | // }
184 | // }
185 | //
186 | // func submitScoreOnGameCenter() {
187 | // let leaderboardID = "gamecenter-leaderboards"
188 | // let sScore = GKScore(leaderboardIdentifier: leaderboardID)
189 | // sScore.value = Int64(count)
190 | // GKScore.report([sScore]) { error in
191 | // if error != nil {
192 | // print(error!.localizedDescription)
193 | // } else {
194 | // print("Score submitted")
195 | // }
196 | // }
197 | // }
198 | //
199 | // func gameCenterViewControllerDidFinish(_ gameCenterViewController: GKGameCenterViewController) {
200 | // gameCenterViewController.dismiss(animated: true, completion: nil)
201 | // }
202 | //
203 | // func setupGALayers() {
204 | //
205 | // rightLayer.colors = [layerColors[4].cgColor, UIColor(red: 61 / 255, green: 52 / 255, blue: 110 / 255, alpha: 0.0).cgColor]
206 | // rightLayer.startPoint = CGPoint(x: 0, y: 0)
207 | // rightLayer.endPoint = CGPoint(x: 0, y: 1)
208 | // rightLayer.frame = view.bounds
209 | // rightLayer.position.x = view.bounds.width + view.bounds.midX
210 | //
211 | // leftLayer.colors = [layerColors[0].cgColor, UIColor(red: 61 / 255, green: 52 / 255, blue: 110 / 255, alpha: 0.0).cgColor]
212 | // leftLayer.startPoint = CGPoint(x: 0, y: 0)
213 | // leftLayer.endPoint = CGPoint(x: 0, y: 1)
214 | // leftLayer.frame = view.bounds
215 | // leftLayer.position.x = view.bounds.midX
216 | //
217 | // }
218 | //
219 | // func changeLayers() {
220 | // rightLayer.colors![0] = leftLayer.colors![0]
221 | //
222 | // let index = (seconds + 1) % 5
223 | // leftLayer.colors![0] = layerColors[index].cgColor
224 | //
225 | // let animationRight = CABasicAnimation(keyPath: "position.x")
226 | // animationRight.fromValue = view.bounds.midX
227 | // animationRight.toValue = view.bounds.width + view.bounds.midX
228 | // animationRight.duration = 0.99
229 | //
230 | // let animationLeft = CABasicAnimation(keyPath: "position.x")
231 | // animationLeft.fromValue = -view.bounds.midX
232 | // animationLeft.toValue = view.bounds.midX
233 | // animationLeft.duration = 0.99
234 | //
235 | // rightLayer.add(animationRight, forKey: nil)
236 | // leftLayer.add(animationLeft, forKey: nil)
237 | // }
238 | //
239 | // @IBAction func switchModeDidTapped(_ sender: Any) {
240 | // if switchModeGame.isOn == false {
241 | // self.faultLabel.text = "Погрешность: от 0.05 мс"
242 | // isHarcoreMode = false
243 | // scoreRef = rootRef.child("leaderboards_normal").child(nameFromUserDefaults)
244 | // } else {
245 | // self.faultLabel.text = "Погрешность отключена"
246 | // isHarcoreMode = true
247 | // scoreRef = rootRef.child("leaderboards_hardcore").child(nameFromUserDefaults)
248 | // }
249 | // }
250 | //
251 | // @objc func didTap(tapGR: UITapGestureRecognizer) {
252 | // if flPlaying {
253 | // // Проверка точности попадания
254 | // if fabs(Double(seconds - count - 1) + Double(seconds100) / 100) <= fault + 0.0001 {
255 | // // Плюс очко
256 | // count += 1
257 | // scoreLabel.text = "\(count)"
258 | // } else {
259 | // self.gameOver()
260 | // }
261 | // } else {
262 | // // Задержка после проигрыша
263 | // // Если 0.4 секунды прошло, можно запускать
264 | // if timeStop.timeIntervalSinceNow <= -0.5 && startGameButton.isHidden {
265 | // self.setupGame()
266 | // }
267 | // }
268 | // }
269 | //
270 | // @IBAction func startGameButtonDidTapped(_ sender: Any) {
271 | // setupGame()
272 | // }
273 | //
274 | // func setupGame() {
275 | // let path = Bundle.main.path(forResource: "bmp60.mp3", ofType: nil)!
276 | // let url = URL(fileURLWithPath: path)
277 | //
278 | // do {
279 | // bombSoundEffect = try AVAudioPlayer(contentsOf: url)
280 | // if userDefaults.bool(forKey: "bgSound") {
281 | // bombSoundEffect?.play()
282 | // } else {
283 | // bombSoundEffect?.stop()
284 | // }
285 | // } catch {
286 | // // couldn't load file :(
287 | // }
288 | //
289 | // highScoreLabel.isHidden = false
290 | // scoreLabel.isHidden = false
291 | // highScoreLabel.isHidden = false
292 | //
293 | // shareButton.isHidden = true
294 | // startGameButton.isHidden = true
295 | // hardcoreLabel.isHidden = true
296 | // switchModeGame.isHidden = true
297 | //
298 | // count = 0
299 | // seconds = 0
300 | // seconds100 = 0
301 | // fault = switchModeGame.isOn ? 0.0 : 0.10
302 | //
303 | // flPlaying = true
304 | //
305 | // setupGALayers()
306 | // updateTimerLabel()
307 | //
308 | // scoreLabel.text = "\(count)"
309 | //
310 | // timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true, block: timerBlock(timer:))
311 | //
312 | // changeLayers()
313 | // }
314 | //
315 | // func timerBlock(timer: Timer) {
316 | // seconds100 += 1
317 | // if seconds100 == 100 {
318 | // seconds += 1
319 | // seconds100 = 0
320 | //
321 | // if fault > 0.0501 {
322 | // fault -= 0.01
323 | // } else {
324 | // fault = 0.05
325 | // }
326 | //
327 | // changeLayers()
328 | // }
329 | //
330 | // updateTimerLabel()
331 | //
332 | // if Double(seconds - count - 1) + (Double(seconds100) / 100) > fault {
333 | // // Пропущено нажатие
334 | // gameOver()
335 | // }
336 | // }
337 | //
338 | // //нажали кнопку выйти
339 | // @IBAction func logOutButtonDidTapped(_ sender: Any) {
340 | // let alert: UIAlertController = UIAlertController()
341 | // let exitAction = UIAlertAction(title: "Выйти", style: .destructive, handler: { _ in self.exitClicked() })
342 | // let cancelAction = UIAlertAction(title: "Отмена", style: .cancel, handler: nil)
343 | //
344 | // alert.addAction(exitAction)
345 | // alert.addAction(cancelAction)
346 | //
347 | // self.present(alert, animated: true, completion: nil)
348 | //
349 | // //фон кнопки выход на алерте
350 | // let subView = alert.view.subviews.first!
351 | // let alertContentView = subView.subviews.first!
352 | // alertContentView.backgroundColor = UIColor.white
353 | // alertContentView.layer.cornerRadius = 15
354 | // }
355 | //
356 | // //нажали выход на алерте
357 | // func exitClicked() {
358 | // //удаление данных из UserDefaults
359 | // let defaults = UserDefaults.standard
360 | // defaults.removePersistentDomain(forName: Bundle.main.bundleIdentifier!)
361 | // defaults.synchronize()
362 | //
363 | // //переход на страницу авторизации
364 | // let loginvc = self.storyboard?.instantiateViewController(withIdentifier: "LoginVC") as! LoginViewController
365 | // self.present(loginvc, animated: true, completion: nil)
366 | // }
367 | //
368 | // //конец игры
369 | // func gameOver() {
370 | // bombSoundEffect?.stop()
371 | //
372 | // timer.invalidate()
373 | // timeStop = Date()
374 | // flPlaying = false
375 | //
376 | // leftLayer.position.x = leftLayer.presentation()!.position.x
377 | // leftLayer.removeAllAnimations()
378 | //
379 | // rightLayer.position.x = rightLayer.presentation()!.position.x
380 | // rightLayer.removeAllAnimations()
381 | //
382 | // tapToRestartButton.isHidden = false
383 | // shareButton.isHidden = false
384 | //
385 | // //добавления нового рекорда
386 | // if count > highscoreFromUserDefaults {
387 | //
388 | // submitScoreOnGameCenter()
389 | //
390 | // highscoreFromUserDefaults = count
391 | // highScoreLabel.text = "Ваш рекорд: \(highscoreFromUserDefaults)"
392 | // UserDefaults.standard.set(highscoreFromUserDefaults, forKey: "highscore_normal")
393 | //
394 | // Message.shared.showMessage(
395 | // with: "🎉 Поздравляем!\nВы побили рекорд. Ваш новый результат \(count) очков",
396 | // type: .success
397 | // )
398 | // }
399 | //
400 | // let scoreItem = [
401 | // "username": nameFromUserDefaults,
402 | // "highscore": highscoreFromUserDefaults
403 | // ] as [String: Any]
404 | //
405 | // //отправка данных в Firebase
406 | // self.scoreRef.setValue(scoreItem)
407 | // }
408 | //
409 | // func updateTimerLabel() {
410 | // timerLabel.text = String(format: "00:%02d:%02d", seconds, seconds100)
411 | // }
412 | //
413 | // @IBAction func tapToRestartDidTapped(_ sender: Any) {
414 | // tapToRestartButton.isHidden = true
415 | // self.setupGame()
416 | // }
417 | //
418 | // //Кнопка поделиться
419 | // @IBAction func shareButtonDidTapped(_ sender: Any) {
420 | // let activityVC = UIActivityViewController(activityItems: ["Хэй, мой рекорд в HardcoreTap: \(self.highscoreFromUserDefaults). Попробуй набрать больше;) appstore.com/hardcoretap"], applicationActivities: nil)
421 | // activityVC.popoverPresentationController?.sourceView = self.view
422 | // self.present(activityVC, animated: true, completion: nil)
423 | // }
424 | //
425 | // /// Tells the delegate an ad request loaded an ad.
426 | // func adViewDidReceiveAd(_ bannerView: GADBannerView) {
427 | // print("adViewDidReceiveAd")
428 | // }
429 | //
430 | // /// Tells the delegate an ad request failed.
431 | // func adView(_ bannerView: GADBannerView,
432 | // didFailToReceiveAdWithError error: GADRequestError) {
433 | // print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
434 | // }
435 | //
436 | // /// Tells the delegate that a full-screen view will be presented in response
437 | // /// to the user clicking on an ad.
438 | // func adViewWillPresentScreen(_ bannerView: GADBannerView) {
439 | // print("adViewWillPresentScreen")
440 | // }
441 | //
442 | // /// Tells the delegate that the full-screen view will be dismissed.
443 | // func adViewWillDismissScreen(_ bannerView: GADBannerView) {
444 | // print("adViewWillDismissScreen")
445 | // }
446 | //
447 | // /// Tells the delegate that the full-screen view has been dismissed.
448 | // func adViewDidDismissScreen(_ bannerView: GADBannerView) {
449 | // print("adViewDidDismissScreen")
450 | // }
451 | //
452 | // /// Tells the delegate that a user click will open another app (such as
453 | // /// the App Store), backgrounding the current app.
454 | // func adViewWillLeaveApplication(_ bannerView: GADBannerView) {
455 | // print("adViewWillLeaveApplication")
456 | // }
457 | //
458 | // func sucessDisableAd() {
459 | //
460 | // }
461 | //
462 | // func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
463 | // print("productsRequest")
464 | // let myProduct = response.products
465 | // for product in myProduct {
466 | // print("Товар добавлен")
467 | // print("Товар id = \(product.productIdentifier)")
468 | // print(product.localizedTitle)
469 | // print(product.localizedDescription)
470 | // }
471 | // }
472 | //
473 | // func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
474 | //
475 | // }
476 | //
477 | //}
478 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/LeadearBoardViewController.swift:
--------------------------------------------------------------------------------
1 | ////
2 | //// LeadearBoardVC.swift
3 | //// TimeKillerApp
4 | ////
5 | //// Created by Bogdan Bystritskiy on 11/11/2017.
6 | //// Copyright © 2017 Bogdan Bystritskiy. All rights reserved.
7 | ////
8 | //
9 | //import UIKit
10 | ////import Firebase
11 | ////import FirebaseDatabase
12 | //import NVActivityIndicatorView
13 | //import GameKit
14 | //
15 | //class LeadearBoardViewController: UIViewController, GKGameCenterControllerDelegate {
16 | //
17 | // @IBOutlet weak var tableView: UITableView!
18 | // @IBOutlet weak var segmentedControlLeaderBoard: UISegmentedControl!
19 | // @IBOutlet weak var loadIndicator: NVActivityIndicatorView!
20 | //
21 | // var rootRef = Database.database().reference()
22 | //
23 | // var content = [Content]()
24 | //
25 | // var contentLeaderboardsNormal = [Content]()
26 | // var contentLeaderboardsHardcore = [Content]()
27 | //
28 | // var nameUser: String?
29 | //
30 | // func gameCenterViewControllerDidFinish(_ gameCenterViewController: GKGameCenterViewController) {
31 | // gameCenterViewController.dismiss(animated: true, completion: nil)
32 | // }
33 | //
34 | // override func viewDidLoad() {
35 | // super.viewDidLoad()
36 | //
37 | // if let nameUser = UserDefaults.standard.value(forKey: "userNAME") as? String {
38 | // self.nameUser = nameUser
39 | // }
40 | // // nameUser = (UserDefaults.standard.value(forKey: "userNAME") as! String)
41 | //
42 | // loadIndicator.type = .lineScale
43 | // loadIndicator.color = UIColor(named: "yellowishGreen")!
44 | // loadIndicator.startAnimating()
45 | //
46 | // //получение рекордов из обычного режима
47 | // getNormalRecords()
48 | // //получение рекордов из харкдор режима
49 | // getHardcoreRecords()
50 | //
51 | // tableView.delegate = self
52 | // tableView.dataSource = self
53 | //
54 | // // //показывам при загрузке экрана ту таблицу, какой режим игры был выбран
55 | // // if isHarcoreMode {
56 | // // segmentedControlLeaderBoard.selectedSegmentIndex = 1
57 | // // } else {
58 | // // segmentedControlLeaderBoard.selectedSegmentIndex = 0
59 | // // }
60 | // }
61 | //
62 | // @IBAction func gameCenterDidTapped(_ sender: Any) {
63 | // showLeaderboard()
64 | // }
65 | //
66 | // func showLeaderboard() {
67 | // let gcVC: GKGameCenterViewController = GKGameCenterViewController()
68 | // gcVC.gameCenterDelegate = self
69 | // gcVC.viewState = GKGameCenterViewControllerState.leaderboards
70 | // gcVC.leaderboardIdentifier = "gamecenter-leaderboards"
71 | // self.present(gcVC, animated: true, completion: nil)
72 | // }
73 | //
74 | // @IBAction func switchSegmentedDidTapped(_ sender: Any) {
75 | // switch segmentedControlLeaderBoard.selectedSegmentIndex {
76 | // case 0:
77 | // self.content = self.contentLeaderboardsNormal
78 | // self.tableView.reloadData()
79 | // case 1:
80 | // self.content = self.contentLeaderboardsHardcore
81 | // self.tableView.reloadData()
82 | // default: break
83 | // }
84 | // }
85 | //
86 | // func getNormalRecords() {
87 | // rootRef.child("leaderboards_normal").queryOrdered(byChild: "highscore").observe(.value, with: {snapshot in
88 | //
89 | // self.contentLeaderboardsNormal = []
90 | //
91 | // for snap in snapshot.children.allObjects as! [DataSnapshot] {
92 | // let name = snap.key
93 | //
94 | // if let rankedBy = snap.value as? [String: Any] {
95 | // self.contentLeaderboardsNormal.append(Content(sName: "\(name)", sPoints: rankedBy["highscore"] as! Int))
96 | // }
97 | // }
98 | // self.loadIndicator.stopAnimating()
99 | // self.contentLeaderboardsNormal.reverse()
100 | // self.content = self.contentLeaderboardsNormal
101 | // self.tableView.reloadData()
102 | // })
103 | // }
104 | //
105 | // func getHardcoreRecords() {
106 | // rootRef.child("leaderboards_hardcore").queryOrdered(byChild: "highscore").observe(.value, with: {snapshot in
107 | //
108 | // self.contentLeaderboardsHardcore = []
109 | //
110 | // for snap in snapshot.children.allObjects as! [DataSnapshot] {
111 | // let name = snap.key
112 | //
113 | // if let rankedBy = snap.value as? [String: Any] {
114 | // self.contentLeaderboardsHardcore.append(Content(sName: "\(name)", sPoints: rankedBy["highscore"] as! Int))
115 | // }
116 | // }
117 | // self.contentLeaderboardsHardcore.reverse()
118 | // })
119 | // }
120 | //
121 | //}
122 | //
123 | //extension LeadearBoardViewController: UITableViewDelegate, UITableViewDataSource {
124 | //
125 | // func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
126 | // return self.content.count - 1
127 | // }
128 | //
129 | // func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
130 | //
131 | // let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! LeadearBoardCell
132 | //
133 | // //обнуляем сначала (защита от бага с переопределением)
134 | // cell.placeCellLabel.text = nil
135 | // cell.nameCellLabel.text = nil
136 | // cell.pointsCellLabel.text = nil
137 | //
138 | // cell.nameCellLabel.text = self.content[indexPath.row].sName
139 | // cell.pointsCellLabel.text = "\(self.content[indexPath.row].sPoints!)"
140 | //
141 | // if self.content[indexPath.row].sName! == nameUser {
142 | // cell.backgroundColor = nil
143 | // cell.backgroundColor = UIColor(red: 232 / 255, green: 45 / 255, blue: 111 / 255, alpha: 100)
144 | // } else {
145 | // cell.backgroundColor = nil
146 | // }
147 | //
148 | // //для первых трек добавляем иконку короны
149 | // if indexPath.row < 3 {
150 | // cell.placeCellLabel.text = nil
151 | // cell.placeCellLabel.text = ""
152 | // cell.placeCellLabel.backgroundColor = UIColor(patternImage: UIImage(named: "iconLeader")!)
153 | // } else {
154 | // cell.placeCellLabel.backgroundColor = nil
155 | // cell.placeCellLabel.text = nil
156 | // cell.placeCellLabel.text = "\(indexPath.row + 1)"
157 | // }
158 | // return cell
159 | // }
160 | //
161 | //}
162 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/LoginViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoginViewController.swift
3 | //
4 |
5 | import UIKit
6 |
7 | class LoginViewController: UIViewController, UITextFieldDelegate, UIGestureRecognizerDelegate {
8 |
9 | var userID: String = ""
10 | var username: String = ""
11 |
12 | @IBOutlet weak var textBox: UITextField!
13 | @IBOutlet weak var startPlayButton: UIButton!
14 |
15 | override func viewWillAppear(_ animated: Bool) {
16 | super.viewWillAppear(animated)
17 | setupAddTargetIsNotEmptyTextFields()
18 | }
19 |
20 | override func viewDidLoad() {
21 | super.viewDidLoad()
22 | }
23 |
24 | @IBAction func loginDidTouch(_ sender: Any) {
25 | //Если не заполнили поля
26 | if textBox.text!.isEmpty {
27 | //Меняем цвет плейсхолдеров
28 | textBox.attributedPlaceholder = NSAttributedString(string: "Придумайте никнейм", attributes: [NSAttributedString.Key.foregroundColor: UIColor(red: 232 / 255, green: 45 / 255, blue: 111 / 255, alpha: 100)])
29 | } else {
30 | //скрываем клавиатуру
31 | self.view.endEditing(false)
32 | self.username = self.textBox.text!
33 | UserDefaults.standard.set(self.username, forKey: "userNAME")
34 | UserDefaults.standard.synchronize()
35 | self.performSegue(withIdentifier: "LoginToPlay", sender: nil)
36 | }
37 | }
38 |
39 | //Установка целей на проверку заполнения полей
40 | func setupAddTargetIsNotEmptyTextFields() {
41 | //Cтили неактивной кнопки
42 | self.startPlayButton.layer.backgroundColor = UIColor.gray.cgColor
43 | textBox.addTarget(self, action: #selector(textFieldsIsNotEmpty), for: .editingChanged)
44 | }
45 |
46 | //Проверка заполнения полей
47 | @objc func textFieldsIsNotEmpty(sender: UITextField) {
48 | sender.text = sender.text?.trimmingCharacters(in: .whitespaces)
49 | guard let text = textBox.text, !text.isEmpty else {
50 | startPlayButton.layer.backgroundColor = UIColor.gray.cgColor
51 | startPlayButton.clearShadow(nameButton: startPlayButton)
52 | return
53 | }
54 | startPlayButton.layer.backgroundColor = UIColor(red: 232 / 255, green: 45 / 255, blue: 111 / 255, alpha: 100).cgColor
55 | startPlayButton.addShadow()
56 | return
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/RulesViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RulesVC.swift
3 | // TimeKillerApp
4 | //
5 | // Created by Bogdan Bystritskiy on 11/11/2017.
6 | // Copyright © 2017 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class RulesViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | }
16 |
17 | @IBAction func showSettingScreenAction(_ sender: Any) {
18 | performSegue(withIdentifier: "showSettingScreen", sender: self)
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/SettingsCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SettingsCell.swift
3 | // HardcoreTap
4 | //
5 | // Created by Павел Анплеенко on 14/01/2018.
6 | // Copyright © 2018 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class SettingsCell: UITableViewCell {
12 |
13 | @IBOutlet weak var titleLabel: UILabel!
14 | @IBOutlet weak var switchController: UISwitch!
15 |
16 | override func awakeFromNib() {
17 | super.awakeFromNib()
18 | }
19 |
20 | override func setSelected(_ selected: Bool, animated: Bool) {
21 | super.setSelected(selected, animated: animated)
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/SettingsViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SettingsVC.swift
3 | // HardcoreTap
4 | //
5 | // Created by Богдан Быстрицкий on 24/11/2017.
6 | // Copyright © 2017 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import StoreKit
11 |
12 | class SettingsViewController: UIViewController {
13 |
14 | @IBOutlet weak var heighOfDisableAdStackView: NSLayoutConstraint!
15 | @IBOutlet weak var disableAdButton: UIButton!
16 | @IBOutlet weak var tableView: UITableView!
17 | var titleSetting = ["Фоновый звук"]
18 | var bgSound = true
19 |
20 | let userDefaults = UserDefaults.standard
21 |
22 | override func viewDidLoad() {
23 | super.viewDidLoad()
24 | disableAdButton.addShadow()
25 | tableView.tableFooterView = UIView(frame: CGRect.zero)
26 | }
27 |
28 | @IBAction func disableAdButtonDidTapped(_ sender: Any) {
29 |
30 | }
31 | }
32 |
33 | extension SettingsViewController: UITableViewDataSource, UITableViewDelegate {
34 |
35 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
36 | return titleSetting.count
37 | }
38 |
39 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
40 | let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SettingsCell
41 | cell.titleLabel.text = titleSetting[indexPath.row]
42 | let switchView = UISwitch(frame: .zero)
43 | switchView.setOn(userDefaults.bool(forKey: "bgSound"), animated: true)
44 | switchView.onTintColor = UIColor(red: 223 / 255, green: 15 / 255, blue: 92 / 255, alpha: 1)
45 | switchView.tag = indexPath.row
46 | switchView.addTarget(self, action: #selector(switchChanged(_:)), for: .valueChanged)
47 | cell.accessoryView = switchView
48 | return cell
49 | }
50 |
51 | @objc func switchChanged(_ sender: UISwitch!) {
52 | if sender.isOn {
53 | bgSound = true
54 | userDefaults.set(bgSound, forKey: "bgSound")
55 | } else {
56 | bgSound = false
57 | userDefaults.set(bgSound, forKey: "bgSound")
58 | }
59 | }
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/UIButtonExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ButtonSupport.swift
3 | // TimeKillerApp
4 | //
5 | // Created by Павел Анплеенко on 12/11/2017.
6 | // Copyright © 2017 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIButton {
12 |
13 | func addShadow() {
14 | layer.shadowColor = UIColor(red: 232 / 255, green: 45 / 255, blue: 111 / 255, alpha: 0.5).cgColor
15 | layer.shadowOffset = CGSize(width: 2, height: 8)
16 | layer.shadowOpacity = 1.0
17 | layer.shadowRadius = 10.0
18 | layer.masksToBounds = false
19 | }
20 |
21 | func clearShadow(nameButton: UIButton) {
22 | layer.shadowColor = UIColor.clear.cgColor
23 | layer.shadowOffset = CGSize(width: 0, height: 0)
24 | layer.shadowOpacity = 0
25 | layer.shadowRadius = 0
26 | layer.masksToBounds = false
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/DEPRECATED/ru.lproj/Main.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UITabBarItem"; title = "Игра"; ObjectID = "0rO-s3-SAa"; */
3 | "0rO-s3-SAa.title" = "Игра";
4 |
5 | /* Class = "UILabel"; text = "99"; ObjectID = "6nO-Ep-rkR"; */
6 | "6nO-Ep-rkR.text" = "99";
7 |
8 | /* Class = "UILabel"; text = "101"; ObjectID = "8WE-Nr-zW6"; */
9 | "8WE-Nr-zW6.text" = "101";
10 |
11 | /* Class = "UILabel"; text = "Тапай по экрану с интервалом ровно в одну секунду. Идеальная точность — 00 миллисекунд."; ObjectID = "8dP-S2-pXO"; */
12 | "8dP-S2-pXO.text" = "Тапай по экрану с интервалом ровно в одну секунду. Идеальная точность — 00 миллисекунд.";
13 |
14 | /* Class = "UITabBarItem"; title = "Правила"; ObjectID = "AsA-DB-DKx"; */
15 | "AsA-DB-DKx.title" = "Правила";
16 |
17 | /* Class = "UIButton"; normalTitle = "Режим хардкора"; ObjectID = "CpA-Fj-PDe"; */
18 | "CpA-Fj-PDe.normalTitle" = "Режим хардкора";
19 |
20 | /* Class = "UIButton"; normalTitle = "Настройки"; ObjectID = "DdI-VV-Ed1"; */
21 | "DdI-VV-Ed1.normalTitle" = "Настройки";
22 |
23 | /* Class = "UIButton"; normalTitle = " Выйти"; ObjectID = "EpQ-u1-P5I"; */
24 | "EpQ-u1-P5I.normalTitle" = " Выйти";
25 |
26 | /* Class = "UITabBarItem"; title = "Рекорды"; ObjectID = "H8h-Ls-s24"; */
27 | "H8h-Ls-s24.title" = "Рекорды";
28 |
29 | /* Class = "UILabel"; text = "Тем самым вы поддерживаете разработчиков и будущее этой игры."; ObjectID = "HcE-zC-8Mb"; */
30 | "HcE-zC-8Mb.text" = "Тем самым вы поддерживаете разработчиков и будущее этой игры.";
31 |
32 | /* Class = "UILabel"; text = "About game"; ObjectID = "Jgd-6A-c27"; */
33 | "Jgd-6A-c27.text" = "About game";
34 |
35 | /* Class = "UILabel"; text = "С ростом уровня, тебе нужно быть всё точнее. Допустимая погрешность уменьшается и приближается к нулю. "; ObjectID = "Mer-Lc-Srv"; */
36 | "Mer-Lc-Srv.text" = "С ростом уровня, тебе нужно быть всё точнее. Допустимая погрешность уменьшается и приближается к нулю. ";
37 |
38 | /* Class = "UIBarButtonItem"; title = "GameCenter"; ObjectID = "OOU-hD-KnT"; */
39 | "OOU-hD-KnT.title" = "GameCenter";
40 |
41 | /* Class = "UILabel"; text = "Title"; ObjectID = "SfQ-82-44J"; */
42 | "SfQ-82-44J.text" = "Title";
43 |
44 | /* Class = "UIButton"; normalTitle = "Настройки"; ObjectID = "UEm-ov-udw"; */
45 | "UEm-ov-udw.normalTitle" = "Настройки";
46 |
47 | /* Class = "UILabel"; text = "Имя"; ObjectID = "UdR-5C-oFn"; */
48 | "UdR-5C-oFn.text" = "Имя";
49 |
50 | /* Class = "UISegmentedControl"; WFX-ln-b8a.segmentTitles[0] = "Обычный"; ObjectID = "WFX-ln-b8a"; */
51 | "WFX-ln-b8a.segmentTitles[0]" = "Обычный";
52 |
53 | /* Class = "UISegmentedControl"; WFX-ln-b8a.segmentTitles[1] = "Хардкор"; ObjectID = "WFX-ln-b8a"; */
54 | "WFX-ln-b8a.segmentTitles[1]" = "Хардкор";
55 |
56 | /* Class = "UINavigationItem"; title = "Таблица лидеров"; ObjectID = "WfK-Xn-GZ7"; */
57 | "WfK-Xn-GZ7.title" = "Таблица лидеров";
58 |
59 | /* Class = "UIButton"; normalTitle = "Начать игру"; ObjectID = "XG3-Od-H5f"; */
60 | "XG3-Od-H5f.normalTitle" = "Начать игру";
61 |
62 | /* Class = "UINavigationItem"; title = "Настройки"; ObjectID = "XLE-0V-4kJ"; */
63 | "XLE-0V-4kJ.title" = "Настройки";
64 |
65 | /* Class = "UIButton"; normalTitle = "Привет!"; ObjectID = "Xkd-9d-Me8"; */
66 | "Xkd-9d-Me8.normalTitle" = "Привет!";
67 |
68 | /* Class = "UIBarButtonItem"; title = "Выйти"; ObjectID = "aai-I2-OCS"; */
69 | "aai-I2-OCS.title" = "Выйти";
70 |
71 | /* Class = "UILabel"; text = "Цель игры — стать лучшим ловцом ритма и возглавить TOP 10 игроков!"; ObjectID = "bff-sU-cWH"; */
72 | "bff-sU-cWH.text" = "Цель игры — стать лучшим ловцом ритма и возглавить TOP 10 игроков!";
73 |
74 | /* Class = "UILabel"; text = "100"; ObjectID = "dhr-Rb-TiP"; */
75 | "dhr-Rb-TiP.text" = "100";
76 |
77 | /* Class = "UINavigationItem"; title = "Правила игры"; ObjectID = "eVo-gA-CMV"; */
78 | "eVo-gA-CMV.title" = "Правила игры";
79 |
80 | /* Class = "UIViewController"; title = "Об игре"; ObjectID = "grm-T7-0u7"; */
81 | "grm-T7-0u7.title" = "Об игре";
82 |
83 | /* Class = "UIButton"; normalTitle = "Об игре / Разработчиках"; ObjectID = "hFQ-ym-wgf"; */
84 | "hFQ-ym-wgf.normalTitle" = "Об игре / Разработчиках";
85 |
86 | /* Class = "UILabel"; text = "00:00:00"; ObjectID = "hsI-to-WQC"; */
87 | "hsI-to-WQC.text" = "00:00:00";
88 |
89 | /* Class = "UILabel"; text = "Ваш рекорд"; ObjectID = "m6W-2S-upj"; */
90 | "m6W-2S-upj.text" = "Ваш рекорд";
91 |
92 | /* Class = "UIButton"; normalTitle = "Нажмите, чтобы попытаться снова"; ObjectID = "mtA-4Z-dfW"; */
93 | "mtA-4Z-dfW.normalTitle" = "Нажмите, чтобы попытаться снова";
94 |
95 | /* Class = "UILabel"; text = "Title"; ObjectID = "vhZ-yn-GUD"; */
96 | "vhZ-yn-GUD.text" = "Title";
97 |
98 | /* Class = "UINavigationItem"; title = "HardcoreTap"; ObjectID = "w3h-z6-VRz"; */
99 | "w3h-z6-VRz.title" = "HardcoreTap";
100 |
101 | /* Class = "UIButton"; normalTitle = "Отключение рекламы"; ObjectID = "zr9-nP-sWi"; */
102 | "zr9-nP-sWi.normalTitle" = "Отключение рекламы";
103 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/HardcoreTap.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Launch/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Launch/ru.lproj/LaunchScreen.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = "HardcoreTap"; ObjectID = "ooY-xA-V1b"; */
3 | "ooY-xA-V1b.text" = "HardcoreTap";
4 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "size" : "29x29",
15 | "idiom" : "iphone",
16 | "filename" : "Icon-Small@2x-1.png",
17 | "scale" : "2x"
18 | },
19 | {
20 | "size" : "29x29",
21 | "idiom" : "iphone",
22 | "filename" : "Icon-Small@3x.png",
23 | "scale" : "3x"
24 | },
25 | {
26 | "size" : "40x40",
27 | "idiom" : "iphone",
28 | "filename" : "Icon-Spotlight-40@2x.png",
29 | "scale" : "2x"
30 | },
31 | {
32 | "size" : "40x40",
33 | "idiom" : "iphone",
34 | "filename" : "Icon-Spotlight-40@3x.png",
35 | "scale" : "3x"
36 | },
37 | {
38 | "size" : "60x60",
39 | "idiom" : "iphone",
40 | "filename" : "Icon-60@2x.png",
41 | "scale" : "2x"
42 | },
43 | {
44 | "size" : "60x60",
45 | "idiom" : "iphone",
46 | "filename" : "Icon-60@3x.png",
47 | "scale" : "3x"
48 | },
49 | {
50 | "idiom" : "ipad",
51 | "size" : "20x20",
52 | "scale" : "1x"
53 | },
54 | {
55 | "idiom" : "ipad",
56 | "size" : "20x20",
57 | "scale" : "2x"
58 | },
59 | {
60 | "size" : "29x29",
61 | "idiom" : "ipad",
62 | "filename" : "Icon-Small.png",
63 | "scale" : "1x"
64 | },
65 | {
66 | "size" : "29x29",
67 | "idiom" : "ipad",
68 | "filename" : "Icon-Small@2x.png",
69 | "scale" : "2x"
70 | },
71 | {
72 | "size" : "40x40",
73 | "idiom" : "ipad",
74 | "filename" : "Icon-Spotlight-40.png",
75 | "scale" : "1x"
76 | },
77 | {
78 | "size" : "40x40",
79 | "idiom" : "ipad",
80 | "filename" : "Icon-Spotlight-40@2x-1.png",
81 | "scale" : "2x"
82 | },
83 | {
84 | "size" : "76x76",
85 | "idiom" : "ipad",
86 | "filename" : "Icon-76.png",
87 | "scale" : "1x"
88 | },
89 | {
90 | "size" : "76x76",
91 | "idiom" : "ipad",
92 | "filename" : "Icon-76@2x.png",
93 | "scale" : "2x"
94 | },
95 | {
96 | "idiom" : "ipad",
97 | "size" : "83.5x83.5",
98 | "scale" : "2x"
99 | },
100 | {
101 | "idiom" : "ios-marketing",
102 | "size" : "1024x1024",
103 | "scale" : "1x"
104 | }
105 | ],
106 | "info" : {
107 | "version" : 1,
108 | "author" : "xcode"
109 | }
110 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/Colors/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/Colors/blueBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : "0.161",
13 | "alpha" : "1.000",
14 | "blue" : "0.784",
15 | "green" : "0.314"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/Colors/blueberry.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : "0.239",
13 | "alpha" : "1.000",
14 | "blue" : "0.431",
15 | "green" : "0.204"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/Colors/darkSkyBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : "0.275",
13 | "alpha" : "1.000",
14 | "blue" : "0.890",
15 | "green" : "0.608"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/Colors/lipstick.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : "0.910",
13 | "alpha" : "1.000",
14 | "blue" : "0.435",
15 | "green" : "0.176"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/Colors/robinSEgg.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : "0.337",
13 | "alpha" : "1.000",
14 | "blue" : "0.961",
15 | "green" : "0.859"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/Colors/yellowishGreen.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "red" : "0.592",
13 | "alpha" : "1.000",
14 | "blue" : "0.137",
15 | "green" : "0.902"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "zeplin",
4 | "version" : 1
5 | },
6 | "images" : [
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon@3x.png",
10 | "scale" : "3x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "icon@2x.png",
15 | "scale" : "2x"
16 | },
17 | {
18 | "idiom" : "universal",
19 | "filename" : "icon.png",
20 | "scale" : "1x"
21 | }
22 | ]
23 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/icon.imageset/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/icon.imageset/icon.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/icon.imageset/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/icon.imageset/icon@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/icon.imageset/icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/icon.imageset/icon@3x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/iconRules.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "iconRules.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "iconRules@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "iconRules@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/iconRules.imageset/iconRules.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/iconRules.imageset/iconRules.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/iconRules.imageset/iconRules@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/iconRules.imageset/iconRules@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/iconRules.imageset/iconRules@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/iconRules.imageset/iconRules@3x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "rules_1.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "rules_1@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "rules_1@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule1.imageset/rules_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule1.imageset/rules_1.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule1.imageset/rules_1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule1.imageset/rules_1@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule1.imageset/rules_1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule1.imageset/rules_1@3x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "rules_2.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "rules_2@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "rules_2@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule2.imageset/rules_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule2.imageset/rules_2.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule2.imageset/rules_2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule2.imageset/rules_2@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule2.imageset/rules_2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule2.imageset/rules_2@3x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "rules_3.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "rules_3@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "rules_3@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule3.imageset/rules_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule3.imageset/rules_3.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule3.imageset/rules_3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule3.imageset/rules_3@2x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Assets.xcassets/rule3.imageset/rules_3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Assets.xcassets/rule3.imageset/rules_3@3x.png
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Audio/bmp60.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HardcoreTap/iOS-App/ee366a085be7c68c32766b560bc5f53c94e25011/Source/HardcoreTap/Resources/Audio/bmp60.mp3
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Translations/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | HardcoreTap
4 |
5 | Created by Быстрицкий Богдан on 07.11.2019.
6 | Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | */
8 |
9 | "cancel" = "Cancel";
10 | "exit" = "Exit";
11 | "enter" = "Enter";
12 |
13 | // Login
14 | "welcome" = "Welcome!";
15 | "create.nickname" = "Create your nickname:";
16 | "start.game" = "Start game";
17 |
18 | // Game
19 | "play" = "Play game";
20 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Resources/Translations/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | HardcoreTap
4 |
5 | Created by Быстрицкий Богдан on 07.11.2019.
6 | Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | */
8 |
9 | // TODO: сделать русский вариант, после завершения работ на англ. языке
10 |
11 | "cancel" = "Отменить";
12 | "exit" = "Выйти";
13 | "enter" = "Войти";
14 |
15 | // Login
16 | "welcome" = "Добро пожаловать!";
17 | "create.nickname" = "Создайте себе никнейм:";
18 | "start.game" = "Начать игру";
19 |
20 | // Game
21 |
22 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/SceneDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.swift
3 | // HardcoreTap
4 | //
5 | // Created by Bogdan Bystritskiy on 11.10.2019.
6 | // Copyright © 2019 Bogdan Bystritskiy. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import SwiftUI
11 |
12 | class SceneDelegate: UIResponder, UIWindowSceneDelegate {
13 |
14 | var window: UIWindow?
15 |
16 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
17 | if let windowScene = scene as? UIWindowScene {
18 | let window = UIWindow(windowScene: windowScene)
19 | let hostingController = UIHostingController(rootView: NavigationView { LoginView() })
20 | window.rootViewController = hostingController
21 | self.window = window
22 | window.makeKeyAndVisible()
23 | }
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Supporting files/GoogleService-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AD_UNIT_ID_FOR_BANNER_TEST
6 | ca-app-pub-3940256099942544/2934735716
7 | AD_UNIT_ID_FOR_INTERSTITIAL_TEST
8 | ca-app-pub-3940256099942544/4411468910
9 | CLIENT_ID
10 | 174737447204-cper139h7vus6rpoqvdal2fn8res3qd9.apps.googleusercontent.com
11 | REVERSED_CLIENT_ID
12 | com.googleusercontent.apps.174737447204-cper139h7vus6rpoqvdal2fn8res3qd9
13 | API_KEY
14 | AIzaSyDJR4T0aroC1-lQZYLoeYHw_fgKDfHN9is
15 | GCM_SENDER_ID
16 | 174737447204
17 | PLIST_VERSION
18 | 1
19 | BUNDLE_ID
20 | com.bystritskiy.HardcoreTap
21 | PROJECT_ID
22 | timekillerapp-124dd
23 | STORAGE_BUCKET
24 | timekillerapp-124dd.appspot.com
25 | IS_ADS_ENABLED
26 |
27 | IS_ANALYTICS_ENABLED
28 |
29 | IS_APPINVITE_ENABLED
30 |
31 | IS_GCM_ENABLED
32 |
33 | IS_SIGNIN_ENABLED
34 |
35 | GOOGLE_APP_ID
36 | 1:174737447204:ios:6429ad7a012f8033
37 | DATABASE_URL
38 | https://timekillerapp-124dd.firebaseio.com
39 |
40 |
--------------------------------------------------------------------------------
/Source/HardcoreTap/Supporting files/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | HardcoreTap
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | GADApplicationIdentifier
24 | ca-app-pub-3940256099942544~1458002511
25 | LSRequiresIPhoneOS
26 |
27 | UIAppFonts
28 |
29 | BNBOLD.ttf
30 | BNBOOK.ttf
31 | BNLIGHT.ttf
32 | BNREGULAR.ttf
33 | BNTHUN.ttf
34 |
35 | UIApplicationSceneManifest
36 |
37 | UIApplicationSupportsMultipleScenes
38 |
39 | UISceneConfigurations
40 |
41 | UIWindowSceneSessionRoleApplication
42 |
43 |
44 | UILaunchStoryboardName
45 | LaunchScreen
46 | UISceneConfigurationName
47 | Default Configuration
48 | UISceneDelegateClassName
49 | $(PRODUCT_MODULE_NAME).SceneDelegate
50 |
51 |
52 |
53 |
54 | UILaunchStoryboardName
55 | LaunchScreen
56 | UIMainStoryboardFile
57 | Main
58 | UIRequiredDeviceCapabilities
59 |
60 | armv7
61 | gamekit
62 |
63 | UIStatusBarStyle
64 | UIStatusBarStyleDefault
65 | UISupportedInterfaceOrientations
66 |
67 | UIInterfaceOrientationPortrait
68 |
69 | UISupportedInterfaceOrientations~ipad
70 |
71 | UIInterfaceOrientationPortrait
72 | UIInterfaceOrientationPortraitUpsideDown
73 | UIInterfaceOrientationLandscapeLeft
74 | UIInterfaceOrientationLandscapeRight
75 |
76 | UIViewControllerBasedStatusBarAppearance
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Source/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | app_identifier "com.bystritskiy.HardcoreTap"
2 | apple_id "q80061@gmail.com"
3 | team_id "F7AZ625QQ5"
--------------------------------------------------------------------------------
/Source/fastlane/Fastfile:
--------------------------------------------------------------------------------
1 | default_platform :ios
2 |
3 | platform :ios do
4 | before_all do
5 | cocoapods
6 | end
7 |
8 | lane :test do
9 | scan
10 | end
11 |
12 | lane :beta do
13 | gym(scheme: "HardcoreTap")
14 | end
15 |
16 | lane :release do
17 | gym(scheme: "HardcoreTap")
18 | upload_to_app_store
19 | end
20 |
21 | end
--------------------------------------------------------------------------------
/Source/fastlane/Matchfile:
--------------------------------------------------------------------------------
1 | git_url "https://github.com/bystritskiy/certificates-hardcoretap"
2 | app_identifier ["com.bystritskiy.HardcoreTap"]
3 | username "q80061@gmail.com"
--------------------------------------------------------------------------------
/Source/fastlane/Snapfile:
--------------------------------------------------------------------------------
1 | # A list of devices you want to take the screenshots from
2 | devices([
3 | "iPhone 5s",
4 | "iPhone 6",
5 | "iPhone 6 Plus",
6 | "iPhone X",
7 | ])
8 |
9 | # A list of supported languages
10 | languages([
11 | 'ru'
12 | ])
13 |
14 | # Where should the resulting screenshots be stored?
15 | output_directory "./fastlane/screenshots"
16 |
17 | # Clears previous screenshots
18 | clear_previous_screenshots true
19 |
20 | # Latest version of iOS
21 | ios_version '15.0'
--------------------------------------------------------------------------------