From ab4146b9ccfcd2cd0370caf75db426e7241d7180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Wed, 28 Jul 2021 16:47:38 +0200 Subject: [PATCH] Add minimal empty application --- .gitignore | 46 ++ .gitlab-ci.yml | 124 +++++ .metadata | 10 + README.md | 3 +- android/.gitignore | 11 + android/app/build.gradle | 70 +++ android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 41 ++ .../benoitharrault/reversi/MainActivity.java | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1995 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1303 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3012 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4747 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 6604 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 29 ++ android/gradle.properties | 5 + .../gradle/wrapper/gradle-wrapper.properties | 6 + android/settings.gradle | 11 + assets/empty.png | Bin 0 -> 170 bytes assets/icons/button_back.png | Bin 0 -> 3744 bytes assets/icons/button_start.png | Bin 0 -> 3969 bytes assets/icons/difficulty_easy.png | Bin 0 -> 2833 bytes assets/icons/difficulty_hard.png | Bin 0 -> 2649 bytes assets/icons/difficulty_medium.png | Bin 0 -> 2857 bytes assets/icons/game_win.png | Bin 0 -> 7906 bytes assets/skins/default_tile_black.png | Bin 0 -> 3383 bytes assets/skins/default_tile_white.png | Bin 0 -> 3271 bytes .../metadata/android/en-US/changelogs/1.txt | 1 + .../metadata/android/en-US/changelogs/2.txt | 1 + .../metadata/android/en-US/changelogs/3.txt | 1 + .../metadata/android/en-US/changelogs/4.txt | 1 + .../metadata/android/en-US/changelogs/5.txt | 1 + .../metadata/android/en-US/changelogs/6.txt | 1 + .../android/en-US/full_description.txt | 1 + .../metadata/android/en-US/images/icon.png | Bin 0 -> 21946 bytes .../android/en-US/short_description.txt | 1 + fastlane/metadata/android/en-US/title.txt | 1 + .../metadata/android/fr-FR/changelogs/1.txt | 1 + .../metadata/android/fr-FR/changelogs/2.txt | 1 + .../metadata/android/fr-FR/changelogs/3.txt | 1 + .../metadata/android/fr-FR/changelogs/4.txt | 1 + .../metadata/android/fr-FR/changelogs/5.txt | 1 + .../metadata/android/fr-FR/changelogs/6.txt | 1 + .../android/fr-FR/full_description.txt | 1 + .../android/fr-FR/short_description.txt | 1 + fastlane/metadata/android/fr-FR/title.txt | 1 + icons/build_application_icons.sh | 70 +++ icons/build_repository_icons.sh | 48 ++ icons/button_back.svg | 2 + icons/button_start.svg | 2 + icons/difficulty_easy.svg | 2 + icons/difficulty_hard.svg | 2 + icons/difficulty_medium.svg | 2 + icons/empty.svg | 2 + icons/game_win.svg | 2 + icons/icon.svg | 84 ++++ icons/skins/default/tile_black.svg | 2 + icons/skins/default/tile_white.svg | 2 + ios/.gitignore | 33 ++ ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 472 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 91 ++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.h | 6 + ios/Runner/AppDelegate.m | 13 + .../AppIcon.appiconset/Contents.json | 122 +++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 45 ++ ios/Runner/main.m | 9 + lib/main.dart | 34 ++ lib/provider/data.dart | 75 +++ lib/screens/home.dart | 32 ++ pubspec.lock | 161 ++++++ pubspec.yaml | 22 + test/widget_test.dart | 14 + 108 files changed, 1966 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 .metadata create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/java/org/benoitharrault/reversi/MainActivity.java create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 assets/empty.png create mode 100644 assets/icons/button_back.png create mode 100644 assets/icons/button_start.png create mode 100644 assets/icons/difficulty_easy.png create mode 100644 assets/icons/difficulty_hard.png create mode 100644 assets/icons/difficulty_medium.png create mode 100644 assets/icons/game_win.png create mode 100644 assets/skins/default_tile_black.png create mode 100644 assets/skins/default_tile_white.png create mode 100644 fastlane/metadata/android/en-US/changelogs/1.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/2.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/3.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/4.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/5.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/6.txt create mode 100644 fastlane/metadata/android/en-US/full_description.txt create mode 100644 fastlane/metadata/android/en-US/images/icon.png create mode 100644 fastlane/metadata/android/en-US/short_description.txt create mode 100644 fastlane/metadata/android/en-US/title.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/1.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/2.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/3.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/4.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/5.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/6.txt create mode 100644 fastlane/metadata/android/fr-FR/full_description.txt create mode 100644 fastlane/metadata/android/fr-FR/short_description.txt create mode 100644 fastlane/metadata/android/fr-FR/title.txt create mode 100755 icons/build_application_icons.sh create mode 100755 icons/build_repository_icons.sh create mode 100644 icons/button_back.svg create mode 100644 icons/button_start.svg create mode 100644 icons/difficulty_easy.svg create mode 100644 icons/difficulty_hard.svg create mode 100644 icons/difficulty_medium.svg create mode 100644 icons/empty.svg create mode 100644 icons/game_win.svg create mode 100644 icons/icon.svg create mode 100644 icons/skins/default/tile_black.svg create mode 100644 icons/skins/default/tile_white.svg create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.h create mode 100644 ios/Runner/AppDelegate.m create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/main.m create mode 100644 lib/main.dart create mode 100644 lib/provider/data.dart create mode 100644 lib/screens/home.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/widget_test.dart diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0fa6b67 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..9d0e11e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,124 @@ +image: cirrusci/flutter:latest + +stages: + - update + - build-debug + - build-release + - release + - deploy + +update: + stage: update + except: + - tags + script: + - flutter packages get + - flutter packages upgrade + interruptible: true + +android:build-debug: + stage: build-debug + except: + - tags + script: + # Flutter local configuration + - echo flutter.sdk=$FLUTTER_PATH > android/local.properties + - echo sdk.dir=$ANDROID_SDK_PATH >> android/local.properties + - echo flutter.buildMode=debug >> android/local.properties + # Android signing + - echo "$ANDROID_DEBUG_KEYSTORE_FILE" | base64 -d > android/app/my.keystore + - echo storeFile=my.keystore > android/key.properties + - echo storePassword=$ANDROID_DEBUG_KEYSTORE_PASSWORD >> android/key.properties + - echo keyAlias=$ANDROID_DEBUG_KEY_ALIAS >> android/key.properties + - echo keyPassword=$ANDROID_DEBUG_KEY_PASSWORD >> android/key.properties + # build flutter app + - flutter packages get + - flutter clean + - flutter build apk --debug + # prepare artifact + - find . -name "*.apk" # where is my apk? + artifacts: + paths: + - build/app/outputs/apk/debug + expire_in: 1 week + interruptible: true + +android:build-release: + stage: build-release + only: + - master + except: + - tags + dependencies: + - android:build-debug + script: + # Flutter local configuration + - echo flutter.sdk=$FLUTTER_PATH > android/local.properties + - echo sdk.dir=$ANDROID_SDK_PATH >> android/local.properties + - echo flutter.buildMode=release >> android/local.properties + # Android signing + - echo "$ANDROID_KEYSTORE_FILE" | base64 -d > android/app/my.keystore + - echo storeFile=my.keystore > android/key.properties + - echo storePassword=$ANDROID_KEYSTORE_PASSWORD >> android/key.properties + - echo keyAlias=$ANDROID_KEY_ALIAS >> android/key.properties + - echo keyPassword=$ANDROID_KEY_PASSWORD >> android/key.properties + # build flutter app + - VERSION_FILE="$(find . -name 'gradle.properties' | head -n1)" + - VERSION_NAME="$(grep '^app.versionName=' "${VERSION_FILE}" | cut -d'=' -f2)" + - VERSION_CODE="$(grep '^app.versionCode=' "${VERSION_FILE}" | cut -d'=' -f2)" + - TAG_NAME="Release_${VERSION_NAME}_${VERSION_CODE}" + - echo "${TAG_NAME}" + - > + if [ $(git tag -l "${TAG_NAME}") ]; then + echo "Tag ${TAG_NAME} already exists. Skipping build release." + else + flutter packages get + flutter clean + flutter build apk --release + fi + # prepare artifact + - find . -name "*.apk" # where is my apk? + artifacts: + paths: + - build/app/outputs/apk/release + expire_in: 1 week + interruptible: true + +application:release: + stage: release + image: + name: alpine/git + entrypoint: [""] + only: + - master + except: + - tags + dependencies: + - android:build-release + script: + - apk --no-cache add curl + - git config user.email "${GITLAB_USER_EMAIL}" + - git config user.name "${GITLAB_USER_NAME}" + - git remote set-url origin https://oauth2:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH} + - VERSION_FILE="$(find . -name 'gradle.properties' | head -n1)" + - VERSION_NAME="$(grep '^app.versionName=' "${VERSION_FILE}" | cut -d'=' -f2)" + - VERSION_CODE="$(grep '^app.versionCode=' "${VERSION_FILE}" | cut -d'=' -f2)" + - TAG_NAME="Release_${VERSION_NAME}_${VERSION_CODE}" + - echo "${TAG_NAME}" + - > + if [ $(git tag -l "${TAG_NAME}") ]; then + echo "Tag ${TAG_NAME} already exists. Skipping release and tag creation." + else + git tag -a "${TAG_NAME}" -m "Release ${VERSION_NAME} (${VERSION_CODE})" + git push origin "${TAG_NAME}" + curl --silent -d "{\"token\": \"${JABBER_NOTIFICATION_TOKEN}\", \"message\": \"New tag for ${CI_PROJECT_PATH}: ${TAG_NAME}\"}" -H "Content-Type: application/json" -X POST ${JABBER_NOTIFICATION_URL} + fi + +android:deploy: + stage: deploy + only: + - tags + dependencies: + - application:release + script: + - curl "${REPOSITORY_UPDATE_WEBHOOK}?token=${REPOSITORY_TOKEN}" diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..b2896b2 --- /dev/null +++ b/.metadata @@ -0,0 +1,10 @@ +# 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: 5bedb7b1d5698ce2c1c67aaf9afae7b3948b172a + channel: beta + +project_type: app diff --git a/README.md b/README.md index 7f35469..a20feb5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1 @@ -# org.benoitharrault.reversi - +# Reversi game diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..0a741cb --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,11 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/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 diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..2849919 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,70 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def gradleProperties = new Properties() +def gradlePropertiesFile = rootProject.file('gradle.properties') +if (gradlePropertiesFile.exists()) { + gradlePropertiesFile.withReader('UTF-8') { reader -> + gradleProperties.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 appVersionCode = gradleProperties.getProperty('app.versionCode') +if (appVersionCode == null) { + appVersionCode = '1' +} + +def appVersionName = gradleProperties.getProperty('app.versionName') +if (appVersionName == null) { + appVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + +android { + compileSdkVersion 30 + + defaultConfig { + applicationId "org.benoitharrault.reversi" + minSdkVersion 16 + targetSdkVersion 30 + versionCode appVersionCode.toInteger() + versionName appVersionName + archivesBaseName = "$applicationId" + "_" + "$versionCode" + } + + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + buildTypes { + release { + signingConfig signingConfigs.release + } + } +} + +flutter { + source '../..' +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..76daa7e --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.benoitharrault.reversi"> + <!-- Flutter needs it to communicate with the running application + to allow setting breakpoints, to provide hot reload, etc. + --> + <uses-permission android:name="android.permission.INTERNET"/> +</manifest> diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..baefc4f --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,41 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.benoitharrault.reversi"> + <application + android:label="reversi" + android:icon="@mipmap/ic_launcher"> + <activity + android:name=".MainActivity" + android:launchMode="singleTop" + android:theme="@style/LaunchTheme" + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" + android:hardwareAccelerated="true" + android:windowSoftInputMode="adjustResize"> + <!-- Specifies an Android theme to apply to this Activity as soon as + the Android process has started. This theme is visible to the user + while the Flutter UI initializes. After that, this theme continues + to determine the Window background behind the Flutter UI. --> + <meta-data + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" + /> + <!-- Displays an Android View that continues showing the launch screen + Drawable until Flutter paints its first frame, then this splash + screen fades out. A splash screen is useful to avoid any visual + gap between the end of Android's launch screen and the painting of + Flutter's first frame. --> + <meta-data + android:name="io.flutter.embedding.android.SplashScreenDrawable" + android:resource="@drawable/launch_background" + /> + <intent-filter> + <action android:name="android.intent.action.MAIN"/> + <category android:name="android.intent.category.LAUNCHER"/> + </intent-filter> + </activity> + <!-- Don't delete the meta-data below. + This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> + <meta-data + android:name="flutterEmbedding" + android:value="2" /> + </application> +</manifest> diff --git a/android/app/src/main/java/org/benoitharrault/reversi/MainActivity.java b/android/app/src/main/java/org/benoitharrault/reversi/MainActivity.java new file mode 100644 index 0000000..54c0bb5 --- /dev/null +++ b/android/app/src/main/java/org/benoitharrault/reversi/MainActivity.java @@ -0,0 +1,6 @@ +package org.benoitharrault.reversi; + +import io.flutter.embedding.android.FlutterActivity; + +public class MainActivity extends FlutterActivity { +} diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Modify this file to customize your launch splash screen --> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:drawable="?android:colorBackground" /> + + <!-- You can insert your own image assets here --> + <!-- <item> + <bitmap + android:gravity="center" + android:src="@mipmap/launch_image" /> + </item> --> +</layer-list> diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Modify this file to customize your launch splash screen --> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:drawable="@android:color/white" /> + + <!-- You can insert your own image assets here --> + <!-- <item> + <bitmap + android:gravity="center" + android:src="@mipmap/launch_image" /> + </item> --> +</layer-list> diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..76a4e23aa499c3bd8275cd1ef1bd70dc6104c117 GIT binary patch literal 1995 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e747a1150a9c8b54a0628c25d2a153a43b9b6a33 GIT binary patch literal 1303 zcmV+y1?c*TP)<h;3K|Lk000e1NJLTq001xm001xu0{{R3VB86{00009a7bBm000=K z000=K0h@W>SpWb48FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10nt!Q zR7C&)000000001h0031009920KtKRMKtMAyGb<}ARVyn=BqTr}AUPZyIXN6NGa5!N zE<h_QJ0~YMBqT{BBt#-2Kp-GIEgm^5962j1M=L8sC@4B3BSS19Kr0|UDIYl|CO{-4 zJ|iPQC?Gy3Cpsh~LL?+WD<eE8B0DD`);~7aJ~H!SR^~x8^G-qZPD18EHQYWl+&?t+ zT2S&rHuFL@^g}lEL^$0*GxS3?^h7uGL^$+CIP^w2^hY}MM?3ULJoQjS^-)FjQ%Chw zNcC4s^;k^yV_5cMS@vdI_Gw=BX<zngVD@Wa_H1GIacB2&X!mkx_jzykd2si7arb+2 z_k42qd~^4GboYLB_=9@*gnRgeeE5ZZ_=|)1jD+}%h549}`IwRUnUeXMllhvI`J0sa zoR#{boBE@i`lO!vrJwqypZcbt`lzD%sH6I+qx!0(`?Ie5w6FWMu=}>L`?j+D#K8Q- z!TiO+{Kmrk$He@~#{AC9{Ljq%(a!za*!|nt{oLC9;NAV;-u~s|{^jKU=H&k7<^Jd8 z{_gDl?(P2b^ZxYo|Mm3$_Vxew_y73!|M~d;`T76)`v3d;|NQ*_{rvy^{r~>{|Ns9Z z|KIrl00202QchC<0RjR80|W#G1_lQR2?+`d3=Iwr4-gR&5)u;@7Z@2E933DbBO@dx zCs9&U;^X7w<>lr5{r&ypdt#3O00M(aL_t(Y$Gw*8TM|JO#$CV`1G6L~yI<{QS4$f< zl0+-h0#d-dk(nu(<^@YpF+`ClLqUhL``5<qa!a2Xr!T!<_RQ@5o;mx>JLgPU+5Zzq z*WRx+I-aU>?OzC|J$&@IxrQjS`IzxgDN*0hcAy&Sxne$d5QA>>`Lr~KCKjN{WGq(* zj<0TH0UFQO7&Ho?x3B?qrz^DzP;rtCxOV194miaITt8d24-f`I(bZt5I(Rj=8V&Ue zG@xY#U~?PrgcTv{1O{2*7BcX71s0zpn<oat2#o+1B}oz?ED(VKSX5rNC6bQTEi5S# zp^pfJ;Ds8Dg8v<eDj>l;5m@_`OV<fsCJR6&N(3U?HZ|ymK%lt7cOozc9yJJp*Ov!G zm?Z+8IMyaVJ-h48_Kl26VEmH24-@cn)YTo_O*s*ArLibVB8E?tjk69X<-J;W$^%zS zj*~-Hnl+HaKQ-oUR%5$wY--R!_Y!LLPX~JJIpA$z+TThAtRq`;8b6ej+;JtP544mf zW&em`CY>eR>7AK3u8#@$Oa@+K)jwip!)}l7bSb`y;SM73wYXWn9+*)ly$~c@1Ef5V zwMLgZ`6NZQ#u_dFS@XGbxo?uqw@_SR&<~^PWIKE#0{!`az)6QAnRuq0@+Igc0zz0J zvi=!D=sm=}Hq^cZ%L1hcgq3rT$K@h0jv@6MVEHMv%=9fpBeOX_cg#kj^SuJyOKgRV zwNw@W#$tRmUyOMZ8*uSNuH5U44_JVQmMUItL7eU`3vkQ8Yw}I*=DkM;>i&(A&dcdd z=Pq5TBkS^oTBEkKPwNcTmRgD|=1P7~XXo`56zTOk?%%E&`z{;I`U4ku(*Jv9MB4xW N002ovPDHLkV1h|vW90w< literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..cd535dffa21b27b5a4969ea90992caf21287768c GIT binary patch literal 3012 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 GLSTYuFqY2% literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..eca758efa5511372b0752f9a04a7a1ec678f3747 GIT binary patch literal 4747 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 Z{{i;)gOxo2b9Vp$002ovPDHLkV1f=3^_u_y literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6c831889200b6f0716afecbd912431d569efd6 GIT binary patch literal 6604 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 X+v27ol!}QrF@V-ReN?R~I`n@4-MKHw literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..449a9f9 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> + <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> + <!-- Show a splash screen on the activity. Automatically removed when + Flutter draws its first frame --> + <item name="android:windowBackground">@drawable/launch_background</item> + </style> + <!-- Theme applied to the Android Window as soon as the process has started. + This theme determines the color of the Android Window while your + Flutter UI initializes, as well as behind your Flutter UI while its + running. + + This Theme is only used starting with V2 of Flutter's Android embedding. --> + <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> + <item name="android:windowBackground">?android:colorBackground</item> + </style> +</resources> diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..d74aa35 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> + <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> + <!-- Show a splash screen on the activity. Automatically removed when + Flutter draws its first frame --> + <item name="android:windowBackground">@drawable/launch_background</item> + </style> + <!-- Theme applied to the Android Window as soon as the process has started. + This theme determines the color of the Android Window while your + Flutter UI initializes, as well as behind your Flutter UI while its + running. + + This Theme is only used starting with V2 of Flutter's Android embedding. --> + <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> + <item name="android:windowBackground">?android:colorBackground</item> + </style> +</resources> diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..76daa7e --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.benoitharrault.reversi"> + <!-- Flutter needs it to communicate with the running application + to allow setting breakpoints, to provide hot reload, etc. + --> + <uses-permission android:name="android.permission.INTERNET"/> +</manifest> diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..c9e3db0 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,29 @@ +buildscript { + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:4.1.0' + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..bc2d95e --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,5 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true +app.versionName=0.0.1 +app.versionCode=1 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..bc6a58a --- /dev/null +++ b/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-6.7-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/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/assets/empty.png b/assets/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..586de0573e7f77d97c16942f603b8ee6d9c7d7bc GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvS8AxUb{c{0QoCO|{#S9EG5g^QXcE<BFKtah8 z*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$mfQpy{d_r7-^ztg(TR@7jB*-tA z!Qt7BG$2RX)5S4FLh|iFLq;I)kizffalHHqKqf<hj?e)H#&-6L??60HS3j3^P6<r_ DJR2=x literal 0 HcmV?d00001 diff --git a/assets/icons/button_back.png b/assets/icons/button_back.png new file mode 100644 index 0000000000000000000000000000000000000000..2a802ff2d2bc0c90488a1c319288be9f28cdea5e GIT binary patch literal 3744 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 literal 0 HcmV?d00001 diff --git a/assets/icons/button_start.png b/assets/icons/button_start.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3b74a3b98f45de590a7f290b810daba7120912 GIT binary patch literal 3969 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 R3AzAy8S9&2U+Ov${{z{_1KI!p literal 0 HcmV?d00001 diff --git a/assets/icons/difficulty_easy.png b/assets/icons/difficulty_easy.png new file mode 100644 index 0000000000000000000000000000000000000000..66f1476dadfda62b03378a040f10737d9edbab1c GIT binary patch literal 2833 zcmb7`X*|^Z8pePB*^FU~eHg=xb*#e-#xR(%%Q|G6?8!QXqEMD;@kEOvN>rypB}BF) zp*$*O=^!bIdXTI|vOMVYygcvDdGWoj`*VM;7x%mC&gQx~U@-&?006tg(bn^~xBmkg z{#(OgSB!s~aJ(Zg0RV-U{{ShKpU3}R$|u_SCGL!iNK6Vn5Dt=(lBm(K{DiR3_;706 zfym+oa{>Ucms}SwyWe2|0SE>`a0o)cAS4Wig29B~Ff<${jDTYha1kV26bZ*75n?C= z4uudGLP!W9C54buXrwe6DI<)M6-MDPC^-yD9wS5$5mFElB8mzrilUW7(IhOIj72Mp z39E<+tKx*!aKh?1jD|RdB976Nz-UQ`XiJFbNQ&r6is(s+Ql&)or9};-MQPGlx(wD( z25TfMW-KelkQFn*i!t#yQ#qWO9F8TAGnW^)kQcWkh_eae90dt01qo{f2^*q>Em6`= zQPN&f(m_emQAx^~B;`Vub|p)@k)_?0rMb#79x5`PDl$7&WV}>my;Ws>)MS0tWc}3f zJazmob-cd@K0re*kRlgEkqf5Cg=or$YRd1{k`L38-=j?k*Cs@06C!mKqI48ubQSoz z#JzgNeR{-LDlv|#7_YCmUtjTnzG8xbQlf#<L7LJbno<&tltL#RHY6P}B&QmY(~QXJ zM&t}*Wr4BsQHDyUiOL^Lm6J@>EK}8NQ?;`!wH%h(IhOi)bM;(v^*jsp3l<s$mXty^ z<uZp-#L+C~XkM|>ylSO+&06bU)>_wXv~JjF-L%mzvDGfM)h@HszGbI#+fL_>y-vBk z&RqxH3J2Xv2i+=1-FuFD)jRZRcIe%A(yMi%);Uq@ov97Z)J7Nm2QK<eF8a-`29Mkf zTHFjCyBoB+)7so=?OfUuF72rYy~Bh4rw6^$lm5)p@cB-|E-#~3UPj&CMm^rfy*|c$ zKE|(ojQ{P+==Ws|_%R0k7;ktcLp+nWJd=03nD70WBmT?}{>;$;)3HF)@j%m0L1v$W z%>D{8n+P_W3}#J*u)c(_rbAd?L(OMG&1ZL;&+Rs!53^VZvsetX__oL5`yR`saLeUz z%OByED-rCU5$x4S_F5!+J&Lmt#rZpmvl-3ViniL0vHBImw1F4^2))>0Yvq;vetu*& zSlU}o=-U`o{6y0Pwxe6p*tsW<u03Zj9sV)TNeZi3*^(=J=!s{!nvSQAC(T6HqprUD zTRPO=&wY_sjDik~gs*Pm9uJ2n9h!2XMn(X(MPJ2ectr2=Z_K~U@dU@L6a02pzpiP5 z?$2S)`oY8n06_*2ngjl~@wGY;pTXW74Wfh<U%O_U!E0=|^ZgWLw6GQOF|6Y_09uuU zAMV%dEj{TBzPOUu{;;8|1g<vw{g@&v4L^-_+$?Q*4ihUo=UJ&)pHUGIo;*OYkm81X z*3F)PLbSg|3rHH+z^<u|V32;trRnSZ%r#il)*J&c>xbevi&I`extwws)_##Sc(Bly zidYjVd`DO~ED=073QitOcJMJVTU^H1ggZRfN%;IV7Ac)mP<n9Af(_lcl=nCeh968) zxK8i7J(g0}?cP4{bG!dR?!(>%Xu>abnb7lWL#SrqV%j$@&jiG1=t!~(zT(M0`U5&) z8&{}8bHqC?hbH&80r$p)pRSd&yEq=?FNaBee{8^qe;6(vrIqoa*%Z^lB77Gcb3hX) zuZSeGa5L8Jxo5H7pRN#Z5@l%UIg*TwajARZY)Ry>*t*Y!tH)CW$hpOVKtwWJZmiZS z_es{nvNQL6`Xb(Rj=YU+ynkxDc7BL7G0DEUpO2mzZU(O{@gQhVUFzLUFMip3u?B@H z(Yze-ZC-a5du>f#MDV;=RH)u!a+^JLBzCxUIX$MWJBV@#J3G7~EZYfH){bI9*25@+ zc1G9Zox|nuqafrkv%0hTW^~d`{`t#C@-Ji@OUVBFP17zLXg>QIBaWXUgmzo7wcCuG zB9m)F%jv(eUM^awesM#a;o{YH?AjV!?>s4U_0iTm^3|(%dM_7NAI<O|FD^tIiH#2& z{erp3O_LTRJ}>EiaBlbvES0=3qR~~n#>sL){_V!SMIkK|)LKxVy03MOd^75bd-G#A z#fMJzyF$^|OD{dhG(G5IGhACLUtLAI)udI40))7qK8F1IUW&BC5i!Q-YVPzxX~r9p z!DzydTuR|oO=J^}v9{QkT+sOfH41X<-(feoiUX=k_fP`C)BcYi#?XDQMYzWA&8v!N zht4KB+1}1>>5u?){}S)?$y7&5y9<yQkv|<D*Ycw4$0<Xaa^J|noAg_O*Ky<5g@H@7 zD=R>CEoEbJk#M=lYpJc;4lnqNy2>ay^^yV{_fKyIS`*o6%bp|KnI{i|)R}p+x_yh3 zmWrh9y~-xPX4C8SjZ0QjdO&gFd8LeNUrCo1CMMYHyHhIJ>YbBNYv2z74304FkU74+ zH?p;2+>rDJ9YxY&9qL!#LYBc(N1DopSqX&O5;Y$C50qfVrT<vlJXhp)=6mZ%3AR1u z*__e1c3!}ptwyuD<LW(~F|hbs?58?dP~+uZu;klgJBC_~fx5kNwp!^b8AEe~a8y<N z+^PHqx!Vv|suHxkJd+(}1!9Nef+Kv4cxqyP<;-EkBP-BIOm1wQ3+gpgwj&zYr&k7* zb=PQa7x1b-S>zwDu!Y(*b5<k_>4Pu(CvOVg%B<WNc(JK}r=YCk>M^kHIFedF-xK#9 z3pWa`Vi*ilP-`~nS4_{mtBdVsM&^gyAdDkvoZ?C`%=QJ^Gq)UEVbe&VbGh}rwBP$b zsW+xt%KL3@HAhO-+R*3~L+B?e4LiB20V2k6&Y0O`)DexCUUP7wOlB5$$IBGi$0tac zOt@lm(@suz3&Z0b-0D6ayOg|a6GwbYzs@sJUxx8t6cY#s?Ki%^V}h&~nge*QN?*Fy zGs~e`z4>xUk9K#kTQ00J@X(l9!eO|;^y6KA+u=*@KVPMXxvm@Pf@h~-{ZQdr8i&`y z9}DH-f50nq_hc0PK4+$|o~4h@g2bzqOd?~0lYSL7`9F|oMS^ar+P?c{{JcH%O=lX1 zZy<Q^h85cvb8eb=)xN0071~eou6h3<yR~fd)owu=_(r-4>V7Vt8SHnPQDOSNx@(!^ zTiMa%En0(VU-`8@TvenY-@0o>PA_#C#C;0noE9HPF2en`)EqVJR2uM3?25tC=O@4_ z%rEJoMn&0JOAIxC$@^}0UnWQcSDI5xMyi)n5@WRUd+&maS)dm_J=@2wr}nJ=t%uFb zt0R#N>=5yQb1Y+iA-@Vp>gRu67qDzWF{HaxH`=_1cN*?{dQ?<Cm2(0;zU6lIuQrlO zwEk;EsR+bahHlA1?ULZpW?XZ6tOGtOh&NVm_Bzo8!7V+2za#=8%I9y(vYXq)F3%G_ zw`#zmyr6tExCNqS189sfQSj~ztx;(p^WKf4shk^t454TDE@!Hm^|t#vO2PhIf<};F z6>ek3eq6@{P_SX6o~VB&==%=&BfwurN04-;5hklysZe|9+ydtFB)iE6)VzurRn4>J zM`(&)(`r_l+1u(ZfoynMCu#j}&(x>Sn#t1-^8c>}{O`8hb_dRLG6Y#JH!3Fs8f5q< U+QhC*{_~;kuyeD$XB~3vKj9&LUH||9 literal 0 HcmV?d00001 diff --git a/assets/icons/difficulty_hard.png b/assets/icons/difficulty_hard.png new file mode 100644 index 0000000000000000000000000000000000000000..2c1aef8bb260d6e5241a0856c11cfae129c9d24e GIT binary patch literal 2649 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 literal 0 HcmV?d00001 diff --git a/assets/icons/difficulty_medium.png b/assets/icons/difficulty_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..146d9b9ca714b9c82e9a5188e88e5cc8736b893e GIT binary patch literal 2857 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 literal 0 HcmV?d00001 diff --git a/assets/icons/game_win.png b/assets/icons/game_win.png new file mode 100644 index 0000000000000000000000000000000000000000..d73741df40e8cb97e2bf0eec929bba2e7859459a GIT binary patch literal 7906 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,X=n^K&-!^nHlb&ECkRJRK^3O$jZhJszd7qpe zAgRa={tCt!RLa~eQ*>yo!f6s8$>H|kR#t@c^92-1S_J=MravJ~cb{AphyB^0%7Fhz zwEk*Yswn{AXAyF(-l1sHA^}{?wS?F8&2p9BLmP))snCnAS7fu9jvE?UtBIXV(G-Pb zR@u%=U0rf-%9@g*A)gkVuQ&k~G2H<0Uk4Fjschd@n{kCgJHX4b+6~ul#Tm9Z)jW!h zFH}I%*4&?xT5b70pmzO_gR6@bFa8Q{(4YB&tXtq9`~q&rBO?LEDnx+Q6k%!xe|7Od z0Q~OI_B|zY658de&6utb0e+78S>I*O<m+`F;&;gj6uA;e%9_&t0QT<)t$R@F8mnsR zUK(b&dm3$?S3vg~t)7i}mX$Zg3@Y%=6^jDJcv+rMvhXP0Eh&OyS^3u&U6NL9*+B$9 z?qK+-b%a`;)oAy;3gAZpdSFVir+175_*^jpY#MTNj0E_K(3a>fisBdqR`_=Wz>k0! zrD}TCJey}<5CKrG-5a$V;4cJQmwr⪙`_nB)|uR2-z(Z#jy~e+OmgCfRdOBJUJYW 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�bOEq@Gw5l`U`Hn<L07-TMSa@y&8-D=m!tZ6Y<MuQ- z=ZS;ARk=pzbPYv>783~YD`@xl5rDN4-Jc0luas)sMvLdxNWtGa9?z;6?fpQItq)7_ z5>j?CtS##f;64-<0esG#Ff>gZm|!&;FAx%)6h8uR8$$`eej??#^XwjTGz0+sDh69y z1YSa_zojkLRDN|h;BV9Xy0ShR*#WwM?juaftMMQJ(wheey!f(6IqqDm#~396>Z6Rh zO#{205Fmg>^*{ml=jKQVz&6Ytq@j@LD};&pA<|Ock`O@07Ll_)%>$$*fcu(g2#{;@ zE{$T5xkC{AF6KLY7E?a~>dOa4K!D?>Ewj$l5CJ9&OiqU41R&q|YLwiiHMly#^ZgL< z8NljgqaeU;0sHO&y-GWWV4rhqcmyb4#b`*-GUi-97btjw9#E11D9h0q!2TQIuCFW? z{f$<SH9`XHC@QM#8X@?*gSHTC`x8z~)KnPM+)$Pi1_4^k4dpjzEyN2G@)=>0mMcnt z@dcRz?vE_?%yLw9hG(n_6a39ayE`jN+j@fRx*s%?(W00dopVIMe*(@5RxOST+@PmP zTePAC(6hzF-d!W}Wa~D`mQ<Z>w0S-4fd3#a`Wv-vmogWDEtm4H&?>Z;Nnx}sT%&Ue zxH(@0f&X)^v3!(P$Hc#!3H4K#GM6bv0P@9`I=RR0a5y^hVbR*4=iiUt7U$1!_hqOM zh~S%ZDOc|tI@MR+TkB&%Z!wn&q(vB%+X1*HLgwd7O4?zHt?E3ZbyYgf5G^dMIgO$` ziNqiJ3?;#1N)Q0o^dYA|m<s94Pzg9FvRV8}c@(q~0CKT}1n>}cfHxH(z<4%;cmRfj zF`acPZHGi$3;#%vi|~Pj1bCjX1Jo!&fNX9OkpPCmo^<A^-~-}K0@nk7$DI)+ItW{c ziE&}R5srxfI?hfQ+b?wHso>oB;lvk2tvND233q_80&gsP$xZ-0_Z%SsuAa_*vV(t& z`7*o`3e?0riq8a+eb?K}5F!EIW(LVlfNaw{gb2`k6ah)U`kS5<0RJ&uCtu<yP#=M8 z#T#TNfZkM17~^vk0rcSe4Ds!#3=N;ri_B>PS&NfoCxDLIOmOdJQUoOZ4!~XIKj;R6 zU&qSU<(<z{2@ZwcrN9|r55WbpQv^_Hi;*t`eHG~ou9Nk<T+A-Q4p6KB0S*yLpiHB) zPeoa>xtRYF&HytMAV4$01>)$8P*Iuyn+ZF>OgRaF%Nz=Xc<-PyLPco;)DU)nusY8G z;P-}HA+)>iZ1+12hAv8!K%_z?90DvN5MWAJ1h9KQ4kiFDJs747v^9tTE%+S>oe?TZ z6X0^todE=>47XHbj>S6+K>t&~{n>wo{k=NV=zzD~Cy?IcptC_GUL-gJ^j28;uZy%Y zME--GbMx$8ow3wAG~(|a!(NDV?0BRr7))n@3Kc3;s8FFog-V3-|MNF?&33GY;Q#;t M07*qoM6N<$g4G4ZWB>pF literal 0 HcmV?d00001 diff --git a/assets/skins/default_tile_black.png b/assets/skins/default_tile_black.png new file mode 100644 index 0000000000000000000000000000000000000000..c9147334912e10a656a748dacd9e5ee8a51210bb GIT binary patch literal 3383 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 N002ovPDHLkV1m3_cCr8f literal 0 HcmV?d00001 diff --git a/assets/skins/default_tile_white.png b/assets/skins/default_tile_white.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac8407cc621b5931503d80be48443d44fead163 GIT binary patch literal 3271 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 FV1n{7Lj?c; literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/changelogs/1.txt b/fastlane/metadata/android/en-US/changelogs/1.txt new file mode 100644 index 0000000..777d1a0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1.txt @@ -0,0 +1 @@ +Add initial empty app diff --git a/fastlane/metadata/android/en-US/changelogs/2.txt b/fastlane/metadata/android/en-US/changelogs/2.txt new file mode 100644 index 0000000..fe56ebf --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2.txt @@ -0,0 +1 @@ +Improve CI/CD, add jabber notification on create tag diff --git a/fastlane/metadata/android/en-US/changelogs/3.txt b/fastlane/metadata/android/en-US/changelogs/3.txt new file mode 100644 index 0000000..c4767c3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.txt @@ -0,0 +1 @@ +Add minimal playable game. diff --git a/fastlane/metadata/android/en-US/changelogs/4.txt b/fastlane/metadata/android/en-US/changelogs/4.txt new file mode 100644 index 0000000..60ec69f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/4.txt @@ -0,0 +1 @@ +Finalize minimal gameplay. diff --git a/fastlane/metadata/android/en-US/changelogs/5.txt b/fastlane/metadata/android/en-US/changelogs/5.txt new file mode 100644 index 0000000..8b03873 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/5.txt @@ -0,0 +1 @@ +Remove flag on cell when explored. diff --git a/fastlane/metadata/android/en-US/changelogs/6.txt b/fastlane/metadata/android/en-US/changelogs/6.txt new file mode 100644 index 0000000..9ff6c06 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/6.txt @@ -0,0 +1 @@ +Ensure first cell is not mined (postone put mines on board) diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 0000000..49f5278 --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1 @@ +Simple Reversi Game diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..86b383e0f61129e1b0f6a8584a36a30109a8f261 GIT binary patch literal 21946 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%0AE`jv1 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt new file mode 100644 index 0000000..49f5278 --- /dev/null +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +Simple Reversi Game diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 0000000..49f5278 --- /dev/null +++ b/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +Simple Reversi Game diff --git a/fastlane/metadata/android/fr-FR/changelogs/1.txt b/fastlane/metadata/android/fr-FR/changelogs/1.txt new file mode 100644 index 0000000..9246663 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/1.txt @@ -0,0 +1 @@ +Création de l'application minimale, vide. diff --git a/fastlane/metadata/android/fr-FR/changelogs/2.txt b/fastlane/metadata/android/fr-FR/changelogs/2.txt new file mode 100644 index 0000000..cdf380a --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/2.txt @@ -0,0 +1 @@ +Amélioration de la chaîne CI/CD, envoi d'un message à la création de version diff --git a/fastlane/metadata/android/fr-FR/changelogs/3.txt b/fastlane/metadata/android/fr-FR/changelogs/3.txt new file mode 100644 index 0000000..75d5298 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/3.txt @@ -0,0 +1 @@ +Ajout du jeu minimal, jouable. diff --git a/fastlane/metadata/android/fr-FR/changelogs/4.txt b/fastlane/metadata/android/fr-FR/changelogs/4.txt new file mode 100644 index 0000000..6f741b5 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/4.txt @@ -0,0 +1 @@ +Finalisation du jeu minimal. diff --git a/fastlane/metadata/android/fr-FR/changelogs/5.txt b/fastlane/metadata/android/fr-FR/changelogs/5.txt new file mode 100644 index 0000000..0b46e4f --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/5.txt @@ -0,0 +1 @@ +Enlève le marquage sur les cellules parcourues. diff --git a/fastlane/metadata/android/fr-FR/changelogs/6.txt b/fastlane/metadata/android/fr-FR/changelogs/6.txt new file mode 100644 index 0000000..0c8a46b --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/6.txt @@ -0,0 +1 @@ +Impossibilité de tomber sur une mine au premier coup (reporte la génération de la grille) diff --git a/fastlane/metadata/android/fr-FR/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt new file mode 100644 index 0000000..170a1a6 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/full_description.txt @@ -0,0 +1 @@ +Jeu du démineur simple diff --git a/fastlane/metadata/android/fr-FR/short_description.txt b/fastlane/metadata/android/fr-FR/short_description.txt new file mode 100644 index 0000000..170a1a6 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/short_description.txt @@ -0,0 +1 @@ +Jeu du démineur simple diff --git a/fastlane/metadata/android/fr-FR/title.txt b/fastlane/metadata/android/fr-FR/title.txt new file mode 100644 index 0000000..170a1a6 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/title.txt @@ -0,0 +1 @@ +Jeu du démineur simple diff --git a/icons/build_application_icons.sh b/icons/build_application_icons.sh new file mode 100755 index 0000000..9a5488a --- /dev/null +++ b/icons/build_application_icons.sh @@ -0,0 +1,70 @@ +#! /bin/bash + +# Check dependencies +command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; } +command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; } +command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; } + +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +BASE_DIR="$(dirname "${CURRENT_DIR}")" + +OPTIPNG_OPTIONS="-preserve -quiet -o7" + +# optimize svg +function optimize_svg() { + SOURCE="$1" + + cp ${SOURCE} ${SOURCE}.tmp + scour \ + --remove-descriptive-elements \ + --enable-id-stripping \ + --enable-viewboxing \ + --enable-comment-stripping \ + --nindent=4 \ + -i ${SOURCE}.tmp \ + -o ${SOURCE} + rm ${SOURCE}.tmp +} + +# build icons +function build_asset_image() { + ICON_SIZE=192 + SOURCE="$1" + TARGET="$2" + + optimize_svg "${SOURCE}" + + inkscape \ + --export-width=${ICON_SIZE} \ + --export-height=${ICON_SIZE} \ + --export-filename=${TARGET} \ + ${SOURCE} + + optipng ${OPTIPNG_OPTIONS} ${TARGET} +} + +function build_icons_for_skin() { + SKIN_CODE="$1" + + build_icon_for_skin ${SKIN_CODE} tile_black + build_icon_for_skin ${SKIN_CODE} tile_white +} + +function build_icon_for_skin() { + SKIN_CODE="$1" + IMAGE_CODE="$2" + + build_asset_image ${CURRENT_DIR}/skins/${SKIN_CODE}/${IMAGE_CODE}.svg ${BASE_DIR}/assets/skins/${SKIN_CODE}_${IMAGE_CODE}.png +} + +# Game icons +build_asset_image ${CURRENT_DIR}/button_back.svg ${BASE_DIR}/assets/icons/button_back.png +build_asset_image ${CURRENT_DIR}/button_start.svg ${BASE_DIR}/assets/icons/button_start.png +build_asset_image ${CURRENT_DIR}/difficulty_easy.svg ${BASE_DIR}/assets/icons/difficulty_easy.png +build_asset_image ${CURRENT_DIR}/difficulty_medium.svg ${BASE_DIR}/assets/icons/difficulty_medium.png +build_asset_image ${CURRENT_DIR}/difficulty_hard.svg ${BASE_DIR}/assets/icons/difficulty_hard.png +build_asset_image ${CURRENT_DIR}/game_win.svg ${BASE_DIR}/assets/icons/game_win.png +build_asset_image ${CURRENT_DIR}/empty.svg ${BASE_DIR}/assets/empty.png + +# Skins +build_icons_for_skin "default" diff --git a/icons/build_repository_icons.sh b/icons/build_repository_icons.sh new file mode 100755 index 0000000..569a16a --- /dev/null +++ b/icons/build_repository_icons.sh @@ -0,0 +1,48 @@ +#! /bin/bash + +# Check dependencies +command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; } +command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; } +command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; } + +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +BASE_DIR="$(dirname "${CURRENT_DIR}")" + +SOURCE="${CURRENT_DIR}/icon.svg" +OPTIPNG_OPTIONS="-preserve -quiet -o7" + +# optimize svg +cp ${SOURCE} ${SOURCE}.tmp +scour \ + --remove-descriptive-elements \ + --enable-id-stripping \ + --enable-viewboxing \ + --enable-comment-stripping \ + --nindent=4 \ + -i ${SOURCE}.tmp \ + -o ${SOURCE} +rm ${SOURCE}.tmp + +# build icons +function build_icon() { + ICON_SIZE="$1" + TARGET="$2" + + TARGET_PNG="${TARGET}.png" + + inkscape \ + --export-width=${ICON_SIZE} \ + --export-height=${ICON_SIZE} \ + --export-filename=${TARGET_PNG} \ + ${SOURCE} + + optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG} +} + + +build_icon 72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/ic_launcher +build_icon 48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/ic_launcher +build_icon 96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/ic_launcher +build_icon 144 ${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher +build_icon 192 ${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher +build_icon 512 ${BASE_DIR}/fastlane/metadata/android/en-US/images/icon diff --git a/icons/button_back.svg b/icons/button_back.svg new file mode 100644 index 0000000..2622a57 --- /dev/null +++ b/icons/button_back.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x=".44662" y=".89101" width="92.772" height="91.894" ry="11.689" fill="#e41578" stroke="#fff" stroke-width=".238"/><path d="m59.387 71.362c1.1248 1.1302 4.0012 1.1302 4.0012 0v-45.921c0-1.1316-2.8832-1.1316-4.0121 0l-37.693 20.918c-1.1289 1.1248-1.1479 2.9551-0.02171 4.084z" fill="#fefeff" stroke="#930e4e" stroke-linecap="round" stroke-linejoin="round" stroke-width="8.257"/><path d="m57.857 68.048c0.96243 0.96706 3.4236 0.96706 3.4236 0v-39.292c0-0.96825-2.467-0.96825-3.4329 0l-32.252 17.898c-0.96594 0.96243-0.9822 2.5285-0.01858 3.4945z" fill="#fefeff" stroke="#feffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4.314"/></svg> diff --git a/icons/button_start.svg b/icons/button_start.svg new file mode 100644 index 0000000..e9d49d2 --- /dev/null +++ b/icons/button_start.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x=".44662" y=".89101" width="92.772" height="91.894" ry="11.689" fill="#49a1ee" stroke="#fff" stroke-width=".238"/><path d="m34.852 25.44c-1.1248-1.1302-4.0012-1.1302-4.0012 0v45.921c0 1.1316 2.8832 1.1316 4.0121 0l37.693-20.918c1.1289-1.1248 1.1479-2.9551 0.02171-4.084z" fill="#fefeff" stroke="#105ca1" stroke-linecap="round" stroke-linejoin="round" stroke-width="8.257"/><path d="m36.382 28.754c-0.96243-0.96706-3.4236-0.96706-3.4236 0v39.292c0 0.96825 2.467 0.96825 3.4329 0l32.252-17.898c0.96594-0.96243 0.9822-2.5285 0.01858-3.4945z" fill="#fefeff" stroke="#feffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4.314"/></svg> diff --git a/icons/difficulty_easy.svg b/icons/difficulty_easy.svg new file mode 100644 index 0000000..da0e21f --- /dev/null +++ b/icons/difficulty_easy.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#41ff6a" stroke="#000" stroke-width="2"/><path d="m23.408 53.415 20.8 13.7c0.2 0.1 0.3 0.2 0.5 0.3 1.3 0.5 2.8-0.1 3.3-1.3 0.5-1.3-0.1-2.8-1.3-3.3l-23.2-9.6c-0.2 0-0.3 0.2-0.1 0.2zm23.7 11.6c0.1 0.8-0.5 1.4-1.3 1.5s-1.4-0.5-1.5-1.3 0.5-1.4 1.3-1.5c0.8 0 1.5 0.5 1.5 1.3z"/><path d="m41.708 36.515c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m52.508 37.815c2.1 0.5 4.2 1.3 6.2 2.2 0.5 0.3 1.2 0 1.4-0.6l2.7-8.2c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.1-1.5-9.3-1.6-0.6 0-1 0.4-1 1v7.5c-0.1 0.5 0.2 0.9 0.6 1z"/><path d="m81.508 46.115-8.4 6.1c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.6 3.2 2.2 4.9 0.2 0.5 0.7 0.8 1.2 0.6l9.8-3.2c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.3-5.7-3.8-8.2-0.2-0.4-0.9-0.6-1.3-0.2z"/><path d="m32.908 40.015c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.2 0.4 0.8 0.5 1.2 0.3z"/><path d="m63.408 31.615-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.2-1.1 0.1-1.3 0.7z"/><path d="m67.908 46.815c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.9 8.1c-0.2 0.3-0.2 0.8 0.2 1.2z"/><path d="m24.408 46.315c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.8-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.5 0.3 1 0.3 1.4-0.1z"/><path d="m13.808 54.815 6 2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.2-4.3 3.9-6.4 0.4-0.4 0.3-1.1-0.2-1.4l-5.9-4.2c-0.5-0.3-1.1-0.2-1.4 0.3-1.6 2.5-3.2 6.1-4.1 9-0.3 0.6 0 1.2 0.5 1.3z"/><path d="m75.808 60.915c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.6 0.2-0.9 0.7-0.7 1.2z"/><path d="m15.808 67.115c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.4-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg> diff --git a/icons/difficulty_hard.svg b/icons/difficulty_hard.svg new file mode 100644 index 0000000..254346a --- /dev/null +++ b/icons/difficulty_hard.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#d31158" stroke="#000" stroke-width="2"/><path d="m69.154 59.254-24.4 5.1c-0.2 0-0.4 0.1-0.5 0.1-1.3 0.6-1.9 2-1.4 3.3 0.6 1.3 2 1.9 3.3 1.4l23-9.7c0.2 0 0.1-0.2 0-0.2zm-25 8.7c-0.6-0.5-0.6-1.4-0.1-2s1.4-0.6 2-0.1 0.6 1.4 0.1 2c-0.5 0.5-1.4 0.6-2 0.1z"/><path d="m41.054 38.354c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m51.854 39.754c2.1 0.5 4.2 1.3 6.2 2.2 0.5 0.3 1.2 0 1.4-0.6l2.7-8.2c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.1-1.5-9.3-1.6-0.6 0-1 0.4-1 1v7.5c-0.2 0.5 0.1 0.9 0.6 1z"/><path d="m82.754 46.554-12.2 8.9c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.2 2.6 1.8 4.3 0.2 0.5 0.7 0.8 1.2 0.6l14.4-4.7c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.6-6.4-4.1-8.9-0.3-0.5-1-0.6-1.4-0.2z"/><path d="m32.154 41.854c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.3 0.4 0.8 0.5 1.2 0.3z"/><path d="m62.754 33.454-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.1-1.1 0.2-1.3 0.7z"/><path d="m67.154 48.654c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.9 8.1c-0.2 0.3-0.1 0.9 0.2 1.2z"/><path d="m23.654 48.154c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.7-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.4 0.4 1 0.3 1.3-0.1z"/><path d="m15.954 57.654 0.5 0.2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.5-5 4.2-7.1 0.4-0.4 0.3-1.1-0.2-1.4l-1.2-0.8c-0.3-0.4-1-0.2-1.3 0.3-1.6 2.5-2.9 5.3-3.8 8.2-0.2 0.5 0.1 1.1 0.6 1.2z"/><path d="m75.054 62.754c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.5 0.2-0.8 0.7-0.7 1.2z"/><path d="m15.054 68.954c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.3-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg> diff --git a/icons/difficulty_medium.svg b/icons/difficulty_medium.svg new file mode 100644 index 0000000..a6a8c55 --- /dev/null +++ b/icons/difficulty_medium.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#eeb517" stroke="#000" stroke-width="2"/><path d="m53.928 43.009-11 21.7c-0.1 0.2-0.1 0.3-0.2 0.5-0.4 1.4 0.4 2.7 1.7 3.2 1.4 0.4 2.7-0.4 3.2-1.7l6.6-23.7c0-0.1-0.2-0.2-0.3 0zm-8.5 24.3c-0.8 0.1-1.5-0.4-1.6-1.1-0.1-0.8 0.4-1.5 1.1-1.6 0.8-0.1 1.5 0.4 1.6 1.1 0.1 0.8-0.4 1.5-1.1 1.6z"/><path d="m41.128 37.409c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m51.928 41.209c2.1 0.5 3.5 1 5.5 2 0.5 0.3 1.2 0 1.4-0.6l4.2-12.8c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.9-1.5-10.1-1.7-0.6 0-1 0.4-1 1v12.4c-0.1 0.5 0.2 0.9 0.6 1z"/><path d="m80.928 47.009-8.4 6.1c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.6 3.2 2.2 4.9 0.2 0.5 0.7 0.8 1.2 0.6l9.8-3.2c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.3-5.7-3.8-8.2-0.2-0.4-0.9-0.5-1.3-0.2z"/><path d="m32.328 40.909c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.2 0.4 0.8 0.5 1.2 0.3z"/><path d="m62.828 32.509-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.1-1.1 0.2-1.3 0.7z"/><path d="m67.328 47.709c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.8 8.1c-0.3 0.3-0.3 0.9 0.1 1.2z"/><path d="m23.828 47.209c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.8-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.5 0.4 1 0.3 1.4-0.1z"/><path d="m16.128 56.709 0.5 0.2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.5-5 4.2-7.1 0.4-0.4 0.3-1.1-0.2-1.4l-1.2-0.8c-0.5-0.3-1.1-0.2-1.4 0.3-1.6 2.5-2.9 5.3-3.8 8.2-0.1 0.5 0.2 1.1 0.7 1.2z"/><path d="m75.228 61.809c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.6 0.2-0.8 0.7-0.7 1.2z"/><path d="m15.228 68.009c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.3-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg> diff --git a/icons/empty.svg b/icons/empty.svg new file mode 100644 index 0000000..6b7cca7 --- /dev/null +++ b/icons/empty.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="none"/></svg> diff --git a/icons/game_win.svg b/icons/game_win.svg new file mode 100644 index 0000000..fe20923 --- /dev/null +++ b/icons/game_win.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.17604 0 0 .17604 7.9341 1.7716)"><path d="m101.92 496.35c-1.8555 0-3.7109-0.69532-5.1484-2.0898-2.9297-2.8438-3-7.5234-0.15234-10.453l9.1875-9.4648c2.8438-2.9297 7.5234-3 10.453-0.15625s3 7.5234 0.15625 10.453l-9.1914 9.4648c-1.4492 1.4961-3.375 2.2461-5.3047 2.2461z" fill="#ff4e61"/><path d="m201.65 133.26c-1.8516 0-3.7109-0.69531-5.1445-2.0898-2.9297-2.8438-3-7.5234-0.15625-10.449l9.1914-9.4688c2.8438-2.9297 7.5195-3 10.449-0.15625s3 7.5234 0.15625 10.453l-9.1914 9.4688c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#ff4e61"/><path d="m413.8 100.39c-1.8555 0-3.7109-0.69141-5.1484-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l9.1914-9.4688c2.8438-2.9258 7.5234-2.9961 10.453-0.15234 2.9297 2.8398 3 7.5234 0.15625 10.449l-9.1914 9.4688c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#5c73bc"/><path d="m413.8 463.77c-1.8555 0-3.7109-0.69532-5.1484-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l9.1914-9.4688c2.8438-2.9258 7.5234-3 10.453-0.15625s3 7.5234 0.15625 10.453l-9.1914 9.4688c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#fa0"/><path d="m63.07 112.91c-1.8516 0-3.7109-0.69141-5.1445-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l9.1914-9.4687c2.8438-2.9258 7.5234-2.9961 10.453-0.15234 2.9258 2.8438 2.9961 7.5234 0.15234 10.449l-9.1914 9.4688c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#fa0"/><path d="m12.309 278.82c-1.8516 0-3.7109-0.69141-5.1445-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l9.1875-9.4688c2.8438-2.9297 7.5234-3 10.453-0.15625 2.9297 2.8438 3 7.5234 0.15625 10.453l-9.1914 9.4688c-1.4453 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#2dc471"/><path d="m216.29 278.49-23.996 12.996c-6.2226 3.3711-13.496-2.0742-12.309-9.2148l4.582-27.523c0.47266-2.8359-0.4375-5.7266-2.4375-7.7344l-19.414-19.496c-5.0352-5.0547-2.2578-13.863 4.7031-14.906l26.824-4.0156c2.7656-0.41407 5.1524-2.1992 6.3867-4.7812l12-25.043c3.1133-6.4922 12.102-6.4922 15.215 0l11.996 25.043c1.2383 2.582 3.625 4.3672 6.3867 4.7812l26.828 4.0156c6.957 1.043 9.7344 9.8516 4.6992 14.906l-19.41 19.496c-2 2.0078-2.9141 4.8984-2.4414 7.7344l4.582 27.523c1.1914 7.1406-6.082 12.586-12.305 9.2148l-23.996-12.996c-2.4727-1.3398-5.4258-1.3398-7.8945 0z" fill="#ffd02f"/><path d="m220.24 512c-4.082 0-7.3906-3.3086-7.3906-7.3906v-115.59c0-4.082 3.3086-7.3945 7.3906-7.3945s7.3906 3.3125 7.3906 7.3945v115.59c0 4.082-3.3086 7.3906-7.3906 7.3906z" fill="#5c73bc"/><path d="m220.3 357.42h-0.11328c-4.082 0-7.3945-3.3125-7.3945-7.3945s3.3086-7.3906 7.3945-7.3906h0.11328c4.082 0 7.3906 3.3086 7.3906 7.3906s-3.3086 7.3945-7.3906 7.3945z" fill="#5c73bc"/><path d="m220.3 332h-0.14838c-4.082-0.0156-7.375-3.3398-7.3594-7.4219 0.0195-4.0742 3.3242-7.3594 7.3906-7.3594h0.14848c4.082 0.0156 7.375 3.3398 7.3594 7.4219-0.0156 4.0703-3.3242 7.3594-7.3906 7.3594z" fill="#fa0"/><path d="m87.234 230.89c-1.9297 0-3.8555-0.75-5.3047-2.2422l-79.34-81.738c-2.8438-2.9297-2.7773-7.6094 0.15234-10.449 2.9297-2.8438 7.6094-2.7734 10.453 0.15235l79.344 81.738c2.8438 2.9258 2.7734 7.6094-0.15625 10.449-1.4375 1.3945-3.293 2.0898-5.1484 2.0898z" fill="#ff4e61"/><path d="m113.95 258.5c-1.8633 0-3.7266-0.69922-5.1641-2.1055-2.9219-2.8516-2.9766-7.5312-0.125-10.453l0.082-0.082c2.8516-2.918 7.5312-2.9766 10.453-0.12109 2.9219 2.8516 2.9766 7.5312 0.12109 10.453l-0.0781 0.082c-1.4492 1.4805-3.3672 2.2266-5.2891 2.2266z" fill="#fa0"/><path d="m131.4 276.48c-1.8555 0-3.7109-0.69531-5.1484-2.0898-2.9258-2.8438-2.9961-7.5234-0.15235-10.449l0.0781-0.0859c2.8476-2.9297 7.5273-2.9961 10.453-0.15235 2.9297 2.8438 3 7.5234 0.15625 10.453l-0.082 0.082c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#5c73bc"/><path d="m353.24 227.99c-1.8555 0-3.7109-0.69141-5.1445-2.0859-2.9297-2.8438-3-7.5234-0.15625-10.453l79.34-81.734c2.8438-2.9297 7.5234-3 10.453-0.15625 2.9297 2.8438 3 7.5234 0.15625 10.453l-79.344 81.734c-1.4492 1.4922-3.375 2.2422-5.3047 2.2422z" fill="#fa0"/><path d="m326.52 255.6c-1.9141 0-3.8242-0.73828-5.2695-2.2109l-0.082-0.082c-2.8633-2.9141-2.8203-7.5938 0.0899-10.453 2.9141-2.8633 7.5938-2.8203 10.453 0.0898l0.082 0.082c2.8594 2.9141 2.8203 7.5938-0.0937 10.453-1.4375 1.4141-3.3086 2.1211-5.1797 2.1211z" fill="#ff4e61"/><path d="m309.07 273.58c-1.9297 0-3.8555-0.75-5.3047-2.2422l-0.082-0.082c-2.8398-2.9297-2.7734-7.6094 0.15625-10.453s7.6094-2.7734 10.453 0.15234l0.082 0.082c2.8398 2.9297 2.7734 7.6094-0.15625 10.453-1.4375 1.3945-3.293 2.0898-5.1484 2.0898z" fill="#fa0"/><path d="m300.65 116.69c-1.2422 0-2.5-0.3125-3.6523-0.97266-3.5469-2.0234-4.7812-6.5391-2.7578-10.082l56.863-99.652c2.0234-3.543 6.5352-4.7773 10.082-2.7539 3.5469 2.0234 4.7812 6.5391 2.7578 10.082l-56.863 99.652c-1.3633 2.3867-3.8594 3.7266-6.4297 3.7266z" fill="#62d38f"/><path d="m281.52 150.33c-1.293 0-2.5977-0.33593-3.7891-1.0469l-0.0976-0.0586c-3.5-2.0938-4.6445-6.6328-2.5469-10.137 2.0938-3.5078 6.6328-4.6445 10.137-2.5508l0.0977 0.0586c3.5039 2.0938 4.6445 6.6328 2.5508 10.137-1.3867 2.3164-3.8359 3.5976-6.3516 3.5976z" fill="#fa0"/><path d="m269.02 172.25c-1.3008 0-2.6172-0.34375-3.8086-1.0625l-0.0977-0.0586c-3.4961-2.1094-4.6211-6.6523-2.5156-10.148 2.1094-3.4961 6.6523-4.6172 10.148-2.5117l0.0976 0.0586c3.4961 2.1094 4.6211 6.6523 2.5117 10.148-1.3867 2.3008-3.832 3.5742-6.3359 3.5742z" fill="#2dc471"/><path d="m139.96 116.69c-2.5703 0-5.0664-1.3398-6.4297-3.7305l-56.863-99.648c-2.0234-3.5469-0.78906-8.0586 2.7539-10.082 3.5469-2.0234 8.0625-0.79297 10.086 2.7539l56.863 99.648c2.0234 3.5469 0.78906 8.0625-2.7539 10.086-1.1562 0.66016-2.4141 0.97266-3.6562 0.97266z" fill="#5c73bc"/><path d="m159.09 150.33c-2.5078 0-4.957-1.2773-6.3438-3.582-2.1016-3.5-0.96875-8.043 2.5273-10.145l0.10157-0.0586c3.5-2.1016 8.0391-0.97266 10.141 2.5273 2.1055 3.5 0.97266 8.0391-2.5273 10.145l-0.0977 0.0586c-1.1914 0.71484-2.5039 1.0547-3.8008 1.0547z" fill="#ff4e61"/><path d="m171.6 172.25c-2.5 0-4.9375-1.2656-6.3281-3.5625-2.1172-3.4922-1-8.0352 2.4883-10.152l0.0977-0.0586c3.4961-2.1133 8.0391-1 10.156 2.4922 2.1133 3.4922 1 8.0352-2.4922 10.152l-0.0977 0.0586c-1.1992 0.72656-2.5195 1.0703-3.8242 1.0703z" fill="#fa0"/><path d="m402.14 357.28-15.523 11.602c-4.0234 3.0117-9.6523-0.043-9.5234-5.1641l0.5039-19.75c0.0508-2.0352-0.87109-3.9648-2.4688-5.1641l-15.508-11.621c-4.0234-3.0156-2.9453-9.4726 1.8242-10.93l18.391-5.6094c1.8906-0.57812 3.3906-2.082 4-4.0156l5.9375-18.785c1.5391-4.875 7.8359-5.8125 10.652-1.5898l10.863 16.285c1.1211 1.6758 2.9688 2.6797 4.9414 2.6797l19.18 0.0117c4.9766 4e-3 7.7891 5.8828 4.7578 9.9492l-11.676 15.672c-1.2031 1.6172-1.5586 3.7383-0.94922 5.6719l5.918 18.797c1.5312 4.875-3.0273 9.4453-7.7148 7.7344l-18.078-6.5977c-1.8594-0.67969-3.9258-0.37109-5.5273 0.82422z" fill="#ffd02f"/><path d="m261.51 512c-4.082 0-7.3906-3.3086-7.3906-7.3906 0-57.23 22.832-95.922 41.984-118.3 20.828-24.332 41.613-35.023 42.488-35.469 3.6406-1.8477 8.0898-0.39063 9.9336 3.2539 1.8438 3.6367 0.39453 8.0781-3.2422 9.9297-0.3125 0.16016-19.5 10.164-38.367 32.395-25.227 29.719-38.016 66.121-38.016 108.2 0 4.082-3.3086 7.3906-7.3906 7.3906z" fill="#ff4e61"/><path d="m102.86 397.35 11.766 15.605c3.0547 4.0469 9.2852 2.7305 10.547-2.2266l4.8633-19.113c0.5-1.9648 1.9102-3.5547 3.7695-4.2461l18.039-6.707c4.6797-1.7383 5.3906-8.25 1.207-11.016l-16.141-10.672c-1.6602-1.1016-2.6914-2.9726-2.7578-5.0039l-0.61719-19.75c-0.15625-5.1211-5.9492-7.832-9.7969-4.5859l-14.84 12.516c-1.5312 1.2891-3.5781 1.7227-5.4726 1.1562l-18.422-5.5c-4.7773-1.4258-9.0703 3.4102-7.2617 8.1836l6.9688 18.41c0.71875 1.8945 0.48438 4.0352-0.625 5.7188l-10.77 16.348c-2.793 4.2422 0.34375 9.9375 5.3125 9.6445l19.145-1.1406c1.9727-0.11719 3.875 0.77343 5.0859 2.3789z" fill="#ffd02f"/><path d="m179.02 512c-4.082 0-7.3906-3.3086-7.3906-7.3906 0-30.059-6.6797-57.559-19.852-81.734-1.9531-3.5859-0.62891-8.0742 2.957-10.027 3.5859-1.9531 8.0742-0.62891 10.027 2.9531 14.363 26.375 21.648 56.254 21.648 88.809 0 4.082-3.3086 7.3906-7.3906 7.3906z" fill="#fa0"/><path d="m268.93 55.898c0-11.285-8.8828-20.434-19.836-20.434-10.957 0-19.836 9.1484-19.836 20.434 0 11.285 8.8789 20.438 19.836 20.438 10.953 0 19.836-9.1523 19.836-20.438z" fill="#ffd02f"/><path d="m373.08 446.81c0-11.285-8.8789-20.434-19.832-20.434-10.957 0-19.836 9.1484-19.836 20.434s8.8789 20.434 19.836 20.434c10.953 0 19.832-9.1484 19.832-20.434z" fill="#5c73bc"/><path d="m44.129 450.86c0-9.0508-7.1211-16.387-15.91-16.387-8.7852 0-15.906 7.3359-15.906 16.387 0 9.0547 7.1211 16.391 15.906 16.391 8.7891 0 15.91-7.3359 15.91-16.391z" fill="#62d38f"/><path d="m88.172 288.35c0-9.0508-7.1211-16.387-15.91-16.387-8.7852 0-15.906 7.3359-15.906 16.387s7.1211 16.391 15.906 16.391c8.7891 0 15.91-7.3398 15.91-16.391z" fill="#5c73bc"/><g fill="#ff4e61"><path d="m210.84 16.391c0-9.0547-7.1211-16.391-15.906-16.391-8.7891 0-15.91 7.3359-15.91 16.391 0 9.0508 7.1211 16.387 15.91 16.387 8.7852 0 15.906-7.3359 15.906-16.387z"/><path d="m365.23 152.88c0-9.0508-7.125-16.391-15.91-16.391-8.7852 0-15.91 7.3398-15.91 16.391s7.125 16.387 15.91 16.387c8.7852 0 15.91-7.3359 15.91-16.387z"/><path d="m139.96 32.746c-1.8555 0-3.7109-0.69141-5.1484-2.0898-2.9297-2.8438-3-7.5195-0.15625-10.449l9.1914-9.4688c2.8438-2.9297 7.5234-3 10.449-0.15625 2.9297 2.8438 3 7.5234 0.15625 10.453l-9.1875 9.4688c-1.4492 1.4922-3.3789 2.2422-5.3047 2.2422z"/></g></g></svg> diff --git a/icons/icon.svg b/icons/icon.svg new file mode 100644 index 0000000..13f6a12 --- /dev/null +++ b/icons/icon.svg @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg version="1.1" viewBox="0 0 28.747 28.747" xmlns="http://www.w3.org/2000/svg"> + <defs> + <filter id="filter6206-7" x="-.072" y="-.072" width="1.144" height="1.144" color-interpolation-filters="sRGB"> + <feGaussianBlur stdDeviation="0.658125"/> + </filter> + </defs> + <g transform="translate(0 -1093.8)"> + <path transform="matrix(1.0781 0 0 1.0641 -.093733 2.7509)" d="m4.4177 1028.2v1.6051h-1.6052v18.192h1.6052v2.1402h18.192v-2.1402h2.1402v-18.192h-2.1402v-1.6051z" fill="#3e2723" filter="url(#filter6206-7)" opacity=".2"/> + <rect x="2.9987" y="1096.8" width="22.749" height="22.749" rx="1.1973" ry="1.1974" fill="#f44336"/> + <g transform="translate(-22.32 1056.5)"> + <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/> + <g transform="matrix(.33601 0 0 .33601 1.5296 73.043)"> + <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/> + </g> + <g transform="matrix(.37187 0 0 .37187 38.802 63.239)"> + <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/> + <g transform="matrix(2.6891 0 0 2.6891 -82.906 -48.45)"> + <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/> + </g> + </g> + </g> + <path d="m4.1958 1096.8c-0.66332 0-1.1979 0.5346-1.1979 1.1979v0.3334c0-0.6634 0.53459-1.1979 1.1979-1.1979h20.354c0.66332 0 1.1979 0.5345 1.1979 1.1979v-0.3334c0-0.6633-0.5346-1.1979-1.1979-1.1979z" fill="#fff" opacity=".2"/> + <rect x="128" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="128" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="128" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="128" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="128" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="213.33" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="213.33" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="213.33" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="213.33" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="213.33" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="298.67" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="298.67" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="298.67" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="298.67" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="298.67" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="170.67" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="170.67" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="170.67" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="170.67" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="170.67" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="256" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="256" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="256" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="256" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="256" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="128" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="213.33" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="298.67" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="170.67" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="256" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="341.33" y="589.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="341.33" y="631.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="341.33" y="717.19" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="341.33" y="546.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="341.33" y="674.52" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="341.33" y="759.85" width="42.667" height="42.667" fill="none" stroke-width="1.0667"/> + <rect x="160" y="578.52" width="192" height="192" fill="none" stroke-width="1.0667"/> + <g transform="matrix(.37344 0 0 .37344 4.7333 1097.4)"> + <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/> + </g> + <g transform="matrix(.36471 0 0 .36471 5.1356 1097.4)"> + <path d="m0 0h51.2v51.2h-51.2z" fill="none" stroke-width="1.0667"/> + </g> + <g transform="matrix(.41585 0 0 .41585 84.325 1055.9)"> + <g transform="matrix(.062269 0 0 .062269 -28.238 185.29)"> + <g transform="matrix(38.618 0 0 38.618 14724 -13542)"> + <g transform="matrix(.71436 0 0 .71436 -400.52 188.34)"> + <path d="m1293.2-120.67c-181.75 0.2763-511.18 0.13525-699.05 0.13998-2.3216 10.413-3.593 21.251-3.593 32.384v114c207.65 0.73695 494.72 0.38136 706.23 0.3733v-114.37c0-11.18-1.2522-22.07-3.593-32.523zm-458.69 295.56c-78.385-4e-3 -158.85 0.17892-243.95 0.55995v138.63c286.34-0.39317 421.73-0.13827 706.23-0.32664v-137.75c-163.2-0.53005-311.22-1.1113-462.28-1.1199z" opacity="0" stroke-width="1.4932"/> + </g> + </g> + </g> + </g> + <path d="m24.549 1119.5c0.66325 0 1.1979-0.5346 1.1979-1.1979v-0.3333c0 0.6632-0.53461 1.1978-1.1979 1.1978h-20.354c-0.66325 0-1.1979-0.5346-1.1979-1.1978v0.3333c0 0.6633 0.53461 1.1979 1.1979 1.1979z" fill="#3e2723" opacity=".2"/> + </g> + <g transform="matrix(1.0743 0 0 1.0743 .49523 .53818)" stroke="#fffdfd" stroke-linecap="round" stroke-linejoin="round"> + <circle cx="9.4895" cy="9.4497" r="2.694" fill="none"/> + <circle cx="16.348" cy="16.307" r="2.694" fill="none"/> + <circle cx="16.348" cy="9.4497" r="2.694" fill="#fff"/> + <circle cx="9.4895" cy="16.307" r="2.694" fill="#fff"/> + </g> +</svg> diff --git a/icons/skins/default/tile_black.svg b/icons/skins/default/tile_black.svg new file mode 100644 index 0000000..76875fd --- /dev/null +++ b/icons/skins/default/tile_black.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="none"/><circle cx="50" cy="50" r="42.259" stroke="#919191" stroke-linecap="round" stroke-linejoin="round" stroke-width="6.37"/></svg> diff --git a/icons/skins/default/tile_white.svg b/icons/skins/default/tile_white.svg new file mode 100644 index 0000000..a41d136 --- /dev/null +++ b/icons/skins/default/tile_white.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="none"/><circle cx="50" cy="50" r="42.259" fill="#fff" stroke="#919191" stroke-linecap="round" stroke-linejoin="round" stroke-width="6.37"/></svg> diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..151026b --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,33 @@ +*.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/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..9367d48 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleExecutable</key> + <string>App</string> + <key>CFBundleIdentifier</key> + <string>io.flutter.flutter.app</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>App</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>MinimumOSVersion</key> + <string>8.0</string> +</dict> +</plist> diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..b75d60c --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; + 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; + 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 */; }; +/* End PBXBuildFile 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 */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; + 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; + 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = "<group>"; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, + ); + sourceTree = "<group>"; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, + 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 97C146F11CF9000F007C117D /* Supporting Files */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + ); + path = Runner; + sourceTree = "<group>"; + }; + 97C146F11CF9000F007C117D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 97C146F21CF9000F007C117D /* main.m */, + ); + name = "Supporting Files"; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + 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 = { + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + 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 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 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; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + 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 */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, + 97C146F31CF9000F007C117D /* main.m in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = "<group>"; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + 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 = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.benoitharrault.reversi; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + 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 = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + 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 = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.benoitharrault.reversi; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.benoitharrault.reversi; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "self:"> + </FileRef> +</Workspace> diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IDEDidComputeMac32BitWarning</key> + <true/> +</dict> +</plist> diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>PreviewsEnabled</key> + <false/> +</dict> +</plist> diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..a28140c --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1020" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "97C146ED1CF9000F007C117D" + BuildableName = "Runner.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <Testables> + </Testables> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "97C146ED1CF9000F007C117D" + BuildableName = "Runner.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </MacroExpansion> + <AdditionalOptions> + </AdditionalOptions> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "97C146ED1CF9000F007C117D" + BuildableName = "Runner.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + buildConfiguration = "Profile" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "97C146ED1CF9000F007C117D" + BuildableName = "Runner.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "group:Runner.xcodeproj"> + </FileRef> +</Workspace> diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IDEDidComputeMac32BitWarning</key> + <true/> +</dict> +</plist> diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>PreviewsEnabled</key> + <false/> +</dict> +</plist> diff --git a/ios/Runner/AppDelegate.h b/ios/Runner/AppDelegate.h new file mode 100644 index 0000000..36e21bb --- /dev/null +++ b/ios/Runner/AppDelegate.h @@ -0,0 +1,6 @@ +#import <Flutter/Flutter.h> +#import <UIKit/UIKit.h> + +@interface AppDelegate : FlutterAppDelegate + +@end diff --git a/ios/Runner/AppDelegate.m b/ios/Runner/AppDelegate.m new file mode 100644 index 0000000..70e8393 --- /dev/null +++ b/ios/Runner/AppDelegate.m @@ -0,0 +1,13 @@ +#import "AppDelegate.h" +#import "GeneratedPluginRegistrant.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application + didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [GeneratedPluginRegistrant registerWithRegistry:self]; + // Override point for customization after application launch. + return [super application:application didFinishLaunchingWithOptions:launchOptions]; +} + +@end diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..28c6bf03016f6c994b70f38d1b7346e5831b531f GIT binary patch literal 564 zcmV-40?Yl0P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9 zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9<WQhydS~rpwVfTyjm}~vs+Nj zL2;<v%s@b+9jXc@S}#x@@VwF4twVwRxFCih^tWg?H)v?24ZSeYC3aaOsM8yWc7GEz z7zKYq3)^d7srCATzmw!h1d8POV>Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV<y2`lV{mrphLz zZs5NcIN~Wp-YgL)o*yksN!%A$BK4ovtf60)eD^OF((VmRH^fQ+0000<MNUMnLSTXr Cg!*^@ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccbfd967d9697cd4b83225558af2911e9571c9b GIT binary patch literal 1283 zcmV+e1^oJnP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T7000EaNkl<Zc$~$U zO>7ip7{`C_J2Tx<S}3NqpxB^%g)f1Fg2os<-~kDV#FGRs+&p_AidZnjqZ&0H2nR1* zj0q8l5fTo51w)j?(&7h*nm|&p(vR)ByR$QY4>Pmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?D<dJ!G*SVsfpkGU(q>uHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ z<Ez>X$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&<?Pa8X$2 z7!Cm2JRI`|2MxYb7DBni>Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=<hAE@CMcU{$tA%YXI_aT>O zx-7$a;U><*5L^!%<hgO?EU&+RjyvO7JjW1(jTP<<mHfpWO->xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#1<DGLlIe;R_chCpIPcPAH*zr@Cs z?fB^|EuMpG4X$HBVo_%sSAM_4?&DuFlF8#(Lxtca1NV%iv%qemMnJ<G_#|w%M>6c{ zJImlNL(np<oN+CTXIZs=Ip^Qn&FbY#Fn}>L!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cde12118dda48d71e01fcb589a74d069c5d7cb5 GIT binary patch literal 1025 zcmV+c1pfPpP)<h;3K|Lk000e1NJLTq0012T0012b1^@s6R+DEB000BXNkl<Zc$~GD zO=w(I6vuz}zV|Yjbed17ZK+8~s#O|MP&clmqDBgWZmLq<SX}r4y4TvKx^iJf5Gq-y zOGQEjOCyP3MX4X5l~PNgieUPsktUPGBs1^bzl-}OnIxT=SE~o^V(z=|{La^$dmfUE zBm*GnK}km>U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$<lg6i9 zl}<@|7r;n*02l>gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~c<Gji=2TnCP5=vx8A($>TNYR~@Y9Kep<iQi*1HiJn2AMS!E&HK zVnfa>MPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF<H6foEqi-Iie=wvW~+c5O@{fz z15Zzj&L+qQPza&y;JLn#y}co!t)163;kCwx>4|Rt=<qKwceYzzPl3~A@%(s+$wlbO zc~D^BY8jsH33#eIY*@)P+hFCz&o3t2+iBU*?19gIU*g-zge@(Wn_CP4Vk(AbwubEK z374wAp49EV)x|L}FJ3uW;>2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1<yk<F_A9G0?W)jg&H7#tqwGWPN2m*&Q-?N5mfsA}|J<Z(-)UuQ+*R zjGb?c@Yn1jfi)zqX5f~c$$GU_a(w7qiMP%R9Utb>kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX<i!R0Z{NtsYrELo(c*J#)_6Q;B#i<)$v7hkaB2AVeLT(w zU;Ip%kGwHqz-)1z`*v*RqZjUHU2}-Rka8<C(s3i{5#T7-ISo1qYYdC!WW~O<hQAkM zTAD(la4CD$)8M0iM>?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 zcmds$`#;kQ7{|XelZftyR5~xW7?MLxS4^|Hw3&P7^y)@A9Fj{Xm1~_CIV^XZ%SLBn zA;!r`GqGHg=7>xrB{?psZQs88ZaedDoagm^KF{a*>G|dJWRSe^I$DNW008I^+;Kjt z>9p3GNR^I;v>5_`+91i(*G;u5|L+Bu6M=(afLjtkya#yZ175|z$pU~>2#^Z_pCZ7o z1c6UNcv2B3?;<Go5WWQn|6+uH2_m2r5lB}%5TZuPR`V-CQi_n2Vq{<`GLVi8qN@j# zqI`={L3C8G3I^(@3RHBhE;&c<RtGw!0)4Fxo!p8}d#c|cHc-(hHf$6dbHN{)B&J-6 z8CPP?l~^=?vruV^WG`2|w?$&vBC(2KTgB8_sZ6T`6J3jmsl%uYPl@SJV)#nyIF2<> zX%qdxCXQp<sXX*V>dKRz=#b*q0P%b&o)5ZrNZt7$fiETSK_VaY=mb4GK`#~0K#~9^ zcY!`#Af+4h?UMR-gMKOmpuYeN5P*RKF!(tb`)oe0j2B<k6JOOEKm0v@7`o2xzafNf z3ZX<HM12iqsu+Xris0NgGTIwip-5ILf*5aQWp8EWDyC!=Q!?hXjP-1SH7#S$$T+=I zoW3be|GWDB>H1l?=>y#S5pMqkx6i{*=V9JF%>N8`ewGhRE(|WohnD59R^$_36{4>S zDFlPC5|k?;SPsDo87!B{6*7eqmMdU|QZ84>6)Kd9wNfh90=y=TFQay-0__>=<4pk& zYDjgIhL-jQ9o>z32K)BgAH+HxamL{ZL~ozu)Qqe@a`FpH=oQRA8=L-m-1dam(Ix2V z?du;LdMO+ooBelr^_y4<euq@26~q7NegFU@k$`jdb$`xyeJ4P8+-Tj3Ra{hbRCmT! zBMV($^{^e=(UH`dj`r@`Y(H|el`alrd8skZwkzYhRr(Gz(QZp(Qd(hE^@5E~qU`i; z(SkYe?}g2Y&YJj296Moad2)yG0fTMR6U}BWMARc(<#Fztb!h_|mPqTik`s(WVh&f0 z?pxZ)BEP>{|44tmgH^2hSzPFd;U^!1p>6d|o)<M!d`#7E^t}^Xk~3cs-?nsZx|T{j zmy5ZGo@mfoIbG>(-01z{i&Kj@)z-yfWQ)V#3Uo!_U}q3u`(fOs`_f^ueFii1xBNUB z6Me<Ad__=MhyIK(Twff~+;!n_S-82~DqfzFOPkl&Gp}(|cUQyE@haMbYi+pu2R#52 zQ(?79{^}u<pnJs07X?Jd1xEs{hF)^P@+6Hdd>cwJN$CqV&vhc+)b(p4NzGGEgwWNs z@*lUV6LaduZH)4_g!cE<2G6#+hJrWd5(|p1Z;YJ7ifVHv+n49btR}dq?HHDjl{m$T z!jLZcGkb&XS2OG~u%&R$(X+Z`CWec%QKt>NGYvd5g20)PU(dOn^7%@6kQb}C(%=vr z{?RP(z~C9DPnL{q^@pVw@|Vx~@3v!9dCaBtbh2EdtoNHm4kGxp>i#ct)7p|$QJs+U z-a3qtcPvhihub?wnJqEt>zC@)2suY?%-96cYCm$Q8R%-8$PZYsx3~QOLMDf(piXMm zB=<63yQk1AdOz#-qsEDX>>c)EES%$owHKue;?B3)8aRd}m~_)>SL3h2(9X;|+2#7X z+#2)NpD%qJvCQ0a-uzZLmz*ms+l*N}w)3LRQ*6>|Ub-fyptY(keUxw+)jfwF5K{L9 z|Cl_w=`!l_o><384d&?)$6Nh(GAm=4p_;{qVn#hI8lqewW7~wUlyBM-4Z|)cZr?Rh z=xZ&Ol>4(CU85ea(CZ^aO@2N18K>ftl8>2MqetAR53_JA>Fal`^)1Y--Am~UDa4th zKfCYpcXky$XSFDWBMIl(q=Mxj$iMBX=|<EP6d-<IdS!f=-N7pvgRfUm7gq{u46xo{ z(betbRXvB#X1rgdf*#8+ETp0)ap9@+(t?IGTzEX?@U7?cr16G3E(5=(NmSno5Zt_R J4_(fr{s-Hn_EP`= literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..dcdc2306c28505ebc0b6c3a359c4d252bf626b9f GIT binary patch literal 1920 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 GLSTY{`iRf~ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccbfd967d9697cd4b83225558af2911e9571c9b GIT binary patch literal 1283 zcmV+e1^oJnP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T7000EaNkl<Zc$~$U zO>7ip7{`C_J2Tx<S}3NqpxB^%g)f1Fg2os<-~kDV#FGRs+&p_AidZnjqZ&0H2nR1* zj0q8l5fTo51w)j?(&7h*nm|&p(vR)ByR$QY4>Pmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?D<dJ!G*SVsfpkGU(q>uHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ z<Ez>X$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&<?Pa8X$2 z7!Cm2JRI`|2MxYb7DBni>Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=<hAE@CMcU{$tA%YXI_aT>O zx-7$a;U><*5L^!%<hgO?EU&+RjyvO7JjW1(jTP<<mHfpWO->xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#1<DGLlIe;R_chCpIPcPAH*zr@Cs z?fB^|EuMpG4X$HBVo_%sSAM_4?&DuFlF8#(Lxtca1NV%iv%qemMnJ<G_#|w%M>6c{ zJImlNL(np<oN+CTXIZs=Ip^Qn&FbY#Fn}>L!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 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 XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 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 XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 aR{jt9+;fr}hV%pg0000<MNUMnLSTYU=Zg*i literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6a84f41e14e27f4b11f16f9ee39279ac98f8d5ac GIT binary patch literal 3294 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e1f58536026aebc4f1f70e481f6993c9ff088d GIT binary patch literal 3612 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/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/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/> + </dependencies> + <scenes> + <!--View Controller--> + <scene sceneID="EHf-IW-A2E"> + <objects> + <viewController id="01J-lp-oVM" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/> + <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"> + </imageView> + </subviews> + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/> + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/> + </constraints> + </view> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="53" y="375"/> + </scene> + </scenes> + <resources> + <image name="LaunchImage" width="168" height="185"/> + </resources> +</document> diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r"> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/> + </dependencies> + <scenes> + <!--Flutter View Controller--> + <scene sceneID="tne-QT-ifu"> + <objects> + <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/> + <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> + </view> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> + </objects> + </scene> + </scenes> +</document> diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..1e1e2d4 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>$(DEVELOPMENT_LANGUAGE)</string> + <key>CFBundleExecutable</key> + <string>$(EXECUTABLE_NAME)</string> + <key>CFBundleIdentifier</key> + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>reversi</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>$(FLUTTER_BUILD_NAME)</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>$(FLUTTER_BUILD_NUMBER)</string> + <key>LSRequiresIPhoneOS</key> + <true/> + <key>UILaunchStoryboardName</key> + <string>LaunchScreen</string> + <key>UIMainStoryboardFile</key> + <string>Main</string> + <key>UISupportedInterfaceOrientations</key> + <array> + <string>UIInterfaceOrientationPortrait</string> + <string>UIInterfaceOrientationLandscapeLeft</string> + <string>UIInterfaceOrientationLandscapeRight</string> + </array> + <key>UISupportedInterfaceOrientations~ipad</key> + <array> + <string>UIInterfaceOrientationPortrait</string> + <string>UIInterfaceOrientationPortraitUpsideDown</string> + <string>UIInterfaceOrientationLandscapeLeft</string> + <string>UIInterfaceOrientationLandscapeRight</string> + </array> + <key>UIViewControllerBasedStatusBarAppearance</key> + <false/> +</dict> +</plist> diff --git a/ios/Runner/main.m b/ios/Runner/main.m new file mode 100644 index 0000000..dff6597 --- /dev/null +++ b/ios/Runner/main.m @@ -0,0 +1,9 @@ +#import <Flutter/Flutter.h> +#import <UIKit/UIKit.h> +#import "AppDelegate.h" + +int main(int argc, char* argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..dd1afff --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:provider/provider.dart'; + +import 'provider/data.dart'; +import 'screens/home.dart'; + +void main() { + WidgetsFlutterBinding.ensureInitialized(); + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) + .then((value) => runApp(MyApp())); +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (BuildContext context) => Data(), + child: Consumer<Data>(builder: (context, data, child) { + return MaterialApp( + debugShowCheckedModeBanner: false, + theme: ThemeData( + primaryColor: Colors.blue, + visualDensity: VisualDensity.adaptivePlatformDensity, + ), + home: Home(), + routes: { + Home.id: (context) => Home(), + }, + ); + }), + ); + } +} diff --git a/lib/provider/data.dart b/lib/provider/data.dart new file mode 100644 index 0000000..ee24df3 --- /dev/null +++ b/lib/provider/data.dart @@ -0,0 +1,75 @@ +import 'package:flutter/foundation.dart'; + +class Data extends ChangeNotifier { + + // Configuration available values + List _availableDifficultyLevels = ['easy', 'medium', 'hard']; + + List get availableDifficultyLevels => _availableDifficultyLevels; + + // Application default configuration + String _level = 'medium'; + String _size = '8x8'; + String _skin = 'default'; + + // Game data + bool _gameRunning = false; + int _sizeVertical = null; + int _sizeHorizontal = null; + List _cells = []; + + String get level => _level; + void updateLevel(String level) { + _level = level; + notifyListeners(); + } + + String get size => _size; + int get sizeVertical => _sizeVertical; + int get sizeHorizontal => _sizeHorizontal; + void updateSize(String size) { + _size = size; + _sizeHorizontal = int.parse(_size.split('x')[0]); + _sizeVertical = int.parse(_size.split('x')[1]); + notifyListeners(); + } + + String get skin => _skin; + void updateSkin(String skin) { + _skin = skin; + notifyListeners(); + } + + getParameterValue(String parameterCode) { + switch(parameterCode) { + case 'difficulty': { return _level; } + break; + } + } + + List getParameterAvailableValues(String parameterCode) { + switch(parameterCode) { + case 'difficulty': { return _availableDifficultyLevels; } + break; + } + } + + setParameterValue(String parameterCode, String parameterValue) { + switch(parameterCode) { + case 'difficulty': { updateLevel(parameterValue); } + break; + } + } + + List get cells => _cells; + void updateCells(List cells) { + _cells = cells; + notifyListeners(); + } + + bool get gameRunning => _gameRunning; + void updateGameRunning(bool gameRunning) { + _gameRunning = gameRunning; + notifyListeners(); + } +} diff --git a/lib/screens/home.dart b/lib/screens/home.dart new file mode 100644 index 0000000..ba85d37 --- /dev/null +++ b/lib/screens/home.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import '../provider/data.dart'; + +class Home extends StatelessWidget { + static const String id = 'home'; + + @override + Widget build(BuildContext context) { + Data myProvider = Provider.of<Data>(context); + + return Scaffold( + appBar: AppBar( + title: new Text('Reversi'), + + actions: [ + ], + + leading: IconButton( + icon: Image.asset('assets/icons/application.png'), + onPressed: () { }, + ), + ), + body: SafeArea( + child: Center( + child: Text('🎮') + ), + ) + ); + } +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..b6eca0d --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,161 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.7.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.10" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.0" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.1" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" +sdks: + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.16.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..1bc5838 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,22 @@ +name: reversi +description: A reversi game application. +publish_to: 'none' +version: 1.0.0+1 + +environment: + sdk: ">=2.7.0 <3.0.0" + +dependencies: + flutter: + sdk: flutter + provider: ^5.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true + assets: + - assets/icons/ + - assets/skins/ diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..ac6d33b --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,14 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:reversi/main.dart'; + +void main() { +} -- GitLab