diff --git a/.github/workflows/very_good_flame_game.yaml b/.github/workflows/very_good_flame_game.yaml new file mode 100644 index 00000000..ddc56385 --- /dev/null +++ b/.github/workflows/very_good_flame_game.yaml @@ -0,0 +1,72 @@ +name: very_good_flame_game + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + paths: + - .github/workflows/very_good_flame_game.yaml + - "very_good_flame_game/**" + branches: + - main + pull_request: + paths: + - .github/workflows/very_good_flame_game.yaml + - "very_good_flame_game/**" + branches: + - main + +jobs: + brick: + defaults: + run: + working-directory: very_good_flame_game/ + + runs-on: ubuntu-latest + + strategy: + matrix: + flutter-version: + # The version of Flutter to use should use the minimum Dart SDK version supported by the package, + # refer to https://docs.flutter.dev/development/tools/sdk/releases. + - "3.16.0" + - "3.x" + + steps: + - name: πŸ“š Git Checkout + uses: actions/checkout@v4 + + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ matrix.flutter-version }} + + - name: 🧱 Mason Make + run: | + dart pub global activate mason_cli + mason get + mason make very_good_flame_game -c config.json -o output --on-conflict overwrite + + - name: πŸ“¦ Install Dependencies + run: | + dart pub global activate very_good_cli + very_good packages get --recursive output/unicorn_game + + - name: ✨ Check Formatting + run: dart format --set-exit-if-changed output/unicorn_game + + - name: πŸ•΅οΈ Analyze + run: dart analyze --fatal-infos --fatal-warnings output/unicorn_game + + - name: πŸ§ͺ Run Tests + run: | + cd output/unicorn_game + very_good test -j 4 --recursive --optimization --coverage --test-randomize-ordering-seed random + + - name: πŸ“Š Check Code Coverage + uses: VeryGoodOpenSource/very_good_coverage@v2 + with: + exclude: "**/*.gen.dart" + path: very_good_flame_game/output/unicorn_game/coverage/lcov.info diff --git a/mason.yaml b/mason.yaml index 8fcd997a..2f36c904 100644 --- a/mason.yaml +++ b/mason.yaml @@ -10,4 +10,6 @@ bricks: very_good_flutter_package: path: very_good_flutter_package very_good_docs_site: - path: very_good_docs_site \ No newline at end of file + path: very_good_docs_site + very_good_flame_game: + path: very_good_flame_game \ No newline at end of file diff --git a/very_good_flame_game/.gitignore b/very_good_flame_game/.gitignore new file mode 100644 index 00000000..68c1013e --- /dev/null +++ b/very_good_flame_game/.gitignore @@ -0,0 +1,20 @@ +.DS_Store +.atom/ +.idea/* +.vscode/* + +# Files and directories created by pub +.dart_tool/ +.packages +pubspec.lock + +# App templates lock file +src/very_good_flame_game/ios/Podfile.lock + +# Conventional directory for build outputs +build/ + +# Files and directories created by mason +.mason/ +mason-lock.json +output/ \ No newline at end of file diff --git a/very_good_flame_game/CHANGELOG.md b/very_good_flame_game/CHANGELOG.md new file mode 100644 index 00000000..a350898a --- /dev/null +++ b/very_good_flame_game/CHANGELOG.md @@ -0,0 +1,73 @@ +# 0.5.1 + +- fix: remove ephemeral and ignored files from template ([#141](https://github.com/VeryGoodOpenSource/very_good_flame_game/issues/141)) + +# 0.5.0 + +- build(deps): bump google_fonts in /src/very_good_flame_game ([#118](https://github.com/VeryGoodOpenSource/very_good_flame_game/pull/118)) +- build(deps): bump actions/checkout from 4.0.0 to 4.1.0 ([#121](https://github.com/VeryGoodOpenSource/very_good_flame_game/pull/121)) +- build(deps): bump actions/checkout from 4.1.0 to 4.1.1 ([#123](https://github.com/VeryGoodOpenSource/very_good_flame_game/pull/123)) +- feat: add macOS platform support ([#125](https://github.com/VeryGoodOpenSource/very_good_flame_game/pull/125)) +- fix: replace `VeryGoodFlameGame` with template ([#130](https://github.com/VeryGoodOpenSource/very_good_flame_game/pull/130)) +- feat: update to flame 1.10 ([#129](https://github.com/VeryGoodOpenSource/very_good_flame_game/pull/129)) +- build(deps): bump mockingjay from 0.4.0 to 0.5.0 in /src/very_good_flame_game ([#133](https://github.com/VeryGoodOpenSource/very_good_flame_game/pull/133)) +- fix: regenerate ios platform dir ([#134](https://github.com/VeryGoodOpenSource/very_good_flame_game/pull/134)) + +# 0.4.0 + +- feat!: update to Flame 1.8.2 +- feat!: bump min Dart SDK to 3.1.0 +- feat!: update to Flutter 3.13.2 +- fix: added RunnerTests iOS Schema +- fix: very_good create flutter_app doesn't create .gradlew files +- feat: upgrade to `very_good_analysis ^5.1.0` +- fix: text style tests for `CounterComponent` + +# 0.3.0 + +- feat!: update to Dart 3.0.0 + +# 0.2.0 + +- feat!: bump min Dart SDK to 2.19.0 + +# 0.1.3 + +- chore: support dart sdk 2.18.0 + +# 0.1.2 + +- feat: update workflows, add spellcheck +- build(deps): update google_fonts + +# 0.1.1 + +- feat: update `very_good_analysis to ^4.0.0` + +# 0.1.0 + +- feat: upgrade bloc + - bloc ^8.1.1 + - flutter_bloc ^8.1.2 + - bloc_test ^9.1.1 +- feat: upgrade to Flutter 3.7.1 + +# 0.0.5 + +- fix: google fonts test issue + +# 0.0.4 + +- feat: upgrade to Flutter 3.7.0 and Flame 1.6.0 + +# 0.0.3 + +- docs: remove copyright header and license from generated code + +# 0.0.2 + +- fix: add support for GlobalCupertinoLocalizations + +# 0.0.1 + +- feat: initial release πŸŽ‰ diff --git a/very_good_flame_game/LICENSE b/very_good_flame_game/LICENSE new file mode 100644 index 00000000..7918ffb5 --- /dev/null +++ b/very_good_flame_game/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Very Good Ventures + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/very_good_flame_game/README.md b/very_good_flame_game/README.md new file mode 100644 index 00000000..88214dbd --- /dev/null +++ b/very_good_flame_game/README.md @@ -0,0 +1,51 @@ +# Very Good Flame Game + +[![Very Good Ventures][logo_white]][very_good_ventures_link_dark] + +Developed with πŸ’™ by [Very Good Ventures][very_good_ventures_link] πŸ¦„ + +[![License: MIT][license_badge]][license_link] +[![Powered by Mason](https://img.shields.io/endpoint?url=https%3A%2F%2Ftinyurl.com%2Fmason-badge)](https://github.com/felangel/mason) + +A Very Good Flame game created by Very Good Ventures πŸ¦„. + +Out of the box, Very Good Flame Game includes: + +- βœ… Components - Think of them as game objects, or anything that can render in a game. +- βœ… Entity and Behaviors - Entities are what manage the game objects and the behaviors handle the game logic for those objects. +- βœ… Sprite Sheets - Easily access and render sprites on the screen. +- βœ… Audio - Background music and sound effects within the game. +- βœ… VGV Project Architecture - This project contains a similar architecture to other VGV projects (see our [core starter app](very_good_core_link)). +- βœ… 100% Test Coverage β€” Each line is executed at least once by a test. + +_\* Learn more at [Generate a game foundation with our new template][very_good_flame_game_blog_link]_ + +## Output πŸ“¦ + +```sh +. +β”œβ”€β”€ android +β”œβ”€β”€ assets +β”‚ β”œβ”€β”€ audio +β”‚ β”œβ”€β”€ images +β”‚ └── licenses +β”œβ”€β”€ ios +β”œβ”€β”€ lib +β”‚ β”œβ”€β”€ app +β”‚ β”œβ”€β”€ game +β”‚ β”œβ”€β”€ gen +β”‚ β”œβ”€β”€ l10n +β”‚ β”œβ”€β”€ loading +β”‚ └── title +β”œβ”€β”€ test +β”œβ”€β”€ web +└── windows +``` + +[license_badge]: https://img.shields.io/badge/license-MIT-blue.svg +[license_link]: https://opensource.org/licenses/MIT +[logo_white]: https://raw.githubusercontent.com/VGVentures/very_good_brand/main/styles/README/vgv_logo_white.png#gh-dark-mode-only +[very_good_core_link]: https://github.com/verygoodopensource/very_good_core +[very_good_flame_game_blog_link]: https://verygood.ventures/blog/generate-a-game-with-our-new-template +[very_good_ventures_link_dark]: https://verygood.ventures#gh-dark-mode-only +[very_good_ventures_link]: https://verygood.ventures diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/bug_report.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..50a4c7b8 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,29 @@ +--- +name: Bug Report +about: Create a report to help us improve +title: "fix: " +labels: bug +--- + +**Description** + +A clear and concise description of what the bug is. + +**Steps To Reproduce** + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected Behavior** + +A clear and concise description of what you expected to happen. + +**Screenshots** + +If applicable, add screenshots to help explain your problem. + +**Additional Context** + +Add any other context about the problem here. diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/build.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/build.md new file mode 100644 index 00000000..0cf8e62c --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/build.md @@ -0,0 +1,14 @@ +--- +name: Build System +about: Changes that affect the build system or external dependencies +title: "build: " +labels: build +--- + +**Description** + +Describe what changes need to be done to the build system and why. + +**Requirements** + +- [ ] The build system is passing diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/chore.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/chore.md new file mode 100644 index 00000000..498ebfd8 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/chore.md @@ -0,0 +1,14 @@ +--- +name: Chore +about: Other changes that don't modify src or test files +title: "chore: " +labels: chore +--- + +**Description** + +Clearly describe what change is needed and why. If this changes code then please use another issue type. + +**Requirements** + +- [ ] No functional changes to the code diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/ci.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/ci.md new file mode 100644 index 00000000..fa2dd9e2 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/ci.md @@ -0,0 +1,14 @@ +--- +name: Continuous Integration +about: Changes to the CI configuration files and scripts +title: "ci: " +labels: ci +--- + +**Description** + +Describe what changes need to be done to the ci/cd system and why. + +**Requirements** + +- [ ] The ci system is passing diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/config.yml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..ec4bb386 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/documentation.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 00000000..f494a4d9 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,14 @@ +--- +name: Documentation +about: Improve the documentation so all collaborators have a common understanding +title: "docs: " +labels: documentation +--- + +**Description** + +Clearly describe what documentation you are looking to add or improve. + +**Requirements** + +- [ ] Requirements go here diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/feature_request.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..ddd2fcca --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,18 @@ +--- +name: Feature Request +about: A new feature to be added to the project +title: "feat: " +labels: feature +--- + +**Description** + +Clearly describe what you are looking to add. The more context the better. + +**Requirements** + +- [ ] Checklist of requirements to be fulfilled + +**Additional Context** + +Add any other context or screenshots about the feature request go here. diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/performance.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/performance.md new file mode 100644 index 00000000..699b8d45 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/performance.md @@ -0,0 +1,14 @@ +--- +name: Performance Update +about: A code change that improves performance +title: "perf: " +labels: performance +--- + +**Description** + +Clearly describe what code needs to be changed and what the performance impact is going to be. Bonus point's if you can tie this directly to user experience. + +**Requirements** + +- [ ] There is no drop in test coverage. diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/refactor.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/refactor.md new file mode 100644 index 00000000..1626c570 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/refactor.md @@ -0,0 +1,14 @@ +--- +name: Refactor +about: A code change that neither fixes a bug nor adds a feature +title: "refactor: " +labels: refactor +--- + +**Description** + +Clearly describe what needs to be refactored and why. Please provide links to related issues (bugs or upcoming features) in order to help prioritize. + +**Requirements** + +- [ ] There is no drop in test coverage. diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/revert.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/revert.md new file mode 100644 index 00000000..9d121dc5 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/revert.md @@ -0,0 +1,16 @@ +--- +name: Revert Commit +about: Reverts a previous commit +title: "revert: " +labels: revert +--- + +**Description** + +Provide a link to a PR/Commit that you are looking to revert and why. + +**Requirements** + +- [ ] Change has been reverted +- [ ] No change in test coverage has happened +- [ ] A new ticket is created for any follow on work that needs to happen diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/style.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/style.md new file mode 100644 index 00000000..02244a7b --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/style.md @@ -0,0 +1,14 @@ +--- +name: Style Changes +about: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc) +title: "style: " +labels: style +--- + +**Description** + +Clearly describe what you are looking to change and why. + +**Requirements** + +- [ ] There is no drop in test coverage. diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/test.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/test.md new file mode 100644 index 00000000..431a7ea7 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/ISSUE_TEMPLATE/test.md @@ -0,0 +1,14 @@ +--- +name: Test +about: Adding missing tests or correcting existing tests +title: "test: " +labels: test +--- + +**Description** + +List out the tests that need to be added or changed. Please also include any information as to why this was not covered in the past. + +**Requirements** + +- [ ] There is no drop in test coverage. diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/PULL_REQUEST_TEMPLATE.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..6b9372ef --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,23 @@ + + +## Description + + + +## Type of Change + + + +- [ ] ✨ New feature (non-breaking change which adds functionality) +- [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue) +- [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change) +- [ ] 🧹 Code refactor +- [ ] βœ… Build configuration change +- [ ] πŸ“ Documentation +- [ ] πŸ—‘οΈ Chore diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/cspell.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/cspell.json new file mode 100644 index 00000000..f16ea4a6 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/cspell.json @@ -0,0 +1,29 @@ +{ + "version": "0.2", + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "dictionaries": ["vgv_allowed", "vgv_forbidden"], + "dictionaryDefinitions": [ + { + "name": "vgv_allowed", + "path": "https://raw.githubusercontent.com/verygoodopensource/very_good_dictionaries/main/allowed.txt", + "description": "Allowed VGV Spellings" + }, + { + "name": "vgv_forbidden", + "path": "https://raw.githubusercontent.com/verygoodopensource/very_good_dictionaries/main/forbidden.txt", + "description": "Forbidden VGV Spellings" + } + ], + "useGitignore": true, + "words": [ + "localizable", + "Empieza", + "Buen", + "Juego", + "botΓ³n", + "inicio", + "inicial", + "aplicaciΓ³n", + "juego" + ] +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/dependabot.yaml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/dependabot.yaml new file mode 100644 index 00000000..63b035cd --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/dependabot.yaml @@ -0,0 +1,11 @@ +version: 2 +enable-beta-ecosystems: true +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "pub" + directory: "/" + schedule: + interval: "daily" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/workflows/main.yaml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/workflows/main.yaml new file mode 100644 index 00000000..c495ef1f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.github/workflows/main.yaml @@ -0,0 +1,29 @@ +name: {{project_name.snakeCase()}} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + semantic-pull-request: + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1 + + build: + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1 + with: + flutter_channel: stable + + spell-check: + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/spell_check.yml@v1 + with: + includes: | + **/*.md + modified_files_only: false diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.gitignore b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.gitignore new file mode 100644 index 00000000..25a05ff9 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.gitignore @@ -0,0 +1,112 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/* + +# Visual Studio Code related +.classpath +.project +.settings/ +.vscode/* + +# packages file containing multi-root paths +.packages.generated + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +build/ +flutter_*.png +linked_*.ds +unlinked.ds +unlinked_spec.ds +.fvm/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java +**/android/key.properties +**/android/.idea/ +**/android/app/debug +**/android/app/profile +**/android/app/release +*.jks + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/.last_build_id +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Coverage +coverage/ + +# Submodules +packages/**/pubspec.lock + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Exceptions to the above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +!/dev/ci/**/Gemfile.lock +!.vscode/extensions.json +!.vscode/launch.json +!.idea/codeStyles/ +!.idea/dictionaries/ +!.idea/runConfigurations/ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/development.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/development.xml new file mode 100644 index 00000000..07b02c6e --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/development.xml @@ -0,0 +1,7 @@ + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/production.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/production.xml new file mode 100644 index 00000000..1c5c7740 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/production.xml @@ -0,0 +1,7 @@ + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/staging.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/staging.xml new file mode 100644 index 00000000..f979a683 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.idea/runConfigurations/staging.xml @@ -0,0 +1,7 @@ + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.metadata b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.metadata new file mode 100644 index 00000000..d00b0cf7 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.metadata @@ -0,0 +1,33 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "db7ef5bf9f59442b0e200a90587e8fa5e0c6336a" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + - platform: macos + create_revision: d211f42860350d914a5ad8102f9ec32764dc6d06 + base_revision: d211f42860350d914a5ad8102f9ec32764dc6d06 + - platform: ios + create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.vscode/extensions.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.vscode/extensions.json new file mode 100644 index 00000000..5500bce3 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "dart-code.dart-code", + "dart-code.flutter", + "felixangelov.bloc" + ] +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.vscode/launch.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.vscode/launch.json new file mode 100644 index 00000000..b4e33cec --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/.vscode/launch.json @@ -0,0 +1,34 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch development", + "request": "launch", + "type": "dart", + "program": "lib/main_development.dart", + "args": [ + "--flavor", + "development", + "--target", + "lib/main_development.dart" + ] + }, + { + "name": "Launch staging", + "request": "launch", + "type": "dart", + "program": "lib/main_staging.dart", + "args": ["--flavor", "staging", "--target", "lib/main_staging.dart"] + }, + { + "name": "Launch production", + "request": "launch", + "type": "dart", + "program": "lib/main_production.dart", + "args": ["--flavor", "production", "--target", "lib/main_production.dart"] + } + ] +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/README.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/README.md new file mode 100644 index 00000000..f613cff7 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/README.md @@ -0,0 +1,164 @@ +# {{project_name.titleCase()}} + +![coverage][coverage_badge] +[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link] +[![License: MIT][license_badge]][license_link] + +Generated by the [Very Good CLI][very_good_cli_link] πŸ€– + +{{{description}}} + +--- + +## Getting Started πŸš€ + +This project contains 3 flavors: + +- development +- staging +- production + +To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands: + +```sh +# Development +$ flutter run --flavor development --target lib/main_development.dart + +# Staging +$ flutter run --flavor staging --target lib/main_staging.dart + +# Production +$ flutter run --flavor production --target lib/main_production.dart +``` + +_\*{{project_name.titleCase()}} works on iOS, Android, Web, and Windows._ + +--- + +## Running Tests πŸ§ͺ + +To run all unit and widget tests use the following command: + +```sh +$ flutter test --coverage --test-randomize-ordering-seed random +``` + +To view the generated coverage report you can use [lcov](https://github.com/linux-test-project/lcov). + +```sh +# Generate Coverage Report +$ genhtml coverage/lcov.info -o coverage/ + +# Open Coverage Report +$ open coverage/index.html +``` + +--- + +## Working with Translations 🌐 + +This project relies on [flutter_localizations][flutter_localizations_link] and follows the [official internationalization guide for Flutter][internationalization_link]. + +### Adding Strings + +1. To add a new localizable string, open the `app_en.arb` file at `lib/l10n/arb/app_en.arb`. + +```arb +{ + "@@locale": "en", + "startVeryGoodGame": "Start the Very Good Game", + "@startVeryGoodGame": { + "description": "The initial start button of the game application" + } +} +``` + +2. Then add a new key/value and description + +```arb +{ + "@@locale": "en", + "startVeryGoodGame": "Start the Very Good Game", + "@startVeryGoodGame": { + "description": "The initial start button of the game application" + }, + "helloWorld": "Hello World", + "@helloWorld": { + "description": "Hello World Text" + } +} +``` + +3. Use the new string + +```dart +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; + +@override +Widget build(BuildContext context) { + final l10n = context.l10n; + return Text(l10n.helloWorld); +} +``` + +### Adding Supported Locales + +Update the `CFBundleLocalizations` array in the `Info.plist` at `ios/Runner/Info.plist` to include the new locale. + +```xml + ... + + CFBundleLocalizations + + en + es + + + ... +``` + +### Adding Translations + +1. For each supported locale, add a new ARB file in `lib/l10n/arb`. + +``` +β”œβ”€β”€ l10n +β”‚ β”œβ”€β”€ arb +β”‚ β”‚ β”œβ”€β”€ app_en.arb +β”‚ β”‚ └── app_es.arb +``` + +2. Add the translated strings to each `.arb` file: + +`app_en.arb` + +```arb +{ + "@@locale": "en", + "startVeryGoodGame": "Start the Very Good Game", + "@startVeryGoodGame": { + "description": "The initial start button of the game application" + } +} +``` + +`app_es.arb` + +```arb +{ + "@@locale": "es", + "startVeryGoodGame": "Empieza el Muy Buen Juego", + "@startVeryGoodGame": { + "description": "El botΓ³n de inicio inicial de la aplicaciΓ³n del juego" + } +} +``` + +[coverage_badge]: coverage_badge.svg +[flutter_localizations_link]: https://api.flutter.dev/flutter/flutter_localizations/flutter_localizations-library.html +[internationalization_link]: https://flutter.dev/docs/development/accessibility-and-localization/internationalization +[license_badge]: https://img.shields.io/badge/license-MIT-blue.svg +[license_link]: https://opensource.org/licenses/MIT +[very_good_analysis_badge]: https://img.shields.io/badge/style-very_good_analysis-B22C89.svg +[very_good_analysis_link]: https://pub.dev/packages/very_good_analysis +[very_good_cli_link]: https://github.com/VeryGoodOpenSource/very_good_cli diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/analysis_options.yaml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/analysis_options.yaml new file mode 100644 index 00000000..b0e602e9 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/analysis_options.yaml @@ -0,0 +1,7 @@ +include: package:very_good_analysis/analysis_options.5.1.0.yaml +analyzer: + exclude: + - lib/gen/* +linter: + rules: + public_member_api_docs: false diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/.gitignore b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/.gitignore new file mode 100644 index 00000000..d6aa2915 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/.gitignore @@ -0,0 +1,11 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/build.gradle b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/build.gradle new file mode 100644 index 00000000..b8039444 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/build.gradle @@ -0,0 +1,118 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + namespace "{{org_name.dotCase()}}.{{project_name.snakeCase()}}" + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "{{org_name.dotCase()}}.{{project_name.snakeCase()}}" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + signingConfigs { + if (System.getenv("ANDROID_KEYSTORE_PATH")) { + release { + storeFile file(System.getenv("ANDROID_KEYSTORE_PATH")) + keyAlias System.getenv("ANDROID_KEYSTORE_ALIAS") + keyPassword System.getenv("ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD") + storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD") + } + } else { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + } + + flavorDimensions "default" + productFlavors { + production { + dimension "default" + applicationIdSuffix "" + manifestPlaceholders = [appName: "{{project_name.titleCase()}}"] + } + staging { + dimension "default" + applicationIdSuffix ".stg" + manifestPlaceholders = [appName: "[STG] {{project_name.titleCase()}}"] + } + development { + dimension "default" + applicationIdSuffix ".dev" + manifestPlaceholders = [appName: "[DEV] {{project_name.titleCase()}}"] + } + } + + buildTypes { + release { + signingConfig signingConfigs.release + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt') + } + debug { + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/debug/AndroidManifest.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..c026bfb1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/ic_launcher-playstore.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/ic_launcher-playstore.png new file mode 100644 index 00000000..87f46620 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/ic_launcher-playstore.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/drawable/ic_launcher_foreground.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..0f31f64a --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-anydpi-v26/ic_launcher.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-anydpi-v26/ic_launcher_round.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-hdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..af803144 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-hdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-hdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000..005f9514 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-mdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..1bab3a39 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-mdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-mdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000..51bac1bd Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..0c02cd60 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000..e8eb3eec Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..8b8e0e4b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..808d082e Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..3084696b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..20bc5baa Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/values/ic_launcher_background.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/values/ic_launcher_background.xml new file mode 100644 index 00000000..c5d5899f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/development/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/AndroidManifest.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..aae4b5a9 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/ic_launcher-playstore.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/ic_launcher-playstore.png new file mode 100644 index 00000000..d920815d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/ic_launcher-playstore.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/kotlin/{{org_name.pathCase()}}/MainActivity.kt b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/kotlin/{{org_name.pathCase()}}/MainActivity.kt new file mode 100644 index 00000000..28ecd3bc --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/kotlin/{{org_name.pathCase()}}/MainActivity.kt @@ -0,0 +1,6 @@ +package {{org_name.dotCase()}}.{{project_name.snakeCase()}} + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable-v21/launch_background.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 00000000..bdf0fcc4 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/ic_launch_image.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/ic_launch_image.xml new file mode 100644 index 00000000..b49e9674 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/ic_launch_image.xml @@ -0,0 +1,12 @@ + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..4e37e107 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/launch_background.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..bdf0fcc4 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..2c681ca3 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000..000642c6 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..5ebc0f5c Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000..fac2554a Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..391f46b7 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000..8d12806d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..2b005293 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..479b9682 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..5f55d972 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..2959a5b0 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values-night/styles.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000..449a9f93 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values/ic_launcher_background.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 00000000..c5d5899f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values/styles.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..d74aa35c --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/profile/AndroidManifest.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..c026bfb1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/ic_launcher-playstore.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/ic_launcher-playstore.png new file mode 100644 index 00000000..c0524bd5 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/ic_launcher-playstore.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/drawable/ic_launcher_foreground.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..0f48a6e1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-anydpi-v26/ic_launcher.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-anydpi-v26/ic_launcher_round.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-hdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..84db84c0 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-hdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-hdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000..a982bc03 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-mdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..e54346b8 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-mdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-mdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000..0c924166 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..bcb4fbda Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000..cee8a882 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..fc2a1d2c Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..eda13fac Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..a186cfbf Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher_round.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..71e04d20 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/values/ic_launcher_background.xml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/values/ic_launcher_background.xml new file mode 100644 index 00000000..c5d5899f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/app/src/staging/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/build.gradle b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/build.gradle new file mode 100644 index 00000000..e670e26e --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.3.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradle.properties b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradle.properties new file mode 100644 index 00000000..94adc3a3 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradle/wrapper/gradle-wrapper.properties b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..6b665338 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradlew b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradlew new file mode 100755 index 00000000..9d82f789 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradlew.bat b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradlew.bat new file mode 100644 index 00000000..aec99730 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/settings.gradle b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/settings.gradle new file mode 100644 index 00000000..44e62bcf --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/audio/background.mp3 b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/audio/background.mp3 new file mode 100644 index 00000000..49738fb8 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/audio/background.mp3 differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/audio/effect.mp3 b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/audio/effect.mp3 new file mode 100644 index 00000000..405dfc77 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/audio/effect.mp3 differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/images/unicorn_animation.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/images/unicorn_animation.png new file mode 100644 index 00000000..173e66f6 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/images/unicorn_animation.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/licenses/poppins/OFL.txt b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/licenses/poppins/OFL.txt new file mode 100644 index 00000000..246c977c --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/assets/licenses/poppins/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/coverage_badge.svg b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/coverage_badge.svg new file mode 100644 index 00000000..88bfadfb --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/coverage_badge.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + coverage + coverage + 100% + 100% + + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/.gitignore b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/.gitignore new file mode 100644 index 00000000..7a7f9873 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/AppFrameworkInfo.plist b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..cb6be309 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/Debug.xcconfig b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..ec97fc6f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/Release.xcconfig b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..c4855bfe --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Podfile b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Podfile new file mode 100644 index 00000000..fdcc671e --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.pbxproj b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..e5b6a542 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,1315 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 368AC3022765110E05CC464D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8204C4ABC91033EB04DBD400 /* Pods_Runner.framework */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + F5A99BBBF9C9FB095DC6AF3E /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0413679AB83F99E3931AA133 /* Pods_RunnerTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 011ACE915464F88F3A667534 /* Pods-Runner.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-development.xcconfig"; sourceTree = ""; }; + 0413679AB83F99E3931AA133 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 14BE7F9E105498FB754422B5 /* Pods-Runner.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-development.xcconfig"; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3536FD9C92B39D1ADCDB1AC5 /* Pods-RunnerTests.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-production.xcconfig"; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3BEDBB5903DF259B39868DB4 /* Pods-Runner.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-staging.xcconfig"; sourceTree = ""; }; + 41EC46A7111C2C4B0272AA7F /* Pods-RunnerTests.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-staging.xcconfig"; sourceTree = ""; }; + 43FD19E824D78C0DBA105FE7 /* Pods-RunnerTests.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-development.xcconfig"; sourceTree = ""; }; + 4A1343D0729AB74F807E02FA /* Pods-Runner.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-development.xcconfig"; sourceTree = ""; }; + 677065E0400F7A27F7D0C22D /* Pods-Runner.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-production.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 8204C4ABC91033EB04DBD400 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 93429E72235BBC8A7921E8C9 /* Pods-Runner.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-staging.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BCD810B3A62A604E5428BBBB /* Pods-RunnerTests.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-development.xcconfig"; sourceTree = ""; }; + BEC13B91887A37D84E8627F0 /* Pods-RunnerTests.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-production.xcconfig"; sourceTree = ""; }; + BF1DB162271CCFF9F825F312 /* Pods-RunnerTests.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-development.xcconfig"; sourceTree = ""; }; + C01B524C9B6A895205BF92B2 /* Pods-RunnerTests.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-production.xcconfig"; sourceTree = ""; }; + E0ACE8DFFC680266FE43135E /* Pods-Runner.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-staging.xcconfig"; sourceTree = ""; }; + F18D9A7355D72F34BE2C647B /* Pods-RunnerTests.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-staging.xcconfig"; sourceTree = ""; }; + F4F22A416C83F387A1714F26 /* Pods-Runner.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-production.xcconfig"; sourceTree = ""; }; + F702CBE22C2E48A375F42938 /* Pods-RunnerTests.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-staging.xcconfig"; sourceTree = ""; }; + F9DE04BCB5BDB84AE92990E0 /* Pods-Runner.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-production.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 368AC3022765110E05CC464D /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCF38D003DF6CCA130FCDD75 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F5A99BBBF9C9FB095DC6AF3E /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 12C7309F050857AA52E0CE43 /* Pods */ = { + isa = PBXGroup; + children = ( + F4F22A416C83F387A1714F26 /* Pods-Runner.debug-production.xcconfig */, + 3BEDBB5903DF259B39868DB4 /* Pods-Runner.debug-staging.xcconfig */, + 4A1343D0729AB74F807E02FA /* Pods-Runner.debug-development.xcconfig */, + 677065E0400F7A27F7D0C22D /* Pods-Runner.release-production.xcconfig */, + 93429E72235BBC8A7921E8C9 /* Pods-Runner.release-staging.xcconfig */, + 011ACE915464F88F3A667534 /* Pods-Runner.release-development.xcconfig */, + F9DE04BCB5BDB84AE92990E0 /* Pods-Runner.profile-production.xcconfig */, + E0ACE8DFFC680266FE43135E /* Pods-Runner.profile-staging.xcconfig */, + 14BE7F9E105498FB754422B5 /* Pods-Runner.profile-development.xcconfig */, + BEC13B91887A37D84E8627F0 /* Pods-RunnerTests.debug-production.xcconfig */, + F18D9A7355D72F34BE2C647B /* Pods-RunnerTests.debug-staging.xcconfig */, + BCD810B3A62A604E5428BBBB /* Pods-RunnerTests.debug-development.xcconfig */, + C01B524C9B6A895205BF92B2 /* Pods-RunnerTests.release-production.xcconfig */, + F702CBE22C2E48A375F42938 /* Pods-RunnerTests.release-staging.xcconfig */, + BF1DB162271CCFF9F825F312 /* Pods-RunnerTests.release-development.xcconfig */, + 3536FD9C92B39D1ADCDB1AC5 /* Pods-RunnerTests.profile-production.xcconfig */, + 41EC46A7111C2C4B0272AA7F /* Pods-RunnerTests.profile-staging.xcconfig */, + 43FD19E824D78C0DBA105FE7 /* Pods-RunnerTests.profile-development.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 12C7309F050857AA52E0CE43 /* Pods */, + AFB18BD86BB09F1BD028052B /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + AFB18BD86BB09F1BD028052B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8204C4ABC91033EB04DBD400 /* Pods_Runner.framework */, + 0413679AB83F99E3931AA133 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 75DA134EDEC78A52101FE0B2 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + DCF38D003DF6CCA130FCDD75 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 4A2528F5DF7F559DFC9E587F /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 43D76A9B7386EE8C8D7C751C /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = NO; + LastUpgradeCheck = 1430; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 43D76A9B7386EE8C8D7C751C /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 4A2528F5DF7F559DFC9E587F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 75DA134EDEC78A52101FE0B2 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-production"; + }; + 249021D4217E4FDB00AE95B9 /* Profile-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "{{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-production"; + }; + 331C8088294A63A400263BE5 /* Debug-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BEC13B91887A37D84E8627F0 /* Pods-RunnerTests.debug-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Debug-production"; + }; + 331C8089294A63A400263BE5 /* Release-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C01B524C9B6A895205BF92B2 /* Pods-RunnerTests.release-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Release-production"; + }; + 331C808A294A63A400263BE5 /* Profile-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3536FD9C92B39D1ADCDB1AC5 /* Pods-RunnerTests.profile-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Profile-production"; + }; + 3CC047642B0F8E9F00713D92 /* Debug-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-development"; + }; + 3CC047652B0F8E9F00713D92 /* Debug-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev"; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "[DEV] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-development"; + }; + 3CC047662B0F8E9F00713D92 /* Debug-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BCD810B3A62A604E5428BBBB /* Pods-RunnerTests.debug-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Debug-development"; + }; + 3CC047672B0F8EAF00713D92 /* Release-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-development"; + }; + 3CC047682B0F8EAF00713D92 /* Release-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev"; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "[DEV] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-development"; + }; + 3CC047692B0F8EAF00713D92 /* Release-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BF1DB162271CCFF9F825F312 /* Pods-RunnerTests.release-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Release-development"; + }; + 3CC0476A2B0F8EB400713D92 /* Profile-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-development"; + }; + 3CC0476B2B0F8EB400713D92 /* Profile-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev"; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "[DEV] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-development"; + }; + 3CC0476C2B0F8EB400713D92 /* Profile-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 43FD19E824D78C0DBA105FE7 /* Pods-RunnerTests.profile-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Profile-development"; + }; + 3CC0476D2B0F8EBF00713D92 /* Debug-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-staging"; + }; + 3CC0476E2B0F8EBF00713D92 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg"; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "[STG] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.stg; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-staging"; + }; + 3CC0476F2B0F8EBF00713D92 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F18D9A7355D72F34BE2C647B /* Pods-RunnerTests.debug-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Debug-staging"; + }; + 3CC047702B0F8ECA00713D92 /* Release-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-staging"; + }; + 3CC047712B0F8ECA00713D92 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg"; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "[STG] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.stg; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-staging"; + }; + 3CC047722B0F8ECA00713D92 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F702CBE22C2E48A375F42938 /* Pods-RunnerTests.release-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Release-staging"; + }; + 3CC047732B0F8ECF00713D92 /* Profile-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-staging"; + }; + 3CC047742B0F8ECF00713D92 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg"; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "[STG] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.stg; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-staging"; + }; + 3CC047752B0F8ECF00713D92 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 41EC46A7111C2C4B0272AA7F /* Pods-RunnerTests.profile-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Profile-staging"; + }; + 97C147031CF9000F007C117D /* Debug-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-production"; + }; + 97C147041CF9000F007C117D /* Release-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-production"; + }; + 97C147061CF9000F007C117D /* Debug-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "{{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-production"; + }; + 97C147071CF9000F007C117D /* Release-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FLAVOR_APP_NAME = "{{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-production"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug-production */, + 3CC0476F2B0F8EBF00713D92 /* Debug-staging */, + 3CC047662B0F8E9F00713D92 /* Debug-development */, + 331C8089294A63A400263BE5 /* Release-production */, + 3CC047722B0F8ECA00713D92 /* Release-staging */, + 3CC047692B0F8EAF00713D92 /* Release-development */, + 331C808A294A63A400263BE5 /* Profile-production */, + 3CC047752B0F8ECF00713D92 /* Profile-staging */, + 3CC0476C2B0F8EB400713D92 /* Profile-development */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-production"; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug-production */, + 3CC0476D2B0F8EBF00713D92 /* Debug-staging */, + 3CC047642B0F8E9F00713D92 /* Debug-development */, + 97C147041CF9000F007C117D /* Release-production */, + 3CC047702B0F8ECA00713D92 /* Release-staging */, + 3CC047672B0F8EAF00713D92 /* Release-development */, + 249021D3217E4FDB00AE95B9 /* Profile-production */, + 3CC047732B0F8ECF00713D92 /* Profile-staging */, + 3CC0476A2B0F8EB400713D92 /* Profile-development */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-production"; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug-production */, + 3CC0476E2B0F8EBF00713D92 /* Debug-staging */, + 3CC047652B0F8E9F00713D92 /* Debug-development */, + 97C147071CF9000F007C117D /* Release-production */, + 3CC047712B0F8ECA00713D92 /* Release-staging */, + 3CC047682B0F8EAF00713D92 /* Release-development */, + 249021D4217E4FDB00AE95B9 /* Profile-production */, + 3CC047742B0F8ECF00713D92 /* Profile-staging */, + 3CC0476B2B0F8EB400713D92 /* Profile-development */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-production"; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..87131a09 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme new file mode 100644 index 00000000..06da47c9 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme new file mode 100644 index 00000000..1beda48d --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme new file mode 100644 index 00000000..6e3b2527 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/contents.xcworkspacedata b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..21a3cc14 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/AppDelegate.swift b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/100.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/100.png new file mode 100644 index 00000000..668231cd Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/100.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024.png new file mode 100644 index 00000000..bffc902b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/114.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/114.png new file mode 100644 index 00000000..1ab8de3c Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/114.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/120.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/120.png new file mode 100644 index 00000000..99ac1d3f Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/120.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/128.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/128.png new file mode 100644 index 00000000..fdff4819 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/128.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/144.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/144.png new file mode 100644 index 00000000..9d1d688a Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/144.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/152.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/152.png new file mode 100644 index 00000000..2fc14ff9 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/152.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/16.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/16.png new file mode 100644 index 00000000..a5ae5f6b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/16.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/167.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/167.png new file mode 100644 index 00000000..f9ed85a9 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/167.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/172.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/172.png new file mode 100644 index 00000000..0ef9635b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/172.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/180.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/180.png new file mode 100644 index 00000000..099b1e4f Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/180.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/196.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/196.png new file mode 100644 index 00000000..bb733c9c Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/196.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/20.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/20.png new file mode 100644 index 00000000..cb965204 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/20.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/216.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/216.png new file mode 100644 index 00000000..cffc298d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/216.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/256.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/256.png new file mode 100644 index 00000000..19a53f27 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/256.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/29.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/29.png new file mode 100644 index 00000000..53dfe27b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/29.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/32.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/32.png new file mode 100644 index 00000000..754605cc Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/32.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/40.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/40.png new file mode 100644 index 00000000..3efa2e7d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/40.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/48.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/48.png new file mode 100644 index 00000000..6f9bf17b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/48.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/50.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/50.png new file mode 100644 index 00000000..9b2ab2e2 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/50.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/512.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/512.png new file mode 100644 index 00000000..b0a95117 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/512.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/55.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/55.png new file mode 100644 index 00000000..f7c4c989 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/55.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/57.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/57.png new file mode 100644 index 00000000..6f7c4569 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/57.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/58.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/58.png new file mode 100644 index 00000000..bd65bcc2 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/58.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/60.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/60.png new file mode 100644 index 00000000..ca29a5a2 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/60.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/64.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/64.png new file mode 100644 index 00000000..12f6f8b0 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/64.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/72.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/72.png new file mode 100644 index 00000000..a3325913 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/72.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/76.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/76.png new file mode 100644 index 00000000..b6ee3b11 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/76.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/80.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/80.png new file mode 100644 index 00000000..675647b4 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/80.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/87.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/87.png new file mode 100644 index 00000000..2d3474b9 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/87.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/88.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/88.png new file mode 100644 index 00000000..283c13b2 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/88.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/Contents.json new file mode 100644 index 00000000..f78687a2 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/Contents.json @@ -0,0 +1,344 @@ +{ + "images" : [ + { + "filename" : "40.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "60.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "87.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "80.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "57.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "57x57" + }, + { + "filename" : "114.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "57x57" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "180.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "20.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "filename" : "80.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "50.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "50x50" + }, + { + "filename" : "100.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "50x50" + }, + { + "filename" : "72.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "72x72" + }, + { + "filename" : "144.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "72x72" + }, + { + "filename" : "76.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "filename" : "152.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "filename" : "167.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + }, + { + "filename" : "16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "32.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "64.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "256.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "256.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "512.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "512.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "1024.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + }, + { + "filename" : "48.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "24x24", + "subtype" : "38mm" + }, + { + "filename" : "55.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "27.5x27.5", + "subtype" : "42mm" + }, + { + "filename" : "58.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "87.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "33x33", + "subtype" : "45mm" + }, + { + "filename" : "80.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "40x40", + "subtype" : "38mm" + }, + { + "filename" : "88.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "44x44", + "subtype" : "40mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "46x46", + "subtype" : "41mm" + }, + { + "filename" : "100.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "51x51", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "54x54", + "subtype" : "49mm" + }, + { + "filename" : "172.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "86x86", + "subtype" : "38mm" + }, + { + "filename" : "196.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "98x98", + "subtype" : "42mm" + }, + { + "filename" : "216.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "108x108", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "117x117", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "129x129", + "subtype" : "49mm" + }, + { + "filename" : "1024.png", + "idiom" : "watch-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/100.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/100.png new file mode 100644 index 00000000..13db4fb6 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/100.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/1024.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/1024.png new file mode 100644 index 00000000..7cc30379 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/1024.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/114.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/114.png new file mode 100644 index 00000000..42a7dd9c Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/114.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/120.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/120.png new file mode 100644 index 00000000..e8ad5369 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/120.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/128.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/128.png new file mode 100644 index 00000000..a0f21884 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/128.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/144.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/144.png new file mode 100644 index 00000000..4fe5d3f5 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/144.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/152.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/152.png new file mode 100644 index 00000000..0d96b12e Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/152.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/16.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/16.png new file mode 100644 index 00000000..7502c886 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/16.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/167.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/167.png new file mode 100644 index 00000000..8b0501e4 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/167.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/172.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/172.png new file mode 100644 index 00000000..618385c8 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/172.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/180.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/180.png new file mode 100644 index 00000000..f726d9f3 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/180.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/196.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/196.png new file mode 100644 index 00000000..aec7aa6b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/196.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/20.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/20.png new file mode 100644 index 00000000..a246114c Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/20.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/216.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/216.png new file mode 100644 index 00000000..0e666cd3 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/216.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/256.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/256.png new file mode 100644 index 00000000..bcc9dfc3 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/256.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/29.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/29.png new file mode 100644 index 00000000..e96a5520 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/29.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/32.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/32.png new file mode 100644 index 00000000..c35e4085 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/32.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/40.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/40.png new file mode 100644 index 00000000..fc92c38a Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/40.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/48.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/48.png new file mode 100644 index 00000000..35768bdf Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/48.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/50.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/50.png new file mode 100644 index 00000000..c79a1818 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/50.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/512.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/512.png new file mode 100644 index 00000000..5a802b02 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/512.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/55.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/55.png new file mode 100644 index 00000000..2506e4e7 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/55.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/57.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/57.png new file mode 100644 index 00000000..5f11a9e6 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/57.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/58.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/58.png new file mode 100644 index 00000000..ca6f64c6 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/58.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/60.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/60.png new file mode 100644 index 00000000..a4880068 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/60.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/64.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/64.png new file mode 100644 index 00000000..e60c0152 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/64.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/72.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/72.png new file mode 100644 index 00000000..3b933bac Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/72.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/76.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/76.png new file mode 100644 index 00000000..6dcae3c8 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/76.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/80.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/80.png new file mode 100644 index 00000000..42854fc4 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/80.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/87.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/87.png new file mode 100644 index 00000000..bd32041a Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/87.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/88.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/88.png new file mode 100644 index 00000000..9a20459e Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/88.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/Contents.json new file mode 100644 index 00000000..f78687a2 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon-stg.appiconset/Contents.json @@ -0,0 +1,344 @@ +{ + "images" : [ + { + "filename" : "40.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "60.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "87.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "80.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "57.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "57x57" + }, + { + "filename" : "114.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "57x57" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "180.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "20.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "filename" : "80.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "50.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "50x50" + }, + { + "filename" : "100.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "50x50" + }, + { + "filename" : "72.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "72x72" + }, + { + "filename" : "144.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "72x72" + }, + { + "filename" : "76.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "filename" : "152.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "filename" : "167.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + }, + { + "filename" : "16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "32.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "64.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "256.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "256.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "512.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "512.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "1024.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + }, + { + "filename" : "48.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "24x24", + "subtype" : "38mm" + }, + { + "filename" : "55.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "27.5x27.5", + "subtype" : "42mm" + }, + { + "filename" : "58.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "87.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "33x33", + "subtype" : "45mm" + }, + { + "filename" : "80.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "40x40", + "subtype" : "38mm" + }, + { + "filename" : "88.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "44x44", + "subtype" : "40mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "46x46", + "subtype" : "41mm" + }, + { + "filename" : "100.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "51x51", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "54x54", + "subtype" : "49mm" + }, + { + "filename" : "172.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "86x86", + "subtype" : "38mm" + }, + { + "filename" : "196.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "98x98", + "subtype" : "42mm" + }, + { + "filename" : "216.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "108x108", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "117x117", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "129x129", + "subtype" : "49mm" + }, + { + "filename" : "1024.png", + "idiom" : "watch-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 00000000..75cfbe60 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 00000000..329800c7 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 00000000..9c137996 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 00000000..dfd81fe1 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png new file mode 100644 index 00000000..2b703a7d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 00000000..135173ec Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 00000000..e4fdb30f Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png new file mode 100644 index 00000000..f038c244 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png new file mode 100644 index 00000000..48cecab9 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png new file mode 100644 index 00000000..8c9787d3 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 00000000..4e78a31b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png new file mode 100644 index 00000000..d5b05b46 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png new file mode 100644 index 00000000..48fcf1ca Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png new file mode 100644 index 00000000..981cb646 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png new file mode 100644 index 00000000..0241f07f Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 00000000..71886881 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png new file mode 100644 index 00000000..0bc221e8 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png new file mode 100644 index 00000000..4d3d396a Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png new file mode 100644 index 00000000..2fde5fef Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 00000000..a732f38d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png new file mode 100644 index 00000000..2ceb9751 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png new file mode 100644 index 00000000..d40f1b10 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 00000000..52777dce Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png new file mode 100644 index 00000000..ebdb663e Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png new file mode 100644 index 00000000..ef6f72d7 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png new file mode 100644 index 00000000..1c6c76bb Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 00000000..74728efe Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 00000000..b983366f Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png new file mode 100644 index 00000000..08826726 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png new file mode 100644 index 00000000..8469bd6c Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png new file mode 100644 index 00000000..e0e54de7 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..f78687a2 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,344 @@ +{ + "images" : [ + { + "filename" : "40.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "60.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "87.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "80.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "57.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "57x57" + }, + { + "filename" : "114.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "57x57" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "180.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "20.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "filename" : "80.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "50.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "50x50" + }, + { + "filename" : "100.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "50x50" + }, + { + "filename" : "72.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "72x72" + }, + { + "filename" : "144.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "72x72" + }, + { + "filename" : "76.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "filename" : "152.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "filename" : "167.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + }, + { + "filename" : "16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "32.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "64.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "256.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "256.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "512.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "512.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "1024.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + }, + { + "filename" : "48.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "24x24", + "subtype" : "38mm" + }, + { + "filename" : "55.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "27.5x27.5", + "subtype" : "42mm" + }, + { + "filename" : "58.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "87.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "33x33", + "subtype" : "45mm" + }, + { + "filename" : "80.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "40x40", + "subtype" : "38mm" + }, + { + "filename" : "88.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "44x44", + "subtype" : "40mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "46x46", + "subtype" : "41mm" + }, + { + "filename" : "100.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "51x51", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "54x54", + "subtype" : "49mm" + }, + { + "filename" : "172.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "86x86", + "subtype" : "38mm" + }, + { + "filename" : "196.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "98x98", + "subtype" : "42mm" + }, + { + "filename" : "216.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "108x108", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "117x117", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "129x129", + "subtype" : "49mm" + }, + { + "filename" : "1024.png", + "idiom" : "watch-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..b23a03e0 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LaunchImage@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LaunchImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LaunchImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png new file mode 100644 index 00000000..cea48258 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 00000000..0e20080e Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 00000000..5c562f9d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Base.lproj/LaunchScreen.storyboard b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Base.lproj/Main.storyboard b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..5a57f308 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Info.plist b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Info.plist new file mode 100644 index 00000000..f2e63065 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Info.plist @@ -0,0 +1,56 @@ + + + + + CFBundleLocalizations + + en + es + + UIViewControllerBasedStatusBarAppearance + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + $(FLAVOR_APP_NAME) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + {{project_name.titleCase()}} + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Runner-Bridging-Header.h b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..308a2a56 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/RunnerTests/RunnerTests.swift b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..86a7c3b1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/l10n.yaml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/l10n.yaml new file mode 100644 index 00000000..6f72a55d --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/l10n.yaml @@ -0,0 +1,4 @@ +arb-dir: lib/l10n/arb +template-arb-file: app_en.arb +output-localization-file: app_localizations.dart +nullable-getter: false diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/app/app.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/app/app.dart new file mode 100644 index 00000000..f23ab3c8 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/app/app.dart @@ -0,0 +1 @@ +export 'view/app.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/app/view/app.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/app/view/app.dart new file mode 100644 index 00000000..a613d2cf --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/app/view/app.dart @@ -0,0 +1,54 @@ +import 'package:audioplayers/audioplayers.dart'; +import 'package:flame/cache.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; +import 'package:{{project_name.snakeCase()}}/loading/loading.dart'; + +class App extends StatelessWidget { + const App({super.key}); + + @override + Widget build(BuildContext context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (_) => PreloadCubit( + Images(prefix: ''), + AudioCache(prefix: ''), + )..loadSequentially(), + ), + ], + child: const AppView(), + ); + } +} + +class AppView extends StatelessWidget { + const AppView({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + debugShowCheckedModeBanner: false, + theme: ThemeData( + primaryColor: const Color(0xFF2A48DF), + appBarTheme: const AppBarTheme(color: Color(0xFF2A48DF)), + colorScheme: ColorScheme.fromSwatch( + accentColor: const Color(0xFF2A48DF), + ), + scaffoldBackgroundColor: const Color(0xFFFFFFFF), + elevatedButtonTheme: ElevatedButtonThemeData( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(const Color(0xFF2A48DF)), + ), + ), + textTheme: GoogleFonts.poppinsTextTheme(), + ), + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + home: const LoadingPage(), + ); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/bootstrap.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/bootstrap.dart new file mode 100644 index 00000000..376f6f1f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/bootstrap.dart @@ -0,0 +1,39 @@ +import 'dart:async'; +import 'dart:developer'; + +import 'package:bloc/bloc.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; +import 'package:{{project_name.snakeCase()}}/gen/assets.gen.dart'; + +class AppBlocObserver extends BlocObserver { + @override + void onChange(BlocBase bloc, Change change) { + super.onChange(bloc, change); + log('onChange(${bloc.runtimeType}, $change)'); + } + + @override + void onError(BlocBase bloc, Object error, StackTrace stackTrace) { + log('onError(${bloc.runtimeType}, $error, $stackTrace)'); + super.onError(bloc, error, stackTrace); + } +} + +Future bootstrap(FutureOr Function() builder) async { + FlutterError.onError = (details) { + log(details.exceptionAsString(), stackTrace: details.stack); + }; + + Bloc.observer = AppBlocObserver(); + + LicenseRegistry.addLicense(() async* { + final poppins = await rootBundle.loadString(Assets.licenses.poppins.ofl); + yield LicenseEntryWithLineBreaks(['poppins'], poppins); + }); + + // Add cross-flavor configuration here + + runApp(await builder()); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/components/components.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/components/components.dart new file mode 100644 index 00000000..b0620cf3 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/components/components.dart @@ -0,0 +1 @@ +export 'counter_component.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/components/counter_component.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/components/counter_component.dart new file mode 100644 index 00000000..d10baa57 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/components/counter_component.dart @@ -0,0 +1,27 @@ +import 'package:flame/components.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; + +class CounterComponent extends PositionComponent with HasGameRef<{{project_name.pascalCase()}}> { + CounterComponent({ + required super.position, + }) : super(anchor: Anchor.center); + + late final TextComponent text; + + @override + Future onLoad() async { + await add( + text = TextComponent( + anchor: Anchor.center, + textRenderer: TextPaint( + style: game.textStyle, + ), + ), + ); + } + + @override + void update(double dt) { + text.text = gameRef.l10n.counterText(gameRef.counter); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/audio/audio_cubit.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/audio/audio_cubit.dart new file mode 100644 index 00000000..b5ed4102 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/audio/audio_cubit.dart @@ -0,0 +1,47 @@ +import 'package:audioplayers/audioplayers.dart'; +import 'package:equatable/equatable.dart'; +import 'package:flame_audio/bgm.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +part 'audio_state.dart'; + +class AudioCubit extends Cubit { + AudioCubit({required AudioCache audioCache}) + : effectPlayer = AudioPlayer()..audioCache = audioCache, + bgm = Bgm(audioCache: audioCache), + super(const AudioState()); + + @visibleForTesting + AudioCubit.test({ + required this.effectPlayer, + required this.bgm, + double volume = 1.0, + }) : super(AudioState(volume: volume)); + + final AudioPlayer effectPlayer; + + final Bgm bgm; + + Future _changeVolume(double volume) async { + await effectPlayer.setVolume(volume); + await bgm.audioPlayer.setVolume(volume); + if (!isClosed) { + emit(state.copyWith(volume: volume)); + } + } + + Future toggleVolume() async { + if (state.volume == 0) { + return _changeVolume(1); + } + return _changeVolume(0); + } + + @override + Future close() { + effectPlayer.dispose(); + bgm.dispose(); + return super.close(); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/audio/audio_state.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/audio/audio_state.dart new file mode 100644 index 00000000..4c71ec11 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/audio/audio_state.dart @@ -0,0 +1,13 @@ +part of 'audio_cubit.dart'; + +class AudioState extends Equatable { + const AudioState({this.volume = 1}); + final double volume; + + AudioState copyWith({double? volume}) { + return AudioState(volume: volume ?? this.volume); + } + + @override + List get props => [volume]; +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/cubit.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/cubit.dart new file mode 100644 index 00000000..33a07f80 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/cubit/cubit.dart @@ -0,0 +1 @@ +export 'audio/audio_cubit.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/entities.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/entities.dart new file mode 100644 index 00000000..e0818c0a --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/entities.dart @@ -0,0 +1 @@ +export 'unicorn/unicorn.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/behaviors/behaviors.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/behaviors/behaviors.dart new file mode 100644 index 00000000..6238b841 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/behaviors/behaviors.dart @@ -0,0 +1 @@ +export 'tapping_behavior.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/behaviors/tapping_behavior.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/behaviors/tapping_behavior.dart new file mode 100644 index 00000000..f2c945b2 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/behaviors/tapping_behavior.dart @@ -0,0 +1,25 @@ +import 'package:audioplayers/audioplayers.dart'; +import 'package:flame/components.dart'; +import 'package:flame/events.dart'; +import 'package:flame_behaviors/flame_behaviors.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; +import 'package:{{project_name.snakeCase()}}/gen/assets.gen.dart'; + +class TappingBehavior extends Behavior + with TapCallbacks, HasGameRef<{{project_name.pascalCase()}}> { + @override + bool containsLocalPoint(Vector2 point) { + return parent.containsLocalPoint(point); + } + + @override + void onTapDown(TapDownEvent event) { + if (parent.isAnimationPlaying()) { + return; + } + gameRef.counter++; + parent.playAnimation(); + + gameRef.effectPlayer.play(AssetSource(Assets.audio.effect)); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/unicorn.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/unicorn.dart new file mode 100644 index 00000000..6318d364 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/entities/unicorn/unicorn.dart @@ -0,0 +1,65 @@ +import 'package:flame/components.dart'; +import 'package:flame/sprite.dart'; +import 'package:flame_behaviors/flame_behaviors.dart'; +import 'package:flutter/material.dart'; +import 'package:{{project_name.snakeCase()}}/game/entities/unicorn/behaviors/tapping_behavior.dart'; +import 'package:{{project_name.snakeCase()}}/gen/assets.gen.dart'; + +class Unicorn extends PositionedEntity with HasGameRef { + Unicorn({ + required super.position, + }) : super( + anchor: Anchor.center, + size: Vector2.all(32), + behaviors: [ + TappingBehavior(), + ], + ); + + @visibleForTesting + Unicorn.test({ + required super.position, + super.behaviors, + }) : super(size: Vector2.all(32)); + + late SpriteAnimationComponent _animationComponent; + + @visibleForTesting + SpriteAnimationTicker get animationTicker => + _animationComponent.animationTicker!; + + @override + Future onLoad() async { + final animation = SpriteAnimation.fromFrameData( + gameRef.images.fromCache(Assets.images.unicornAnimation.path), + SpriteAnimationData.sequenced( + amount: 16, + stepTime: 0.1, + textureSize: Vector2.all(32), + loop: false, + ), + ); + + await add( + _animationComponent = SpriteAnimationComponent( + animation: animation, + size: size, + ), + ); + + resetAnimation(); + } + + void resetAnimation() { + animationTicker + ..currentIndex = animationTicker.spriteAnimation.frames.length - 1 + ..update(0.1) + ..currentIndex = 0; + } + + /// Plays the animation. + void playAnimation() => animationTicker.reset(); + + /// Returns whether the animation is playing or not. + bool isAnimationPlaying() => !animationTicker.done(); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/game.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/game.dart new file mode 100644 index 00000000..7f0a3240 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/game.dart @@ -0,0 +1,5 @@ +export 'components/components.dart'; +export 'cubit/cubit.dart'; +export 'entities/entities.dart'; +export '{{project_name.snakeCase()}}.dart'; +export 'view/view.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/view/game_page.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/view/game_page.dart new file mode 100644 index 00000000..85178f51 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/view/game_page.dart @@ -0,0 +1,92 @@ +import 'package:flame/game.dart' hide Route; +import 'package:flame_audio/bgm.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; +import 'package:{{project_name.snakeCase()}}/gen/assets.gen.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; +import 'package:{{project_name.snakeCase()}}/loading/cubit/cubit.dart'; + +class GamePage extends StatelessWidget { + const GamePage({super.key}); + + static Route route() { + return MaterialPageRoute( + builder: (_) => const GamePage(), + ); + } + + @override + Widget build(BuildContext context) { + return BlocProvider( + create: (context) { + return AudioCubit(audioCache: context.read().audio); + }, + child: const Scaffold( + body: SafeArea(child: GameView()), + ), + ); + } +} + +class GameView extends StatefulWidget { + const GameView({super.key, this.game}); + + final FlameGame? game; + + @override + State createState() => _GameViewState(); +} + +class _GameViewState extends State { + FlameGame? _game; + + late final Bgm bgm; + + @override + void initState() { + super.initState(); + bgm = context.read().bgm; + bgm.play(Assets.audio.background); + } + + @override + void dispose() { + bgm.pause(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final textStyle = Theme.of(context).textTheme.bodySmall!.copyWith( + color: Colors.white, + fontSize: 4, + ); + + _game ??= widget.game ?? + {{project_name.pascalCase()}}( + l10n: context.l10n, + effectPlayer: context.read().effectPlayer, + textStyle: textStyle, + images: context.read().images, + ); + return Stack( + children: [ + Positioned.fill(child: GameWidget(game: _game!)), + Align( + alignment: Alignment.topRight, + child: BlocBuilder( + builder: (context, state) { + return IconButton( + icon: Icon( + state.volume == 0 ? Icons.volume_off : Icons.volume_up, + ), + onPressed: () => context.read().toggleVolume(), + ); + }, + ), + ), + ], + ); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/view/view.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/view/view.dart new file mode 100644 index 00000000..94c7ec20 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/view/view.dart @@ -0,0 +1 @@ +export 'game_page.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/{{project_name.snakeCase()}}.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/{{project_name.snakeCase()}}.dart new file mode 100644 index 00000000..34380989 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/game/{{project_name.snakeCase()}}.dart @@ -0,0 +1,50 @@ +import 'package:audioplayers/audioplayers.dart'; +import 'package:flame/cache.dart'; +import 'package:flame/components.dart'; +import 'package:flame/game.dart'; +import 'package:flutter/painting.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; + +class {{project_name.pascalCase()}} extends FlameGame { + {{project_name.pascalCase()}}({ + required this.l10n, + required this.effectPlayer, + required this.textStyle, + required Images images, + }) { + this.images = images; + } + + final AppLocalizations l10n; + + final AudioPlayer effectPlayer; + + final TextStyle textStyle; + + int counter = 0; + + @override + Color backgroundColor() => const Color(0xFF2A48DF); + + @override + Future onLoad() async { + final world = World( + children: [ + Unicorn(position: size / 2), + CounterComponent( + position: (size / 2) + ..sub( + Vector2(0, 16), + ), + ), + ], + ); + + final camera = CameraComponent(world: world); + await addAll([world, camera]); + + camera.viewfinder.position = size / 2; + camera.viewfinder.zoom = 8; + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/gen/assets.gen.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/gen/assets.gen.dart new file mode 100644 index 00000000..02f0d18b --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/gen/assets.gen.dart @@ -0,0 +1,96 @@ +/// GENERATED CODE - DO NOT MODIFY BY HAND +/// ***************************************************** +/// FlutterGen +/// ***************************************************** + +// ignore_for_file: directives_ordering,unnecessary_import + +import 'package:flutter/widgets.dart'; + +class $AssetsAudioGen { + const $AssetsAudioGen(); + + /// File path: assets/audio/background.mp3 + String get background => 'assets/audio/background.mp3'; + + /// File path: assets/audio/effect.mp3 + String get effect => 'assets/audio/effect.mp3'; +} + +class $AssetsImagesGen { + const $AssetsImagesGen(); + + /// File path: assets/images/unicorn_animation.png + AssetGenImage get unicornAnimation => + const AssetGenImage('assets/images/unicorn_animation.png'); +} + +class $AssetsLicensesGen { + const $AssetsLicensesGen(); + + $AssetsLicensesPoppinsGen get poppins => const $AssetsLicensesPoppinsGen(); +} + +class $AssetsLicensesPoppinsGen { + const $AssetsLicensesPoppinsGen(); + + /// File path: assets/licenses/poppins/OFL.txt + String get ofl => 'assets/licenses/poppins/OFL.txt'; +} + +class Assets { + Assets._(); + + static const $AssetsAudioGen audio = $AssetsAudioGen(); + static const $AssetsImagesGen images = $AssetsImagesGen(); + static const $AssetsLicensesGen licenses = $AssetsLicensesGen(); +} + +class AssetGenImage extends AssetImage { + const AssetGenImage(String assetName) : super(assetName); + + Image image({ + Key? key, + ImageFrameBuilder? frameBuilder, + ImageLoadingBuilder? loadingBuilder, + ImageErrorWidgetBuilder? errorBuilder, + String? semanticLabel, + bool excludeFromSemantics = false, + double? width, + double? height, + Color? color, + BlendMode? colorBlendMode, + BoxFit? fit, + AlignmentGeometry alignment = Alignment.center, + ImageRepeat repeat = ImageRepeat.noRepeat, + Rect? centerSlice, + bool matchTextDirection = false, + bool gaplessPlayback = false, + bool isAntiAlias = false, + FilterQuality filterQuality = FilterQuality.low, + }) { + return Image( + key: key, + image: this, + frameBuilder: frameBuilder, + loadingBuilder: loadingBuilder, + errorBuilder: errorBuilder, + semanticLabel: semanticLabel, + excludeFromSemantics: excludeFromSemantics, + width: width, + height: height, + color: color, + colorBlendMode: colorBlendMode, + fit: fit, + alignment: alignment, + repeat: repeat, + centerSlice: centerSlice, + matchTextDirection: matchTextDirection, + gaplessPlayback: gaplessPlayback, + isAntiAlias: isAntiAlias, + filterQuality: filterQuality, + ); + } + + String get path => assetName; +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/l10n/arb/app_en.arb b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/l10n/arb/app_en.arb new file mode 100644 index 00000000..08fa0396 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/l10n/arb/app_en.arb @@ -0,0 +1,44 @@ +{ + "@@locale": "en", + "startVeryGoodGame": "Start the Very Good Game", + "@startVeryGoodGame": { + "description": "The initial start button of the game application" + }, + "titleAppBarTitle": "{{project_name.titleCase()}}", + "@titleAppBarTitle": { + "description": "Text shown in the AppBar of the Title Page" + }, + "titleButtonStart": "Start", + "@titleButtonStart": { + "description": "Text shown in the start Button of the Title Page" + }, + "loading": "Loading {label}...", + "@loading": { + "description": "Text for the loading page", + "placeholders": { + "label": { + "type": "String", + "example": "Stuff", + "description": "Label for what is being loaded" + } + } + }, + "loadingPhaseLabel": "{loadingPhase, select, audio{Delightful music} images{Beautiful scenery} other{ }}", + "@loadingPhaseLabel": { + "description": "Loading phases", + "placeholders": { + "loadingPhase": {} + } + }, + "counterText": "{count, plural, =1{You have tapped the unicorn 1 time} other{You have tapped the unicorn {count} times}}", + "@counterText": { + "description": "Text for the counter component", + "placeholders": { + "count": { + "type": "int", + "example": "10", + "description": "The current count" + } + } + } +} \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/l10n/l10n.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/l10n/l10n.dart new file mode 100644 index 00000000..17c891b5 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/l10n/l10n.dart @@ -0,0 +1,8 @@ +import 'package:flutter/widgets.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +export 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +extension AppLocalizationsX on BuildContext { + AppLocalizations get l10n => AppLocalizations.of(this); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/cubit.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/cubit.dart new file mode 100644 index 00000000..17074880 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/cubit.dart @@ -0,0 +1 @@ +export 'preload/preload_cubit.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/preload/preload_cubit.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/preload/preload_cubit.dart new file mode 100644 index 00000000..91d8dddf --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/preload/preload_cubit.dart @@ -0,0 +1,48 @@ +import 'package:audioplayers/audioplayers.dart'; +import 'package:bloc/bloc.dart'; +import 'package:equatable/equatable.dart'; +import 'package:flame/cache.dart'; +import 'package:flutter/widgets.dart'; +import 'package:{{project_name.snakeCase()}}/gen/assets.gen.dart'; + +part 'preload_state.dart'; + +class PreloadCubit extends Cubit { + PreloadCubit(this.images, this.audio) : super(const PreloadState.initial()); + + final Images images; + final AudioCache audio; + + /// Load items sequentially allows display of what is being loaded + Future loadSequentially() async { + final phases = [ + PreloadPhase( + 'audio', + () => audio.loadAll([Assets.audio.background, Assets.audio.effect]), + ), + PreloadPhase( + 'images', + () => images.loadAll([Assets.images.unicornAnimation.path]), + ), + ]; + + emit(state.copyWith(totalCount: phases.length)); + for (final phase in phases) { + emit(state.copyWith(currentLabel: phase.label)); + // Throttle phases to take at least 1/5 seconds + await Future.wait([ + Future.delayed(Duration.zero, phase.start), + Future.delayed(const Duration(milliseconds: 200)), + ]); + emit(state.copyWith(loadedCount: state.loadedCount + 1)); + } + } +} + +@immutable +class PreloadPhase { + const PreloadPhase(this.label, this.start); + + final String label; + final ValueGetter> start; +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/preload/preload_state.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/preload/preload_state.dart new file mode 100644 index 00000000..7226fb5b --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/cubit/preload/preload_state.dart @@ -0,0 +1,48 @@ +part of 'preload_cubit.dart'; + +/// State for [PreloadCubit]. +class PreloadState extends Equatable { + /// Create a [PreloadState] with initial conditions. + const PreloadState.initial() + : totalCount = 0, + loadedCount = 0, + currentLabel = ''; + + const PreloadState._( + this.loadedCount, + this.currentLabel, + this.totalCount, + ); + + /// The total count of load phases to be completed + final int totalCount; + + /// The count of load phases that were completed so far + final int loadedCount; + + /// A description of what is being loaded + final String currentLabel; + + double get progress => totalCount == 0 ? 0 : loadedCount / totalCount; + + bool get isComplete => progress == 1.0; + + @override + List get props => [ + totalCount, + loadedCount, + currentLabel, + ]; + + PreloadState copyWith({ + int? loadedCount, + String? currentLabel, + int? totalCount, + }) { + return PreloadState._( + loadedCount ?? this.loadedCount, + currentLabel ?? this.currentLabel, + totalCount ?? this.totalCount, + ); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/loading.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/loading.dart new file mode 100644 index 00000000..003b3c14 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/loading.dart @@ -0,0 +1,3 @@ +export 'cubit/cubit.dart'; +export 'view/view.dart'; +export 'widgets/widgets.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/view/loading_page.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/view/loading_page.dart new file mode 100644 index 00000000..cc7c6f27 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/view/loading_page.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; +import 'package:{{project_name.snakeCase()}}/loading/loading.dart'; +import 'package:{{project_name.snakeCase()}}/title/title.dart'; + +class LoadingPage extends StatefulWidget { + const LoadingPage({super.key}); + + @override + State createState() => _LoadingPageState(); +} + +class _LoadingPageState extends State { + Future onPreloadComplete(BuildContext context) async { + final navigator = Navigator.of(context); + await Future.delayed(AnimatedProgressBar.intrinsicAnimationDuration); + if (!mounted) { + return; + } + await navigator.pushReplacement(TitlePage.route()); + } + + @override + Widget build(BuildContext context) { + return BlocListener( + listenWhen: (prevState, state) => + !prevState.isComplete && state.isComplete, + listener: (context, state) => onPreloadComplete(context), + child: const Scaffold( + body: Center( + child: _LoadingInternal(), + ), + ), + ); + } +} + +class _LoadingInternal extends StatelessWidget { + const _LoadingInternal(); + + @override + Widget build(BuildContext context) { + final primaryTextTheme = Theme.of(context).primaryTextTheme; + final l10n = context.l10n; + + return BlocBuilder( + builder: (context, state) { + final loadingLabel = l10n.loadingPhaseLabel(state.currentLabel); + final loadingMessage = l10n.loading(loadingLabel); + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: AnimatedProgressBar( + progress: state.progress, + backgroundColor: const Color(0xFF2A48DF), + foregroundColor: const Color(0xFFFFFFFF), + ), + ), + Text( + loadingMessage, + style: primaryTextTheme.bodySmall!.copyWith( + color: const Color(0xFF2A48DF), + fontWeight: FontWeight.w900, + ), + ), + ], + ); + }, + ); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/view/view.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/view/view.dart new file mode 100644 index 00000000..11218712 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/view/view.dart @@ -0,0 +1 @@ +export 'loading_page.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/widgets/animated_progress_bar.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/widgets/animated_progress_bar.dart new file mode 100644 index 00000000..104a1b72 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/widgets/animated_progress_bar.dart @@ -0,0 +1,68 @@ +import 'package:flutter/material.dart'; + +/// {@template animated_progress_bar} +/// A [Widget] that renders a intrinsically animated progress bar. +/// +/// [progress] should be between 0 and 1; +/// {@endtemplate} +class AnimatedProgressBar extends StatelessWidget { + /// {@macro animated_progress_bar} + const AnimatedProgressBar({ + required this.progress, + required this.backgroundColor, + required this.foregroundColor, + super.key, + }) : assert( + progress >= 0.0 && progress <= 1.0, + 'Progress should be set between 0.0 and 1.0', + ); + + /// The background color of the progress bar. + final Color backgroundColor; + + /// The foreground color of the progress bar. + final Color foregroundColor; + + /// The current progress for the bar. + final double progress; + + /// The duration of the animation on [AnimatedProgressBar] + static const Duration intrinsicAnimationDuration = + Duration(milliseconds: 300); + + @override + Widget build(BuildContext context) { + // Outer bar + return ClipRRect( + borderRadius: BorderRadius.circular(2), + child: SizedBox( + height: 16, + width: 200, + child: ColoredBox( + color: backgroundColor, + child: Padding( + padding: const EdgeInsets.all(2), + // Animate the progress bar + child: TweenAnimationBuilder( + tween: Tween(begin: 0, end: progress), + duration: intrinsicAnimationDuration, + builder: (BuildContext context, double progress, _) { + // Inner bar + return FractionallySizedBox( + alignment: Alignment.centerLeft, + widthFactor: progress, + child: ClipRRect( + borderRadius: BorderRadius.circular(1), + child: ColoredBox( + color: foregroundColor, + ), + ), + ); + }, + ), + ), + ), + ), + ); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/widgets/widgets.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/widgets/widgets.dart new file mode 100644 index 00000000..34037143 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/loading/widgets/widgets.dart @@ -0,0 +1 @@ +export 'animated_progress_bar.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_development.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_development.dart new file mode 100644 index 00000000..02452136 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_development.dart @@ -0,0 +1,6 @@ +import 'package:{{project_name.snakeCase()}}/app/app.dart'; +import 'package:{{project_name.snakeCase()}}/bootstrap.dart'; + +void main() { + bootstrap(() => const App()); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_production.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_production.dart new file mode 100644 index 00000000..02452136 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_production.dart @@ -0,0 +1,6 @@ +import 'package:{{project_name.snakeCase()}}/app/app.dart'; +import 'package:{{project_name.snakeCase()}}/bootstrap.dart'; + +void main() { + bootstrap(() => const App()); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_staging.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_staging.dart new file mode 100644 index 00000000..02452136 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/main_staging.dart @@ -0,0 +1,6 @@ +import 'package:{{project_name.snakeCase()}}/app/app.dart'; +import 'package:{{project_name.snakeCase()}}/bootstrap.dart'; + +void main() { + bootstrap(() => const App()); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/title.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/title.dart new file mode 100644 index 00000000..00ffcf94 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/title.dart @@ -0,0 +1 @@ +export 'view/view.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/view/title_page.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/view/title_page.dart new file mode 100644 index 00000000..f01c0fb8 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/view/title_page.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; + +class TitlePage extends StatelessWidget { + const TitlePage({super.key}); + + static Route route() { + return MaterialPageRoute( + builder: (_) => const TitlePage(), + ); + } + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + + return Scaffold( + appBar: AppBar( + title: Text(l10n.titleAppBarTitle), + ), + body: const SafeArea(child: TitleView()), + ); + } +} + +class TitleView extends StatelessWidget { + const TitleView({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + + return Center( + child: SizedBox( + width: 250, + height: 64, + child: ElevatedButton( + onPressed: () { + Navigator.of(context).pushReplacement(GamePage.route()); + }, + child: Center(child: Text(l10n.titleButtonStart)), + ), + ), + ); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/view/view.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/view/view.dart new file mode 100644 index 00000000..0bd5122e --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/lib/title/view/view.dart @@ -0,0 +1 @@ +export 'title_page.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/.gitignore b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/.gitignore new file mode 100644 index 00000000..746adbb6 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/Flutter-Debug.xcconfig b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 00000000..4b81f9b2 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/Flutter-Release.xcconfig b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 00000000..5caa9d15 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/GeneratedPluginRegistrant.swift b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 00000000..a9f2f234 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,14 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import audioplayers_darwin +import path_provider_foundation + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Podfile b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Podfile new file mode 100644 index 00000000..c795730d --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '10.14' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Podfile.lock b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Podfile.lock new file mode 100644 index 00000000..245b73c9 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Podfile.lock @@ -0,0 +1,29 @@ +PODS: + - audioplayers_darwin (0.0.1): + - FlutterMacOS + - FlutterMacOS (1.0.0) + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + +DEPENDENCIES: + - audioplayers_darwin (from `Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/macos`) + - FlutterMacOS (from `Flutter/ephemeral`) + - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) + +EXTERNAL SOURCES: + audioplayers_darwin: + :path: Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/macos + FlutterMacOS: + :path: Flutter/ephemeral + path_provider_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin + +SPEC CHECKSUMS: + audioplayers_darwin: dcad41de4fbd0099cb3749f7ab3b0cb8f70b810c + FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 + path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 + +PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 + +COCOAPODS: 1.11.3 diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/project.pbxproj b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..d6fb846f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,1409 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 12229AE8ADC6887D268606CD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F501C17A62D045DE0EFE1902 /* Pods_Runner.framework */; }; + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + A6E2DEC29CFCA8116ACD74F6 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9868445076141E249C0E170 /* Pods_RunnerTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0A40451369F53A318325CAD0 /* Pods-Runner.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-development.xcconfig"; sourceTree = ""; }; + 168AF40963710CF5324C0FBD /* Pods-RunnerTests.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-production.xcconfig"; sourceTree = ""; }; + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* {{project_name.titleCase()}}.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "{{project_name.titleCase()}}.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 3DA82D56CD6DB804F20AE50D /* Pods-Runner.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-staging.xcconfig"; sourceTree = ""; }; + 44956D6ECAEA17146F47409F /* Pods-RunnerTests.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-staging.xcconfig"; sourceTree = ""; }; + 487E5E7170C760D46D7CD92B /* Pods-Runner.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-production.xcconfig"; sourceTree = ""; }; + 4B4AE52BABF66D147EC810AE /* Pods-RunnerTests.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-production.xcconfig"; sourceTree = ""; }; + 53185182B02642878BECB2BA /* Pods-RunnerTests.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-development.xcconfig"; sourceTree = ""; }; + 54B8D33A08683534AF292CB6 /* Pods-Runner.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-staging.xcconfig"; sourceTree = ""; }; + 5C38816C6E53EEB141E4DFF6 /* Pods-RunnerTests.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-development.xcconfig"; sourceTree = ""; }; + 678E997FC2AA78956A94F7C6 /* Pods-Runner.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-development.xcconfig"; sourceTree = ""; }; + 756F71D88CEADB3200312D78 /* Pods-RunnerTests.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-staging.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 7BFFE35E2BDC59061A01EFEA /* Pods-RunnerTests.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-development.xcconfig"; sourceTree = ""; }; + 7F5D0D535B192BF3F03E85B6 /* Pods-RunnerTests.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-production.xcconfig"; sourceTree = ""; }; + 8EB82407BF23931A456C3E81 /* Pods-Runner.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-production.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 99DD19DB915AB6E64231A980 /* Pods-Runner.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-staging.xcconfig"; sourceTree = ""; }; + C66322FBC6E4E417727083AC /* Pods-Runner.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-production.xcconfig"; sourceTree = ""; }; + CA9A3188AECB7A9ACD38DF29 /* Pods-Runner.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-development.xcconfig"; sourceTree = ""; }; + F0B929705211EB274F76EC4B /* Pods-RunnerTests.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-staging.xcconfig"; sourceTree = ""; }; + F501C17A62D045DE0EFE1902 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F9868445076141E249C0E170 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A6E2DEC29CFCA8116ACD74F6 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 12229AE8ADC6887D268606CD /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + A79FAEA40F62A39DD82AB83D /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* {{project_name.titleCase()}}.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + A79FAEA40F62A39DD82AB83D /* Pods */ = { + isa = PBXGroup; + children = ( + 8EB82407BF23931A456C3E81 /* Pods-Runner.debug-production.xcconfig */, + 99DD19DB915AB6E64231A980 /* Pods-Runner.debug-staging.xcconfig */, + CA9A3188AECB7A9ACD38DF29 /* Pods-Runner.debug-development.xcconfig */, + C66322FBC6E4E417727083AC /* Pods-Runner.release-production.xcconfig */, + 3DA82D56CD6DB804F20AE50D /* Pods-Runner.release-staging.xcconfig */, + 0A40451369F53A318325CAD0 /* Pods-Runner.release-development.xcconfig */, + 487E5E7170C760D46D7CD92B /* Pods-Runner.profile-production.xcconfig */, + 54B8D33A08683534AF292CB6 /* Pods-Runner.profile-staging.xcconfig */, + 678E997FC2AA78956A94F7C6 /* Pods-Runner.profile-development.xcconfig */, + 168AF40963710CF5324C0FBD /* Pods-RunnerTests.debug-production.xcconfig */, + F0B929705211EB274F76EC4B /* Pods-RunnerTests.debug-staging.xcconfig */, + 7BFFE35E2BDC59061A01EFEA /* Pods-RunnerTests.debug-development.xcconfig */, + 7F5D0D535B192BF3F03E85B6 /* Pods-RunnerTests.release-production.xcconfig */, + 756F71D88CEADB3200312D78 /* Pods-RunnerTests.release-staging.xcconfig */, + 5C38816C6E53EEB141E4DFF6 /* Pods-RunnerTests.release-development.xcconfig */, + 4B4AE52BABF66D147EC810AE /* Pods-RunnerTests.profile-production.xcconfig */, + 44956D6ECAEA17146F47409F /* Pods-RunnerTests.profile-staging.xcconfig */, + 53185182B02642878BECB2BA /* Pods-RunnerTests.profile-development.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F501C17A62D045DE0EFE1902 /* Pods_Runner.framework */, + F9868445076141E249C0E170 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + E76A892D08489383296193D9 /* [CP] Check Pods Manifest.lock */, + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + C4294003248B55FB65769F0E /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 9DDB3BE081A9AC653F314FED /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* {{project_name.titleCase()}}.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1430; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + 9DDB3BE081A9AC653F314FED /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + C4294003248B55FB65769F0E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + E76A892D08489383296193D9 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 168AF40963710CF5324C0FBD /* Pods-RunnerTests.debug-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Debug-production"; + }; + 331C80DC294CF71000263BE5 /* Release-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7F5D0D535B192BF3F03E85B6 /* Pods-RunnerTests.release-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Release-production"; + }; + 331C80DD294CF71000263BE5 /* Profile-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4B4AE52BABF66D147EC810AE /* Pods-RunnerTests.profile-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Profile-production"; + }; + 338D0CE9231458BD00FA5F75 /* Profile-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = "Profile-production"; + }; + 338D0CEA231458BD00FA5F75 /* Profile-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "{{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}; + PRODUCT_NAME = "{{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = "Profile-production"; + }; + 338D0CEB231458BD00FA5F75 /* Profile-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Profile-production"; + }; + 33CC10F92044A3C60003C045 /* Debug-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = "Debug-production"; + }; + 33CC10FA2044A3C60003C045 /* Release-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = "Release-production"; + }; + 33CC10FC2044A3C60003C045 /* Debug-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "{{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}; + PRODUCT_NAME = "{{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = "Debug-production"; + }; + 33CC10FD2044A3C60003C045 /* Release-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "{{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}; + PRODUCT_NAME = "{{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = "Release-production"; + }; + 33CC111C2044C6BA0003C045 /* Debug-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Debug-production"; + }; + 33CC111D2044C6BA0003C045 /* Release-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Release-production"; + }; + 4D4A28A02AEEFAEF00852C24 /* Debug-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = "Debug-development"; + }; + 4D4A28A12AEEFAEF00852C24 /* Debug-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "[DEV] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}.dev; + PRODUCT_NAME = "[DEV] {{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = "Debug-development"; + }; + 4D4A28A22AEEFAEF00852C24 /* Debug-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7BFFE35E2BDC59061A01EFEA /* Pods-RunnerTests.debug-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Debug-development"; + }; + 4D4A28A32AEEFAEF00852C24 /* Debug-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Debug-development"; + }; + 4D4A28A42AEEFAF300852C24 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = "Debug-staging"; + }; + 4D4A28A52AEEFAF300852C24 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "[STG] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}.stg; + PRODUCT_NAME = "[STG] {{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = "Debug-staging"; + }; + 4D4A28A62AEEFAF300852C24 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F0B929705211EB274F76EC4B /* Pods-RunnerTests.debug-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Debug-staging"; + }; + 4D4A28A72AEEFAF300852C24 /* Debug-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Debug-staging"; + }; + 4D4A28A82AEEFAF600852C24 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = "Release-staging"; + }; + 4D4A28A92AEEFAF600852C24 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "[STG] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}.stg; + PRODUCT_NAME = "[STG] {{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = "Release-staging"; + }; + 4D4A28AA2AEEFAF600852C24 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 756F71D88CEADB3200312D78 /* Pods-RunnerTests.release-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Release-staging"; + }; + 4D4A28AB2AEEFAF600852C24 /* Release-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Release-staging"; + }; + 4D4A28B02AEEFB0400852C24 /* Release-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = "Release-development"; + }; + 4D4A28B12AEEFB0400852C24 /* Release-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "[DEV] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}.dev; + PRODUCT_NAME = "[DEV] {{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = "Release-development"; + }; + 4D4A28B22AEEFB0400852C24 /* Release-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5C38816C6E53EEB141E4DFF6 /* Pods-RunnerTests.release-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Release-development"; + }; + 4D4A28B32AEEFB0400852C24 /* Release-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Release-development"; + }; + 4D4A28B42AEEFB1500852C24 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = "Profile-staging"; + }; + 4D4A28B52AEEFB1500852C24 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "[STG] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}.stg; + PRODUCT_NAME = "[STG] {{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = "Profile-staging"; + }; + 4D4A28B62AEEFB1500852C24 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44956D6ECAEA17146F47409F /* Pods-RunnerTests.profile-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Profile-staging"; + }; + 4D4A28B72AEEFB1500852C24 /* Profile-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Profile-staging"; + }; + 4D4A28B82AEEFB1800852C24 /* Profile-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = "Profile-development"; + }; + 4D4A28B92AEEFB1800852C24 /* Profile-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FLAVOR_APP_NAME = "[DEV] {{project_name.titleCase()}}"; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}}.dev; + PRODUCT_NAME = "[DEV] {{project_name.titleCase()}}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = "Profile-development"; + }; + 4D4A28BA2AEEFB1800852C24 /* Profile-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 53185182B02642878BECB2BA /* Pods-RunnerTests.profile-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.veryGoodFlameGame.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{project_name.snakeCase()}}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{project_name.snakeCase()}}"; + }; + name = "Profile-development"; + }; + 4D4A28BB2AEEFB1800852C24 /* Profile-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = "Profile-development"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug-production */, + 4D4A28A62AEEFAF300852C24 /* Debug-staging */, + 4D4A28A22AEEFAEF00852C24 /* Debug-development */, + 331C80DC294CF71000263BE5 /* Release-production */, + 4D4A28AA2AEEFAF600852C24 /* Release-staging */, + 4D4A28B22AEEFB0400852C24 /* Release-development */, + 331C80DD294CF71000263BE5 /* Profile-production */, + 4D4A28B62AEEFB1500852C24 /* Profile-staging */, + 4D4A28BA2AEEFB1800852C24 /* Profile-development */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-production"; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug-production */, + 4D4A28A42AEEFAF300852C24 /* Debug-staging */, + 4D4A28A02AEEFAEF00852C24 /* Debug-development */, + 33CC10FA2044A3C60003C045 /* Release-production */, + 4D4A28A82AEEFAF600852C24 /* Release-staging */, + 4D4A28B02AEEFB0400852C24 /* Release-development */, + 338D0CE9231458BD00FA5F75 /* Profile-production */, + 4D4A28B42AEEFB1500852C24 /* Profile-staging */, + 4D4A28B82AEEFB1800852C24 /* Profile-development */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-production"; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug-production */, + 4D4A28A52AEEFAF300852C24 /* Debug-staging */, + 4D4A28A12AEEFAEF00852C24 /* Debug-development */, + 33CC10FD2044A3C60003C045 /* Release-production */, + 4D4A28A92AEEFAF600852C24 /* Release-staging */, + 4D4A28B12AEEFB0400852C24 /* Release-development */, + 338D0CEA231458BD00FA5F75 /* Profile-production */, + 4D4A28B52AEEFB1500852C24 /* Profile-staging */, + 4D4A28B92AEEFB1800852C24 /* Profile-development */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-production"; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug-production */, + 4D4A28A72AEEFAF300852C24 /* Debug-staging */, + 4D4A28A32AEEFAEF00852C24 /* Debug-development */, + 33CC111D2044C6BA0003C045 /* Release-production */, + 4D4A28AB2AEEFAF600852C24 /* Release-staging */, + 4D4A28B32AEEFB0400852C24 /* Release-development */, + 338D0CEB231458BD00FA5F75 /* Profile-production */, + 4D4A28B72AEEFB1500852C24 /* Profile-staging */, + 4D4A28BB2AEEFB1800852C24 /* Profile-development */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-production"; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..b8b508dc --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme new file mode 100644 index 00000000..b3fcd9f3 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme new file mode 100644 index 00000000..a0f65025 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme new file mode 100644 index 00000000..3f9d9a69 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcworkspace/contents.xcworkspacedata b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..21a3cc14 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/AppDelegate.swift b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/AppDelegate.swift new file mode 100644 index 00000000..d53ef643 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024.png new file mode 100644 index 00000000..bf5a8d5b Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/128.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/128.png new file mode 100644 index 00000000..086896dc Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/128.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/16.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/16.png new file mode 100644 index 00000000..ff36982e Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/16.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/256.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/256.png new file mode 100644 index 00000000..025d830c Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/256.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/32.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/32.png new file mode 100644 index 00000000..1aec21ec Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/32.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/512.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/512.png new file mode 100644 index 00000000..29b02dc9 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/512.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/64.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/64.png new file mode 100644 index 00000000..067fc099 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/64.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/Contents.json new file mode 100644 index 00000000..c726ae2e --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/Contents.json @@ -0,0 +1,50 @@ +{ + "images": [ + { + "filename": "16.png", + "idiom": "mac", + "scale": "1x", + "size": "16x16" + }, + { + "filename": "32.png", + "idiom": "mac", + "scale": "1x", + "size": "32x32" + }, + { + "filename": "64.png", + "idiom": "mac", + "scale": "2x", + "size": "32x32" + }, + { + "filename": "128.png", + "idiom": "mac", + "scale": "1x", + "size": "128x128" + }, + { + "filename": "256.png", + "idiom": "mac", + "scale": "1x", + "size": "256x256" + }, + { + "filename": "512.png", + "idiom": "mac", + "scale": "1x", + "size": "512x512" + }, + { + "filename": "1024.png", + "idiom": "mac", + "scale": "2x", + "size": "512x512" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/1024.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/1024.png new file mode 100644 index 00000000..5b163179 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/1024.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/128.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/128.png new file mode 100644 index 00000000..a0f21884 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/128.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/16.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/16.png new file mode 100644 index 00000000..7502c886 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/16.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/256.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/256.png new file mode 100644 index 00000000..cc709c73 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/256.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/32.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/32.png new file mode 100644 index 00000000..c35e4085 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/32.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/512.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/512.png new file mode 100644 index 00000000..955e6397 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/512.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/64.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/64.png new file mode 100644 index 00000000..e60c0152 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/64.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/Contents.json new file mode 100644 index 00000000..c726ae2e --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon-stg.appiconset/Contents.json @@ -0,0 +1,50 @@ +{ + "images": [ + { + "filename": "16.png", + "idiom": "mac", + "scale": "1x", + "size": "16x16" + }, + { + "filename": "32.png", + "idiom": "mac", + "scale": "1x", + "size": "32x32" + }, + { + "filename": "64.png", + "idiom": "mac", + "scale": "2x", + "size": "32x32" + }, + { + "filename": "128.png", + "idiom": "mac", + "scale": "1x", + "size": "128x128" + }, + { + "filename": "256.png", + "idiom": "mac", + "scale": "1x", + "size": "256x256" + }, + { + "filename": "512.png", + "idiom": "mac", + "scale": "1x", + "size": "512x512" + }, + { + "filename": "1024.png", + "idiom": "mac", + "scale": "2x", + "size": "512x512" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/1024.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 00000000..f5bf9613 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/1024.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/128.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/128.png new file mode 100644 index 00000000..2b703a7d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/128.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/16.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/16.png new file mode 100644 index 00000000..f038c244 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/16.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/256.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/256.png new file mode 100644 index 00000000..19520c45 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/256.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/32.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/32.png new file mode 100644 index 00000000..0bc221e8 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/32.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/512.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/512.png new file mode 100644 index 00000000..6d05b533 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/512.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/64.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/64.png new file mode 100644 index 00000000..1c6c76bb Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/64.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..c726ae2e --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,50 @@ +{ + "images": [ + { + "filename": "16.png", + "idiom": "mac", + "scale": "1x", + "size": "16x16" + }, + { + "filename": "32.png", + "idiom": "mac", + "scale": "1x", + "size": "32x32" + }, + { + "filename": "64.png", + "idiom": "mac", + "scale": "2x", + "size": "32x32" + }, + { + "filename": "128.png", + "idiom": "mac", + "scale": "1x", + "size": "128x128" + }, + { + "filename": "256.png", + "idiom": "mac", + "scale": "1x", + "size": "256x256" + }, + { + "filename": "512.png", + "idiom": "mac", + "scale": "1x", + "size": "512x512" + }, + { + "filename": "1024.png", + "idiom": "mac", + "scale": "2x", + "size": "512x512" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..b23a03e0 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LaunchImage@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LaunchImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LaunchImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png new file mode 100644 index 00000000..cea48258 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 00000000..0e20080e Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 00000000..5c562f9d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Base.lproj/MainMenu.xib b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 00000000..80e867a4 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/AppInfo.xcconfig b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 00000000..aa2b5e79 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = {{project_name.snakeCase()}} + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = {{org_name.dotCase()}}.{{project_name.paramCase()}} + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright Β© 2023 com.example. All rights reserved. diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Debug.xcconfig b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 00000000..36b0fd94 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Release.xcconfig b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 00000000..dff4f495 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Warnings.xcconfig b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 00000000..42bcbf47 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/DebugProfile.entitlements b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/DebugProfile.entitlements new file mode 100644 index 00000000..3ba6c126 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Info.plist b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Info.plist new file mode 100644 index 00000000..b762bb9b --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleName + $(FLAVOR_APP_NAME) + CFBundleDisplayName + $(FLAVOR_APP_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/MainFlutterWindow.swift b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 00000000..3cc05eb2 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Release.entitlements b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Release.entitlements new file mode 100644 index 00000000..ee95ab7e --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/Runner/Release.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/RunnerTests/RunnerTests.swift b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..5418c9f5 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import FlutterMacOS +import Cocoa +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/pubspec.yaml b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/pubspec.yaml new file mode 100644 index 00000000..1dbf0d7b --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/pubspec.yaml @@ -0,0 +1,40 @@ +name: {{project_name.snakeCase()}} +description: {{{description}}} +version: 1.0.0+1 +publish_to: none + +environment: + sdk: ">=3.2.0 <4.0.0" + +dependencies: + audioplayers: ^5.2.0 + bloc: ^8.1.2 + equatable: ^2.0.5 + flame: ^1.10.1 + flame_audio: ^2.1.3 + flame_behaviors: ^1.0.0 + flutter: + sdk: flutter + flutter_bloc: ^8.1.3 + flutter_localizations: + sdk: flutter + google_fonts: ^6.0.0 + intl: ^0.18.0 + +dev_dependencies: + bloc_test: ^9.1.5 + flame_test: ^1.14.0 + flutter_test: + sdk: flutter + mockingjay: ^0.5.0 + mocktail: ^1.0.0 + very_good_analysis: ^5.1.0 + +flutter: + uses-material-design: true + generate: true + + assets: + - assets/audio/ + - assets/images/ + - assets/licenses/poppins/ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/app/view/app_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/app/view/app_test.dart new file mode 100644 index 00000000..ab4ce886 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/app/view/app_test.dart @@ -0,0 +1,13 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:{{project_name.snakeCase()}}/app/app.dart'; + +void main() { + group('App', () { + testWidgets('renders AppView', (tester) async { + await tester.pumpWidget(const App()); + + await tester.pumpAndSettle(const Duration(seconds: 400)); + expect(find.byType(AppView), findsOneWidget); + }); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/components/counter_component_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/components/counter_component_test.dart new file mode 100644 index 00000000..3ac65083 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/components/counter_component_test.dart @@ -0,0 +1,79 @@ +// ignore_for_file: cascade_invocations + +import 'package:audioplayers/audioplayers.dart'; +import 'package:flame/cache.dart'; +import 'package:flame/extensions.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; + +class _MockAppLocalizations extends Mock implements AppLocalizations {} + +class _MockAudioPlayer extends Mock implements AudioPlayer {} + +class _{{project_name.pascalCase()}} extends {{project_name.pascalCase()}} { + _{{project_name.pascalCase()}}({ + required super.l10n, + required super.effectPlayer, + required super.textStyle, + required super.images, + }); + + @override + Future onLoad() async {} +} + +void main() { + group('$CounterComponent', () { + late AppLocalizations l10n; + + setUp(() { + l10n = _MockAppLocalizations(); + + when(() => l10n.counterText(any())).thenAnswer( + (invocation) => 'counterText: ${invocation.positionalArguments[0]}', + ); + }); + + {{project_name.pascalCase()}} createFlameGame() { + return _{{project_name.pascalCase()}}( + l10n: l10n, + effectPlayer: _MockAudioPlayer(), + textStyle: const TextStyle(), + images: Images(), + ); + } + + testWithGame( + 'has all components', + createFlameGame, + (game) async { + final component = CounterComponent(position: Vector2.all(1)); + await game.ensureAdd(component); + + expect(component.text, isNotNull); + }, + ); + + testWithGame( + 'changes text count correctly', + createFlameGame, + (game) async { + final component = CounterComponent(position: Vector2.all(1)); + await game.ensureAdd(component); + + expect(component.text.text, equals('')); + game.counter = 1; + game.update(0.1); + expect(component.text.text, equals('counterText: 1')); + + game.counter = 2; + game.update(0.1); + expect(component.text.text, equals('counterText: 2')); + }, + ); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/cubit/audio_cubit_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/cubit/audio_cubit_test.dart new file mode 100644 index 00000000..7990a98a --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/cubit/audio_cubit_test.dart @@ -0,0 +1,77 @@ +import 'package:audioplayers/audioplayers.dart'; +import 'package:bloc_test/bloc_test.dart'; +import 'package:flame_audio/bgm.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:{{project_name.snakeCase()}}/game/cubit/cubit.dart'; + +class _MockAudioCache extends Mock implements AudioCache {} + +class _MockAudioPlayer extends Mock implements AudioPlayer {} + +class _MockBgm extends Mock implements Bgm {} + +void main() { + group('AudioCubit', () { + TestWidgetsFlutterBinding.ensureInitialized(); + + late AudioCache audioCache; + late AudioPlayer effectPlayer; + late Bgm bgm; + late AudioPlayer bgmPlayer; + + setUp(() { + audioCache = _MockAudioCache(); + effectPlayer = _MockAudioPlayer(); + bgm = _MockBgm(); + bgmPlayer = _MockAudioPlayer(); + when(() => bgm.audioPlayer).thenReturn(bgmPlayer); + + when(effectPlayer.dispose).thenAnswer((_) => Future.value()); + when(bgmPlayer.dispose).thenAnswer((_) => Future.value()); + + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger + .setMockMethodCallHandler( + const MethodChannel('xyz.luan/audioplayers'), + (_) => null, + ); + }); + + test('can be instantiated', () { + expect(AudioCubit(audioCache: audioCache), isA()); + }); + + blocTest( + 'toggleVolume mutes the volume when the volume is not 0', + setUp: () { + when(() => effectPlayer.setVolume(any())).thenAnswer((_) async {}); + when(() => bgmPlayer.setVolume(any())).thenAnswer((_) async {}); + }, + build: () => AudioCubit.test(effectPlayer: effectPlayer, bgm: bgm), + act: (cubit) => cubit.toggleVolume(), + expect: () => [const AudioState(volume: 0)], + verify: (_) { + verify(() => effectPlayer.setVolume(any(that: equals(0)))).called(1); + verify(() => bgmPlayer.setVolume(any(that: equals(0)))).called(1); + }, + ); + + blocTest( + 'toggleVolume unmutes the volume when the volume is 0', + setUp: () { + when(() => effectPlayer.setVolume(any())).thenAnswer((_) async {}); + when(() => bgmPlayer.setVolume(any())).thenAnswer((_) async {}); + }, + build: () { + return AudioCubit.test(effectPlayer: effectPlayer, bgm: bgm, volume: 0); + }, + act: (cubit) => cubit.toggleVolume(), + expect: () => [const AudioState()], + verify: (_) { + verify(() => effectPlayer.setVolume(any(that: equals(1)))).called(1); + verify(() => bgmPlayer.setVolume(any(that: equals(1)))).called(1); + }, + ); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/entities/unicorn/behaviors/tapping_behavior_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/entities/unicorn/behaviors/tapping_behavior_test.dart new file mode 100644 index 00000000..e9f58fe4 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/entities/unicorn/behaviors/tapping_behavior_test.dart @@ -0,0 +1,108 @@ +// ignore_for_file: cascade_invocations + +import 'dart:ui'; + +import 'package:audioplayers/audioplayers.dart'; +import 'package:flame/cache.dart'; +import 'package:flame/game.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter/painting.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:{{project_name.snakeCase()}}/game/entities/unicorn/behaviors/behaviors.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; + +class _FakeAssetSource extends Fake implements AssetSource {} + +class _MockImages extends Mock implements Images {} + +class _MockAppLocalizations extends Mock implements AppLocalizations {} + +class _MockAudioPlayer extends Mock implements AudioPlayer {} + +class _{{project_name.pascalCase()}} extends {{project_name.pascalCase()}} { + _{{project_name.pascalCase()}}({ + required super.l10n, + required super.effectPlayer, + required super.textStyle, + required super.images, + }); + + @override + Future onLoad() async {} +} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + group('TappingBehavior', () { + late AppLocalizations l10n; + late AudioPlayer audioPlayer; + late Images images; + + {{project_name.pascalCase()}} createFlameGame() { + return _{{project_name.pascalCase()}}( + l10n: l10n, + effectPlayer: audioPlayer, + textStyle: const TextStyle(), + images: images, + ); + } + + setUpAll(() async { + registerFallbackValue(_FakeAssetSource()); + }); + + setUp(() async { + l10n = _MockAppLocalizations(); + when(() => l10n.counterText(any())).thenReturn('counterText'); + + audioPlayer = _MockAudioPlayer(); + when(() => audioPlayer.play(any())).thenAnswer((_) async {}); + + images = _MockImages(); + final image = await _fakeImage(); + when(() => images.fromCache(any())).thenReturn(image); + }); + + FlameTester(createFlameGame).testGameWidget( + 'when tapped, starts playing the animation', + setUp: (game, tester) async { + await game.ensureAdd( + Unicorn.test( + position: Vector2.zero(), + behaviors: [TappingBehavior()], + ), + ); + }, + verify: (game, tester) async { + await tester.tapAt(Offset.zero); + + /// Flush long press gesture timer + game.pauseEngine(); + await tester.pumpAndSettle(); + game.resumeEngine(); + + game.update(0.1); + + final unicorn = game.firstChild()!; + expect(unicorn.animationTicker.currentIndex, equals(1)); + expect(unicorn.isAnimationPlaying(), equals(true)); + + verify(() => audioPlayer.play(any())).called(1); + }, + ); + }); +} + +Future _fakeImage() async { + final recorder = PictureRecorder(); + final canvas = Canvas(recorder); + canvas.drawRect( + const Rect.fromLTWH(0, 0, 1, 1), + Paint()..color = const Color(0xFF000000), + ); + final picture = recorder.endRecording(); + return picture.toImage(1, 1); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/entities/unicorn/unicorn_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/entities/unicorn/unicorn_test.dart new file mode 100644 index 00000000..85ed3f0f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/entities/unicorn/unicorn_test.dart @@ -0,0 +1,121 @@ +// ignore_for_file: cascade_invocations + +import 'package:audioplayers/audioplayers.dart'; +import 'package:flame/cache.dart'; +import 'package:flame/extensions.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter/painting.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:{{project_name.snakeCase()}}/game/entities/unicorn/behaviors/behaviors.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; + +class _FakeImage extends Fake implements Image {} + +class _MockAppLocalizations extends Mock implements AppLocalizations {} + +class _MockAudioPlayer extends Mock implements AudioPlayer {} + +class _MockImages extends Mock implements Images {} + +class _{{project_name.pascalCase()}} extends {{project_name.pascalCase()}} { + _{{project_name.pascalCase()}}({ + required super.l10n, + required super.effectPlayer, + required super.textStyle, + required super.images, + }); + + @override + Future onLoad() async {} +} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + group('Unicorn', () { + late AppLocalizations l10n; + late Images images; + + setUp(() { + l10n = _MockAppLocalizations(); + images = _MockImages(); + + when(() => l10n.counterText(any())).thenReturn('counterText'); + when(() => images.fromCache(any())).thenReturn(_FakeImage()); + }); + + _{{project_name.pascalCase()}} createFlameGame() { + return _{{project_name.pascalCase()}}( + l10n: l10n, + effectPlayer: _MockAudioPlayer(), + textStyle: const TextStyle(), + images: images, + ); + } + + testWithGame( + 'has all behaviors', + createFlameGame, + (game) async { + final unicorn = Unicorn(position: Vector2.all(1)); + await game.ensureAdd(unicorn); + + expect(unicorn.findBehavior(), isNotNull); + }, + ); + + testWithGame( + 'loads correctly', + createFlameGame, + (game) async { + final unicorn = Unicorn(position: Vector2.all(1)); + await game.ensureAdd(unicorn); + + expect(unicorn.isAnimationPlaying(), equals(false)); + }, + ); + + group('animation', () { + testWithGame( + 'plays animation', + createFlameGame, + (game) async { + final unicorn = Unicorn.test(position: Vector2.all(1)); + await game.ensureAdd(unicorn); + + unicorn.playAnimation(); + expect(unicorn.animationTicker.currentIndex, equals(0)); + + game.update(0.1); + + expect(unicorn.animationTicker.currentIndex, equals(1)); + expect(unicorn.isAnimationPlaying(), equals(true)); + }, + ); + + testWithGame( + 'reset animation back to frame one and stops it', + createFlameGame, + (game) async { + final unicorn = Unicorn.test(position: Vector2.all(1)); + await game.ensureAdd(unicorn); + + unicorn.playAnimation(); + game.update(0.1); + expect(unicorn.animationTicker.currentIndex, equals(1)); + expect(unicorn.isAnimationPlaying(), equals(true)); + + unicorn.resetAnimation(); + expect(unicorn.isAnimationPlaying(), equals(false)); + expect(unicorn.animationTicker.currentIndex, equals(0)); + + game.update(0.1); + expect(unicorn.animationTicker.currentIndex, equals(0)); + expect(unicorn.isAnimationPlaying(), equals(false)); + }, + ); + }); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/view/game_page_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/view/game_page_test.dart new file mode 100644 index 00000000..f3f6f3d1 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/game/view/game_page_test.dart @@ -0,0 +1,175 @@ +// ignore_for_file: prefer_const_constructors + +import 'dart:async'; +import 'dart:io'; +import 'dart:ui' as ui; + +import 'package:audioplayers/audioplayers.dart'; +import 'package:bloc_test/bloc_test.dart'; +import 'package:flame/cache.dart'; +import 'package:flame_audio/bgm.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:{{project_name.snakeCase()}}/game/game.dart'; +import 'package:{{project_name.snakeCase()}}/loading/cubit/cubit.dart'; + +import '../../helpers/helpers.dart'; + +class _FakeAssetSource extends Fake implements AssetSource {} + +class _FakeImage extends Fake implements ui.Image {} + +class _MockAudioCubit extends MockCubit implements AudioCubit {} + +class _MockAudioPlayer extends Mock implements AudioPlayer {} + +class _MockImages extends Mock implements Images {} + +class _MockBgm extends Mock implements Bgm {} + +class _MockPreloadCubit extends MockCubit + implements PreloadCubit {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + // https://github.com/material-foundation/flutter-packages/issues/286#issuecomment-1406343761 + HttpOverrides.global = null; + + setUpAll(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger + .setMockMethodCallHandler( + MethodChannel('xyz.luan/audioplayers'), + (message) => null, + ); + + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger + .setMockMethodCallHandler( + const MethodChannel('plugins.flutter.io/path_provider'), + (message) async => switch (message.method) { + ('getTemporaryDirectory' || 'getApplicationSupportDirectory') => + Directory.systemTemp.createTempSync('fake').path, + _ => null, + }, + ); + }); + + group('GamePage', () { + late PreloadCubit preloadCubit; + late Images images; + + setUpAll(() { + registerFallbackValue(_FakeAssetSource()); + }); + + setUp(() { + images = _MockImages(); + when(() => images.fromCache(any())).thenReturn(_FakeImage()); + + preloadCubit = _MockPreloadCubit(); + when(() => preloadCubit.audio).thenReturn(AudioCache(prefix: '')); + when(() => preloadCubit.images).thenReturn(images); + }); + + testWidgets('is routable', (tester) async { + await tester.runAsync(() async { + await tester.pumpApp( + Builder( + builder: (context) => Scaffold( + floatingActionButton: FloatingActionButton( + onPressed: () => Navigator.of(context).push(GamePage.route()), + ), + ), + ), + preloadCubit: preloadCubit, + ); + + await tester.tap(find.byType(FloatingActionButton)); + + await tester.pump(); + await tester.pump(); + + expect(find.byType(GamePage), findsOneWidget); + + await tester.pumpWidget(Container()); + }); + }); + + testWidgets('renders GameView', (tester) async { + await tester.runAsync(() async { + await tester.pumpApp( + const GamePage(), + preloadCubit: preloadCubit, + ); + expect(find.byType(GameView), findsOneWidget); + }); + }); + }); + + group('GameView', () { + late AudioCubit audioCubit; + + setUp(() { + audioCubit = _MockAudioCubit(); + when(() => audioCubit.state).thenReturn(AudioState()); + + final effectPlayer = _MockAudioPlayer(); + when(() => audioCubit.effectPlayer).thenReturn(effectPlayer); + final bgm = _MockBgm(); + when(() => audioCubit.bgm).thenReturn(bgm); + when(() => bgm.play(any())).thenAnswer((_) async {}); + when(bgm.pause).thenAnswer((_) async {}); + }); + + testWidgets('toggles mute button correctly', (tester) async { + final controller = StreamController(); + whenListen(audioCubit, controller.stream, initialState: AudioState()); + + final game = TestGame(); + await tester.pumpApp( + BlocProvider.value( + value: audioCubit, + child: Material(child: GameView(game: game)), + ), + ); + + expect(find.byIcon(Icons.volume_up), findsOneWidget); + + controller.add(AudioState(volume: 0)); + await tester.pump(); + + expect(find.byIcon(Icons.volume_off), findsOneWidget); + + controller.add(AudioState()); + await tester.pump(); + + expect(find.byIcon(Icons.volume_up), findsOneWidget); + }); + + testWidgets('calls correct method based on state', (tester) async { + final controller = StreamController(); + when(audioCubit.toggleVolume).thenAnswer((_) async {}); + whenListen(audioCubit, controller.stream, initialState: AudioState()); + + final game = TestGame(); + await tester.pumpApp( + BlocProvider.value( + value: audioCubit, + child: Material(child: GameView(game: game)), + ), + ); + + await tester.tap(find.byIcon(Icons.volume_up)); + controller.add(AudioState(volume: 0)); + await tester.pump(); + verify(audioCubit.toggleVolume).called(1); + + await tester.tap(find.byIcon(Icons.volume_off)); + controller.add(AudioState()); + await tester.pump(); + verify(audioCubit.toggleVolume).called(1); + }); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/helpers.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/helpers.dart new file mode 100644 index 00000000..3e2c8557 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/helpers.dart @@ -0,0 +1,3 @@ +export 'mocks.dart'; +export 'pump_app.dart'; +export 'test_game.dart'; diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/mocks.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/mocks.dart new file mode 100644 index 00000000..99d1953a --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/mocks.dart @@ -0,0 +1,9 @@ +import 'package:audioplayers/audioplayers.dart'; +import 'package:bloc_test/bloc_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:{{project_name.snakeCase()}}/loading/loading.dart'; + +class MockPreloadCubit extends MockCubit + implements PreloadCubit {} + +class MockAudioCache extends Mock implements AudioCache {} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/pump_app.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/pump_app.dart new file mode 100644 index 00000000..7e380b18 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/pump_app.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockingjay/mockingjay.dart'; +import 'package:{{project_name.snakeCase()}}/game/cubit/cubit.dart'; +import 'package:{{project_name.snakeCase()}}/l10n/l10n.dart'; +import 'package:{{project_name.snakeCase()}}/loading/loading.dart'; + +import 'helpers.dart'; + +extension PumpApp on WidgetTester { + Future pumpApp( + Widget widget, { + MockNavigator? navigator, + PreloadCubit? preloadCubit, + AudioCubit? audioCubit, + }) { + return pumpWidget( + MultiBlocProvider( + providers: [ + BlocProvider.value(value: preloadCubit ?? MockPreloadCubit()), + ], + child: MaterialApp( + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + home: navigator != null + ? MockNavigatorProvider(navigator: navigator, child: widget) + : widget, + ), + ), + ); + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/test_game.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/test_game.dart new file mode 100644 index 00000000..520257bc --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/helpers/test_game.dart @@ -0,0 +1,7 @@ +import 'package:flame/game.dart'; + +class TestGame extends FlameGame { + TestGame() { + images.prefix = ''; + } +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/cubit/preload/preload_cubit_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/cubit/preload/preload_cubit_test.dart new file mode 100644 index 00000000..8fc41542 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/cubit/preload/preload_cubit_test.dart @@ -0,0 +1,75 @@ +import 'dart:ui'; + +import 'package:audioplayers/audioplayers.dart'; +import 'package:bloc_test/bloc_test.dart'; +import 'package:flame/cache.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:{{project_name.snakeCase()}}/gen/assets.gen.dart'; +import 'package:{{project_name.snakeCase()}}/loading/loading.dart'; + +class _MockImages extends Mock implements Images {} + +class _MockAudioCache extends Mock implements AudioCache {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + group('PreloadCubit', () { + group('loadSequentially', () { + late Images images; + late AudioCache audio; + + blocTest( + 'loads assets', + setUp: () { + images = _MockImages(); + when( + () => images.loadAll([Assets.images.unicornAnimation.path]), + ).thenAnswer((invocation) => Future.value([])); + + audio = _MockAudioCache(); + when( + () => audio.loadAll([Assets.audio.background, Assets.audio.effect]), + ).thenAnswer( + (invocation) async => [ + Uri.parse(Assets.audio.background), + Uri.parse(Assets.audio.effect), + ], + ); + }, + build: () => PreloadCubit(images, audio), + act: (bloc) => bloc.loadSequentially(), + expect: () => [ + isA() + .having((s) => s.currentLabel, 'currentLabel', equals('')) + .having((s) => s.totalCount, 'totalCount', equals(2)), + isA() + .having((s) => s.currentLabel, 'currentLabel', equals('audio')) + .having((s) => s.isComplete, 'isComplete', isFalse) + .having((s) => s.loadedCount, 'loadedCount', equals(0)), + isA() + .having((s) => s.currentLabel, 'currentLabel', equals('audio')) + .having((s) => s.isComplete, 'isComplete', isFalse) + .having((s) => s.loadedCount, 'loadedCount', equals(1)), + isA() + .having((s) => s.currentLabel, 'currentLabel', equals('images')) + .having((s) => s.isComplete, 'isComplete', isFalse) + .having((s) => s.loadedCount, 'loadedCount', equals(1)), + isA() + .having((s) => s.currentLabel, 'currentLabel', equals('images')) + .having((s) => s.isComplete, 'isComplete', isTrue) + .having((s) => s.loadedCount, 'loadedCount', equals(2)), + ], + verify: (bloc) { + verify( + () => audio.loadAll([Assets.audio.background, Assets.audio.effect]), + ).called(1); + verify( + () => images.loadAll([Assets.images.unicornAnimation.path]), + ).called(1); + }, + ); + }); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/cubit/preload/preload_state_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/cubit/preload/preload_state_test.dart new file mode 100644 index 00000000..037a961d --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/cubit/preload/preload_state_test.dart @@ -0,0 +1,46 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:{{project_name.snakeCase()}}/loading/loading.dart'; + +void main() { + group('PreloadState', () { + test('initial', () { + const state = PreloadState.initial(); + expect(state.totalCount, 0); + expect(state.loadedCount, 0); + expect(state.currentLabel, ''); + }); + + group('progress', () { + test('when not started is zero', () { + const state = PreloadState.initial(); + expect(state.progress, 0); + }); + + test('after started', () { + final state = const PreloadState.initial().copyWith( + totalCount: 2, + loadedCount: 1, + ); + expect(state.progress, 0.5); + }); + }); + + group('isComplete', () { + test('when not started is zero', () { + const state = PreloadState.initial(); + expect(state.isComplete, false); + }); + + test('after started', () { + final state = const PreloadState.initial().copyWith( + totalCount: 2, + loadedCount: 1, + ); + expect(state.isComplete, false); + + final stateComplete = state.copyWith(loadedCount: 2); + expect(stateComplete.isComplete, true); + }); + }); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/view/loading_page_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/view/loading_page_test.dart new file mode 100644 index 00000000..0b9e03f6 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/loading/view/loading_page_test.dart @@ -0,0 +1,102 @@ +// ignore_for_file: prefer_const_constructors + +import 'dart:async'; +import 'dart:ui'; + +import 'package:audioplayers/audioplayers.dart'; +import 'package:flame/cache.dart'; +import 'package:flutter/widgets.dart' hide Image; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockingjay/mockingjay.dart'; +import 'package:{{project_name.snakeCase()}}/gen/assets.gen.dart'; +import 'package:{{project_name.snakeCase()}}/loading/loading.dart'; + +import '../../helpers/helpers.dart'; + +class _MockImages extends Mock implements Images {} + +class _MockAudioCache extends Mock implements AudioCache {} + +void main() { + group('LoadingPage', () { + late PreloadCubit preloadCubit; + late _MockImages images; + late _MockAudioCache audio; + + setUp(() { + preloadCubit = PreloadCubit( + images = _MockImages(), + audio = _MockAudioCache(), + ); + + when(() => images.loadAll(any())).thenAnswer((_) async => []); + + when(() => audio.loadAll([Assets.audio.background, Assets.audio.effect])) + .thenAnswer( + (_) async => [ + Uri.parse(Assets.audio.background), + Uri.parse(Assets.audio.effect), + ], + ); + }); + + testWidgets('basic layout', (tester) async { + await tester.pumpApp( + LoadingPage(), + preloadCubit: preloadCubit, + ); + + expect(find.byType(AnimatedProgressBar), findsOneWidget); + expect(find.textContaining('Loading'), findsOneWidget); + + await tester.pumpAndSettle(Duration(seconds: 1)); + }); + + testWidgets('loading text', (tester) async { + Text textWidgetFinder() { + return find.textContaining('Loading').evaluate().first.widget as Text; + } + + await tester.pumpApp( + LoadingPage(), + preloadCubit: preloadCubit, + ); + + expect(textWidgetFinder().data, 'Loading ...'); + + unawaited(preloadCubit.loadSequentially()); + + await tester.pump(); + + expect(textWidgetFinder().data, 'Loading Delightful music...'); + await tester.pump(const Duration(milliseconds: 200)); + + expect(textWidgetFinder().data, 'Loading Beautiful scenery...'); + await tester.pump(const Duration(milliseconds: 200)); + + /// flush animation timers + await tester.pumpAndSettle(); + }); + + testWidgets('redirects after loading', (tester) async { + final navigator = MockNavigator(); + when(navigator.canPop).thenReturn(true); + when(() => navigator.pushReplacement(any())) + .thenAnswer((_) async {}); + + await tester.pumpApp( + LoadingPage(), + preloadCubit: preloadCubit, + navigator: navigator, + ); + + unawaited(preloadCubit.loadSequentially()); + + await tester.pump(const Duration(milliseconds: 800)); + + await tester.pumpAndSettle(); + + verify(() => navigator.pushReplacement(any())).called(1); + }); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/title/view/title_page_test.dart b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/title/view/title_page_test.dart new file mode 100644 index 00000000..eec10404 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/test/title/view/title_page_test.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockingjay/mockingjay.dart'; + +import 'package:{{project_name.snakeCase()}}/title/title.dart'; + +import '../../helpers/helpers.dart'; + +void main() { + group('TitlePage', () { + testWidgets('renders TitleView', (tester) async { + await tester.pumpApp(const TitlePage()); + expect(find.byType(TitleView), findsOneWidget); + }); + }); + + group('TitleView', () { + testWidgets('renders start button', (tester) async { + await tester.pumpApp(const TitleView()); + + expect(find.byType(ElevatedButton), findsOneWidget); + }); + + testWidgets('starts the game when start button is tapped', (tester) async { + final navigator = MockNavigator(); + when(navigator.canPop).thenReturn(true); + when( + () => navigator.pushReplacement(any()), + ).thenAnswer((_) async {}); + + await tester.pumpApp(const TitleView(), navigator: navigator); + + await tester.tap(find.byType(ElevatedButton)); + + verify(() => navigator.pushReplacement(any())).called(1); + }); + }); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/favicon.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/favicon.png new file mode 100644 index 00000000..66a69cb1 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/favicon.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/Icon-192.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/Icon-192.png new file mode 100644 index 00000000..69c31fc5 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/Icon-192.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/Icon-512.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/Icon-512.png new file mode 100644 index 00000000..d920815d Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/Icon-512.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/favicon.png b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/favicon.png new file mode 100644 index 00000000..66a69cb1 Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/icons/favicon.png differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/index.html b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/index.html new file mode 100644 index 00000000..1d276b48 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/index.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + {{project_name.titleCase()}} + + + + + + + + + \ No newline at end of file diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/manifest.json b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/manifest.json new file mode 100644 index 00000000..f6d1ee6b --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/web/manifest.json @@ -0,0 +1,23 @@ +{ + "name": "{{project_name.titleCase()}}", + "short_name": "{{project_name.titleCase()}}", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A Very Good Project created by Very Good CLI.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/.gitignore b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/.gitignore new file mode 100644 index 00000000..d492d0d9 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/CMakeLists.txt b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/CMakeLists.txt new file mode 100644 index 00000000..880bbaec --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/CMakeLists.txt @@ -0,0 +1,95 @@ +cmake_minimum_required(VERSION 3.14) +project({{project_name.snakeCase()}} LANGUAGES CXX) + +set(BINARY_NAME "{{project_name.snakeCase()}}") + +cmake_policy(SET CMP0063 NEW) + +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Configure build options. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() + +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") + +# Flutter library and tool build rules. +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/CMakeLists.txt b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/CMakeLists.txt new file mode 100644 index 00000000..b2e4bd8d --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/CMakeLists.txt @@ -0,0 +1,103 @@ +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugin_registrant.cc b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000..09e8e2c3 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,14 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + AudioplayersWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin")); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugin_registrant.h b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000..dc139d85 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugins.cmake b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugins.cmake new file mode 100644 index 00000000..375535c9 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/flutter/generated_plugins.cmake @@ -0,0 +1,24 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + audioplayers_windows +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/CMakeLists.txt b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/CMakeLists.txt new file mode 100644 index 00000000..de2d8916 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) +apply_standard_settings(${BINARY_NAME}) +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/Runner.rc b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/Runner.rc new file mode 100644 index 00000000..e4cef5b4 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#ifdef FLUTTER_BUILD_NUMBER +#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER +#else +#define VERSION_AS_NUMBER 1,0,0 +#endif + +#ifdef FLUTTER_BUILD_NAME +#define VERSION_AS_STRING #FLUTTER_BUILD_NAME +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example.verygoodcore.{{project_name.paramCase()}}" "\0" + VALUE "FileDescription", "{{project_name.snakeCase()}}" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "{{project_name.snakeCase()}}" "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 com.example.verygoodcore.{{project_name.paramCase()}}. All rights reserved." "\0" + VALUE "OriginalFilename", "{{project_name.snakeCase()}}.exe" "\0" + VALUE "ProductName", "{{project_name.titleCase()}}" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/flutter_window.cpp b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/flutter_window.cpp new file mode 100644 index 00000000..b43b9095 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/flutter_window.cpp @@ -0,0 +1,61 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/flutter_window.h b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/flutter_window.h new file mode 100644 index 00000000..6da0652f --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/main.cpp b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/main.cpp new file mode 100644 index 00000000..faf74af4 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.CreateAndShow(L"{{project_name.titleCase()}}", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/resource.h b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/resource.h new file mode 100644 index 00000000..d7b448fc --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/resource.h @@ -0,0 +1,16 @@ +// +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/resources/app_icon.ico b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/resources/app_icon.ico new file mode 100644 index 00000000..c04e20ca Binary files /dev/null and b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/resources/app_icon.ico differ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/runner.exe.manifest b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/runner.exe.manifest new file mode 100644 index 00000000..c977c4a4 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/utils.cpp b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/utils.cpp new file mode 100644 index 00000000..d19bdbbc --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + if (target_length == 0) { + return std::string(); + } + std::string utf8_string; + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/utils.h b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/utils.h new file mode 100644 index 00000000..3879d547 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/win32_window.cpp b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/win32_window.cpp new file mode 100644 index 00000000..c10f08dc --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/win32_window.cpp @@ -0,0 +1,245 @@ +#include "win32_window.h" + +#include + +#include "resource.h" + +namespace { + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + FreeLibrary(user32_module); + } +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + return OnCreate(); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} diff --git a/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/win32_window.h b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/win32_window.h new file mode 100644 index 00000000..17ba4311 --- /dev/null +++ b/very_good_flame_game/__brick__/{{project_name.snakeCase()}}/windows/runner/win32_window.h @@ -0,0 +1,98 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates and shows a win32 window with |title| and position and size using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size to will treat the width height passed in to this function + // as logical pixels and scale to appropriate for the default monitor. Returns + // true if the window was created successfully. + bool CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/very_good_flame_game/analysis_options.yaml b/very_good_flame_game/analysis_options.yaml new file mode 100644 index 00000000..41ffce1e --- /dev/null +++ b/very_good_flame_game/analysis_options.yaml @@ -0,0 +1,3 @@ +analyzer: + exclude: + - __brick__/** diff --git a/very_good_flame_game/brick.yaml b/very_good_flame_game/brick.yaml new file mode 100644 index 00000000..c31f4c79 --- /dev/null +++ b/very_good_flame_game/brick.yaml @@ -0,0 +1,24 @@ +name: very_good_flame_game +description: A Very Good Flame Game created by Very Good Ventures. +repository: https://github.com/VeryGoodOpenSource/very_good_flame_game +version: 0.5.1 + +environment: + mason: ">=0.1.0-dev.50 <0.1.0" + +vars: + project_name: + type: string + description: The project name + default: my_game + prompt: What is the project name? + org_name: + type: string + description: The organization name + default: com.example + prompt: What is the organization name? + description: + type: string + description: A short project description + default: A Very Good Flame Game + prompt: What is the project description? diff --git a/very_good_flame_game/config.json b/very_good_flame_game/config.json new file mode 100644 index 00000000..8ce4e989 --- /dev/null +++ b/very_good_flame_game/config.json @@ -0,0 +1,5 @@ +{ + "project_name": "unicorn_game", + "org_name": "very_good_ventures", + "description": "A very_good_flame_game configuration." +}