From a8e16206fe489a8f6f35b89c657894a98b457d66 Mon Sep 17 00:00:00 2001 From: Gabber235 Date: Sun, 11 Sep 2022 10:37:20 +0200 Subject: [PATCH] Initial commit --- .DS_Store | Bin 0 -> 6148 bytes .gitattributes | 2 + .idea/.gitignore | 10 + .idea/.name | 1 + .idea/TypeWriter.iml | 13 + .idea/aws.xml | 11 + .idea/compiler.xml | 6 + .idea/gradle.xml | 18 + .idea/jarRepositories.xml | 60 + .idea/kotlinc.xml | 6 + .idea/libraries/Dart_SDK.xml | 27 + .idea/misc.xml | 13 + .idea/modules/typewriter.main.iml | 13 + .idea/modules/typewriter.test.iml | 12 + .idea/saveactions_settings.xml | 14 + README.md | 3 + app/.gitignore | 44 + app/.metadata | 45 + app/README.md | 16 + app/analysis_options.yaml | 10 + app/android/.gitignore | 13 + app/android/app/build.gradle | 71 + app/android/app/src/debug/AndroidManifest.xml | 8 + app/android/app/src/main/AndroidManifest.xml | 35 + .../app/src/main/ic_launcher-playstore.png | Bin 0 -> 5598 bytes .../me/gabber235/typewriter/MainActivity.kt | 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 -> 2929 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2178 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3373 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3876 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4202 bytes .../app/src/main/res/values-night/styles.xml | 18 + .../app/src/main/res/values/styles.xml | 18 + .../app/src/profile/AndroidManifest.xml | 8 + app/android/build.gradle | 31 + app/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + app/android/settings.gradle | 11 + app/assets/Typewriter.png | Bin 0 -> 7799 bytes app/assets/game_character.riv | Bin 0 -> 280594 bytes app/ios/.gitignore | 34 + app/ios/Flutter/AppFrameworkInfo.plist | 26 + app/ios/Flutter/Debug.xcconfig | 2 + app/ios/Flutter/Release.xcconfig | 2 + app/ios/Podfile | 41 + app/ios/Runner.xcodeproj/project.pbxproj | 484 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + app/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 15017 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 848 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1876 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 2626 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1317 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 2458 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 3258 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1876 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 3103 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 3863 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 2313 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 3522 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 2491 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 3637 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 3863 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 4114 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 2929 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 3876 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 3011 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3904 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3849 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 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + app/ios/Runner/Base.lproj/Main.storyboard | 26 + app/ios/Runner/Info.plist | 51 + app/ios/Runner/Runner-Bridging-Header.h | 1 + app/lib/main.dart | 63 + app/lib/models/page.dart | 401 +++ app/lib/models/page.freezed.dart | 2701 +++++++++++++++++ app/lib/models/page.g.dart | 245 ++ app/lib/pages/graph.dart | 731 +++++ app/lib/pages/inspection_menu.dart | 1257 ++++++++ app/lib/pages/open_page.dart | 79 + app/lib/widgets/dropdown.dart | 60 + app/linux/.gitignore | 1 + app/linux/CMakeLists.txt | 138 + app/linux/flutter/CMakeLists.txt | 88 + .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + app/linux/flutter/generated_plugins.cmake | 23 + app/linux/main.cc | 6 + app/linux/my_application.cc | 104 + app/linux/my_application.h | 18 + app/macos/.gitignore | 7 + app/macos/Flutter/Flutter-Debug.xcconfig | 2 + app/macos/Flutter/Flutter-Release.xcconfig | 2 + .../Flutter/GeneratedPluginRegistrant.swift | 12 + app/macos/Podfile | 40 + app/macos/Podfile.lock | 22 + app/macos/Runner.xcodeproj/project.pbxproj | 634 ++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + app/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 15017 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 3885 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 632 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 4887 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1428 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 5598 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2753 bytes app/macos/Runner/Base.lproj/MainMenu.xib | 343 +++ app/macos/Runner/Configs/AppInfo.xcconfig | 14 + app/macos/Runner/Configs/Debug.xcconfig | 2 + app/macos/Runner/Configs/Release.xcconfig | 2 + app/macos/Runner/Configs/Warnings.xcconfig | 13 + app/macos/Runner/DebugProfile.entitlements | 14 + app/macos/Runner/Info.plist | 32 + app/macos/Runner/MainFlutterWindow.swift | 15 + app/macos/Runner/Release.entitlements | 12 + app/pubspec.lock | 712 +++++ app/pubspec.yaml | 51 + app/snap/gui/app_icon.desktop | 8 + app/snap/gui/app_icon.png | Bin 0 -> 4887 bytes app/web/favicon.png | Bin 0 -> 632 bytes app/web/icons/Icon-192.png | Bin 0 -> 4202 bytes app/web/icons/Icon-512.png | Bin 0 -> 5598 bytes app/web/icons/Icon-maskable-192.png | Bin 0 -> 4202 bytes app/web/icons/Icon-maskable-512.png | Bin 0 -> 5598 bytes app/web/index.html | 58 + app/web/manifest.json | 35 + app/windows/.gitignore | 17 + app/windows/CMakeLists.txt | 101 + app/windows/flutter/CMakeLists.txt | 104 + .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + app/windows/flutter/generated_plugins.cmake | 23 + app/windows/runner/CMakeLists.txt | 39 + app/windows/runner/Runner.rc | 121 + app/windows/runner/flutter_window.cpp | 61 + app/windows/runner/flutter_window.h | 33 + app/windows/runner/main.cpp | 43 + app/windows/runner/resource.h | 16 + app/windows/runner/resources/app_icon.ico | Bin 0 -> 20349 bytes app/windows/runner/runner.exe.manifest | 20 + app/windows/runner/utils.cpp | 64 + app/windows/runner/utils.h | 19 + app/windows/runner/win32_window.cpp | 245 ++ app/windows/runner/win32_window.h | 98 + design/Typewriter.png | Bin 0 -> 7799 bytes design/blob-haikei.png | Bin 0 -> 7595 bytes design/typewriter-icon.png | Bin 0 -> 7792 bytes plugin/.gitignore | 120 + plugin/build.gradle.kts | 71 + plugin/gradle.properties | 0 plugin/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + plugin/gradlew | 234 ++ plugin/gradlew.bat | 89 + plugin/settings.gradle.kts | 1 + .../me/gabber235/typewriter/Typewriter.kt | 55 + .../gabber235/typewriter/TypewriterCommand.kt | 58 + .../me/gabber235/typewriter/entry/Entry.kt | 63 + .../typewriter/entry/EntryDatabase.kt | 73 + .../entry/dialogue/DialogueEntry.kt | 9 + .../entry/dialogue/DialogueSequence.kt | 54 + .../dialogue/entries/OptionDialogueEntry.kt | 26 + .../dialogue/entries/SpokenDialogueEntry.kt | 19 + .../dialogue/messengers/MessengerFinder.kt | 82 + .../option/BedrockOptionDialogueMessenger.kt | 52 + .../option/JavaOptionDialogueMessenger.kt | 123 + .../spoken/BedrockSpokenDialogueMessenger.kt | 30 + .../spoken/JavaSpokenDialogueMessenger.kt | 135 + .../typewriter/entry/event/EventEntry.kt | 25 + .../entry/event/entries/NpcEventEntry.kt | 10 + .../me/gabber235/typewriter/facts/Fact.kt | 40 + .../gabber235/typewriter/facts/FactStorage.kt | 81 + .../interaction/ChatHistoryHandler.kt | 66 + .../typewriter/interaction/Interaction.kt | 53 + .../interaction/InteractionHandler.kt | 86 + .../me/gabber235/typewriter/npc/NpcHandler.kt | 11 + .../typewriter/npc/TypeWriterTrait.kt | 41 + .../typewriter/utils/MiniMessages.kt | 27 + .../utils/RuntimeTypeAdapterFactory.kt | 240 ++ plugin/src/main/resources/plugin.yml | 8 + 198 files changed, 12753 insertions(+) create mode 100644 .DS_Store create mode 100644 .gitattributes create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/TypeWriter.iml create mode 100644 .idea/aws.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/kotlinc.xml create mode 100644 .idea/libraries/Dart_SDK.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules/typewriter.main.iml create mode 100644 .idea/modules/typewriter.test.iml create mode 100644 .idea/saveactions_settings.xml create mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/.metadata create mode 100644 app/README.md create mode 100644 app/analysis_options.yaml create mode 100644 app/android/.gitignore create mode 100644 app/android/app/build.gradle create mode 100644 app/android/app/src/debug/AndroidManifest.xml create mode 100644 app/android/app/src/main/AndroidManifest.xml create mode 100644 app/android/app/src/main/ic_launcher-playstore.png create mode 100644 app/android/app/src/main/kotlin/me/gabber235/typewriter/MainActivity.kt create mode 100644 app/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 app/android/app/src/main/res/drawable/launch_background.xml create mode 100644 app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/android/app/src/main/res/values-night/styles.xml create mode 100644 app/android/app/src/main/res/values/styles.xml create mode 100644 app/android/app/src/profile/AndroidManifest.xml create mode 100644 app/android/build.gradle create mode 100644 app/android/gradle.properties create mode 100644 app/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 app/android/settings.gradle create mode 100644 app/assets/Typewriter.png create mode 100644 app/assets/game_character.riv create mode 100644 app/ios/.gitignore create mode 100644 app/ios/Flutter/AppFrameworkInfo.plist create mode 100644 app/ios/Flutter/Debug.xcconfig create mode 100644 app/ios/Flutter/Release.xcconfig create mode 100644 app/ios/Podfile create mode 100644 app/ios/Runner.xcodeproj/project.pbxproj create mode 100644 app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 app/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 app/ios/Runner/AppDelegate.swift create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 app/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 app/ios/Runner/Base.lproj/Main.storyboard create mode 100644 app/ios/Runner/Info.plist create mode 100644 app/ios/Runner/Runner-Bridging-Header.h create mode 100644 app/lib/main.dart create mode 100644 app/lib/models/page.dart create mode 100644 app/lib/models/page.freezed.dart create mode 100644 app/lib/models/page.g.dart create mode 100644 app/lib/pages/graph.dart create mode 100644 app/lib/pages/inspection_menu.dart create mode 100644 app/lib/pages/open_page.dart create mode 100644 app/lib/widgets/dropdown.dart create mode 100644 app/linux/.gitignore create mode 100644 app/linux/CMakeLists.txt create mode 100644 app/linux/flutter/CMakeLists.txt create mode 100644 app/linux/flutter/generated_plugin_registrant.cc create mode 100644 app/linux/flutter/generated_plugin_registrant.h create mode 100644 app/linux/flutter/generated_plugins.cmake create mode 100644 app/linux/main.cc create mode 100644 app/linux/my_application.cc create mode 100644 app/linux/my_application.h create mode 100644 app/macos/.gitignore create mode 100644 app/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 app/macos/Flutter/Flutter-Release.xcconfig create mode 100644 app/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 app/macos/Podfile create mode 100644 app/macos/Podfile.lock create mode 100644 app/macos/Runner.xcodeproj/project.pbxproj create mode 100644 app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 app/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 app/macos/Runner/AppDelegate.swift create mode 100644 app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 app/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 app/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 app/macos/Runner/Configs/Debug.xcconfig create mode 100644 app/macos/Runner/Configs/Release.xcconfig create mode 100644 app/macos/Runner/Configs/Warnings.xcconfig create mode 100644 app/macos/Runner/DebugProfile.entitlements create mode 100644 app/macos/Runner/Info.plist create mode 100644 app/macos/Runner/MainFlutterWindow.swift create mode 100644 app/macos/Runner/Release.entitlements create mode 100644 app/pubspec.lock create mode 100644 app/pubspec.yaml create mode 100644 app/snap/gui/app_icon.desktop create mode 100644 app/snap/gui/app_icon.png create mode 100644 app/web/favicon.png create mode 100644 app/web/icons/Icon-192.png create mode 100644 app/web/icons/Icon-512.png create mode 100644 app/web/icons/Icon-maskable-192.png create mode 100644 app/web/icons/Icon-maskable-512.png create mode 100644 app/web/index.html create mode 100644 app/web/manifest.json create mode 100644 app/windows/.gitignore create mode 100644 app/windows/CMakeLists.txt create mode 100644 app/windows/flutter/CMakeLists.txt create mode 100644 app/windows/flutter/generated_plugin_registrant.cc create mode 100644 app/windows/flutter/generated_plugin_registrant.h create mode 100644 app/windows/flutter/generated_plugins.cmake create mode 100644 app/windows/runner/CMakeLists.txt create mode 100644 app/windows/runner/Runner.rc create mode 100644 app/windows/runner/flutter_window.cpp create mode 100644 app/windows/runner/flutter_window.h create mode 100644 app/windows/runner/main.cpp create mode 100644 app/windows/runner/resource.h create mode 100644 app/windows/runner/resources/app_icon.ico create mode 100644 app/windows/runner/runner.exe.manifest create mode 100644 app/windows/runner/utils.cpp create mode 100644 app/windows/runner/utils.h create mode 100644 app/windows/runner/win32_window.cpp create mode 100644 app/windows/runner/win32_window.h create mode 100644 design/Typewriter.png create mode 100644 design/blob-haikei.png create mode 100644 design/typewriter-icon.png create mode 100644 plugin/.gitignore create mode 100644 plugin/build.gradle.kts create mode 100644 plugin/gradle.properties create mode 100644 plugin/gradle/wrapper/gradle-wrapper.jar create mode 100644 plugin/gradle/wrapper/gradle-wrapper.properties create mode 100755 plugin/gradlew create mode 100644 plugin/gradlew.bat create mode 100644 plugin/settings.gradle.kts create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/Typewriter.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/TypewriterCommand.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/Entry.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/EntryDatabase.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/DialogueEntry.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/DialogueSequence.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/entries/OptionDialogueEntry.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/entries/SpokenDialogueEntry.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/messengers/MessengerFinder.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/messengers/option/BedrockOptionDialogueMessenger.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/messengers/option/JavaOptionDialogueMessenger.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/messengers/spoken/BedrockSpokenDialogueMessenger.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/messengers/spoken/JavaSpokenDialogueMessenger.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/event/EventEntry.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/entry/event/entries/NpcEventEntry.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/facts/Fact.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/facts/FactStorage.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/interaction/ChatHistoryHandler.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/interaction/Interaction.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/interaction/InteractionHandler.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/npc/NpcHandler.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/npc/TypeWriterTrait.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/utils/MiniMessages.kt create mode 100644 plugin/src/main/kotlin/me/gabber235/typewriter/utils/RuntimeTypeAdapterFactory.kt create mode 100644 plugin/src/main/resources/plugin.yml diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..32222eb436417809c165c4fb95a16936c386ad3a GIT binary patch literal 6148 zcmeHKy-EW?5S}$rf;J&oSY8@Ch1l4hdiG*EZSu<*NpgoFRw7qh`UF-YHui#@jg|NW z`UYC~0DiN(n7uoLov6&f?zcBTJ98ho-3$?_&2gtjR3@Sl24is^(-*>a9yyt@nhH?q zJ(~TnR&PgxIOi)0VL%x8eGKroJ4>t7qYiZ`^ZnMI)7C*01g(D5g0^%T9=>09?>Dj@ zoo_ti1NVe@LpT+vNioIl*-_nJzL;3tysuBA^<9(K#touL&b-ylS3TKr@*UTYhW%(5 zLWR?d<}?E%FcH$wt%YdsJZpC=y1882dT47VQhT^{P4jW9BWfTG>WHaNV^q;g*HO7! z;aXF6w~pIIb#`T#$@on8ndalxQF(mH)sf+f?IM4j0shrPN(%;M76ya?Vc?SiJ|8>` zM&Dv$P#+zbbPE71LahaB?j<tQr7SlBNys6#N>>sT-NDqh0S0-MJRpl>lT2n|I32xuB)5(a*hfe(s5l579~ literal 0 HcmV?d00001 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..dfe0770424 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000..0a8642fac0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Zeppelin ignored files +/ZeppelinRemoteNotebooks/ diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000000..d4425f47d6 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +typewriter \ No newline at end of file diff --git a/.idea/TypeWriter.iml b/.idea/TypeWriter.iml new file mode 100644 index 0000000000..f673f6e5b5 --- /dev/null +++ b/.idea/TypeWriter.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/aws.xml b/.idea/aws.xml new file mode 100644 index 0000000000..b63b642cfb --- /dev/null +++ b/.idea/aws.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000000..b589d56e9f --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000000..794497c244 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000000..e0164d61f5 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000000..b1077fbd06 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml new file mode 100644 index 0000000000..b6e698558e --- /dev/null +++ b/.idea/libraries/Dart_SDK.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000..0a3a73e474 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/typewriter.main.iml b/.idea/modules/typewriter.main.iml new file mode 100644 index 0000000000..a591bfe101 --- /dev/null +++ b/.idea/modules/typewriter.main.iml @@ -0,0 +1,13 @@ + + + + + + + SPIGOT + ADVENTURE + + + + + \ No newline at end of file diff --git a/.idea/modules/typewriter.test.iml b/.idea/modules/typewriter.test.iml new file mode 100644 index 0000000000..c462275926 --- /dev/null +++ b/.idea/modules/typewriter.test.iml @@ -0,0 +1,12 @@ + + + + + + + ADVENTURE + + + + + \ No newline at end of file diff --git a/.idea/saveactions_settings.xml b/.idea/saveactions_settings.xml new file mode 100644 index 0000000000..6374d41f1b --- /dev/null +++ b/.idea/saveactions_settings.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000000..7ea160197d --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Typewriter +This is a minecraft implementation from the video of [Aarthificial](https://youtu.be/1LlF5p5Od6A). + diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000000..24476c5d1e --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# 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/ + +# 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/app/.metadata b/app/.metadata new file mode 100644 index 0000000000..31b763f97f --- /dev/null +++ b/app/.metadata @@ -0,0 +1,45 @@ +# 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. + +version: + revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + - platform: android + create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + - platform: ios + create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + - platform: linux + create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + - platform: macos + create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + - platform: web + create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + - platform: windows + create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/app/README.md b/app/README.md new file mode 100644 index 0000000000..47806012ba --- /dev/null +++ b/app/README.md @@ -0,0 +1,16 @@ +# typewriter + +Visual quest configuration + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/app/analysis_options.yaml b/app/analysis_options.yaml new file mode 100644 index 0000000000..9d6223417b --- /dev/null +++ b/app/analysis_options.yaml @@ -0,0 +1,10 @@ +include: package:flutter_lints/flutter.yaml + +linter: + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +analyzer: + errors: + invalid_annotation_target: ignore \ No newline at end of file diff --git a/app/android/.gitignore b/app/android/.gitignore new file mode 100644 index 0000000000..6f568019d3 --- /dev/null +++ b/app/android/.gitignore @@ -0,0 +1,13 @@ +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 +**/*.keystore +**/*.jks diff --git a/app/android/app/build.gradle b/app/android/app/build.gradle new file mode 100644 index 0000000000..a855a73dd1 --- /dev/null +++ b/app/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "me.gabber235.typewriter" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/app/android/app/src/debug/AndroidManifest.xml b/app/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000000..8d4c68d1e2 --- /dev/null +++ b/app/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..e9f1e2596c --- /dev/null +++ b/app/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + diff --git a/app/android/app/src/main/ic_launcher-playstore.png b/app/android/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e819dc838a5b7f80091aadac910fb1daf7cb12 GIT binary patch literal 5598 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 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/kotlin/me/gabber235/typewriter/MainActivity.kt b/app/android/app/src/main/kotlin/me/gabber235/typewriter/MainActivity.kt new file mode 100644 index 0000000000..7ca43edbde --- /dev/null +++ b/app/android/app/src/main/kotlin/me/gabber235/typewriter/MainActivity.kt @@ -0,0 +1,6 @@ +package me.gabber235.typewriter + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/app/android/app/src/main/res/drawable-v21/launch_background.xml b/app/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000000..f74085f3f6 --- /dev/null +++ b/app/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/app/android/app/src/main/res/drawable/launch_background.xml b/app/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000000..304732f884 --- /dev/null +++ b/app/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb2f382d2608da9e1461e0ae50ea96922178ab5 GIT binary patch literal 2929 zcmV-%3y$=OP)kYCE{SE%4p%T-|2rGyaoyN^DFFLuBzOV28avCXFBz7XP%em&#d2*HJA{c6vxQ5V}bL8QF92(WK3Yn1^=pfovpSV#0*p9 zoSKfyo-bmAvGa?;(H>$TRIGaed73mH)F3N_^F>{QSvdRC)R67aiq=eXXQpP!m5+r+ z4Asxiwh=P{(g;ct=2GKKYw{vSTG5=M5&DsqCzG&gk3boQX)7@qv0O{U3J4n3NKDO; zD=Ri3rpr+1(k;-?dcBOeD7`d6kARM0Jv4h&Il0;*@UDL8h{1{sEt8mrHP>jOJW0E0 z<=$AP&BQ>9V2#{xP9JJvDF|TsdA}Um(K`9!88D4J)N2c+8Wjs&G^ns$6dau6J)i2_uCS&n(^gw?&M4+`#Z1PY^TLDI?Rax^*WruKFIeLS z>t1wGEiVLO*Q{LerOkKtcDrn)fQu#BrU+oe_rCd&3 z_%D^|s61GnU$Au0p7X-rkNjr$8*^;H2Vjl`U8dy}QSP7##ZHe>?IOlRzQXH3dwi#w`gWh;^G$5$8LUl=TP+q!uIW?8F!;2CQMh+^tFs zrcHfV0IXe~4FQPVF;Hp2a7s~d6JmlS^)IH4eV^NwMyxI$>x)HtqZK_jsn>TIC=#tm zz48IDJbVD_x)IPo2|(<4*2tN1RJ`_XJ({TH8_Sl9(@CKqfhte(#;1E_(iBZAH4F|I z!Npvb%4AqJmLQIU69wtb9MOJn&)Yb9Bdz7L7mtt6j3S1+lJ_;{e7t5@Dg8|O?% za{q>hg@vLBbr4FIAl_jG%**gXb}TeKNuMxSxY`o5{17#jmG|hI4Qw; z`><-ntSBRK{TQe;Sq<2kCAEHQ2-f)0#wXZ?KpUwJX3vDYQ^wFyPEwHAm`vJRtkRF3SKP9WbH&%-Ru z60e)&wP$aaRy-r~TTgZGUp?9Hx#I1d?AkusLYS{P0uf_T=Th^p-|)|a?{)Du-BebL zbf({4U_x!RXTg#xr^%p6-Hy+L)H@p#_ZxIPU8?H>SwYkELOK_C#k(($1=%=0dk&iuobD&pbRZA6|+u?|lo42J_-K~r6I?&J%b~eW^^AU4LXvAWP1X%9nVr33- z93SoMl#2x&W1XA@K#`7^z_5w{mR8QnNpul?4Q60ITk-pXQ5H`m%cYXyupbQu-r-OM zSjr%{h7l;p^U#l;7&-Cpo!g(ZeqOQSsx6N_zVnw)UO01VY~+2&+5FHqSFTwLw0`{E zZ=E-De)8+*;hIUOAKh|4+=!AC?TCHxbU_n!K~IwfB*cm_5!C*9Ear9SSv`&m|>-62&6n166C++ASaWm_YA5WAE3t2 z2ozk0mtzavCf+Ugeqm~S?A_O1v3~ZoTxw|wgSnNy$`GgHJRnCR(UfBRi@lN6GUl>09$7i07#^buK=VxZD%*hMqcWnC^ z!*TYWEUQ|kUKC+XmrIqs_OW+{o_!)Mh~miUQ*&=s2*h&f>HiG9#fzdnido2Ij~slJ zWm)@H0JP#%q0VIh8Air9J+w zfhQ-w9YI3zX-C7#fE_-@a^KQ_{&ZyJi(C7T?g^zS6u@o-yS`%De|s=!;FEVfL*^du zDI7W&TeD7Fv;^)aR^OFhc(u=u$*Mk;^Xv47wW%3rRJc^h*3_ZI)L zqi^eDY%Bq0c?%!*1MbLfba)p&d9a0deJT%!F~Rvv`lW3Q$0OFsa)UuGr>Q(0`iGK4 zO{oOSoq#iAC^O;q)EiBSxr>=vR?ZxAe_BMP@#f!GOV#s-A!82eUg|YBGFjqyXasC7 zq#iSJx&3E@};kLDCEq#-eNo)N4l5 z^m0q5J;4M{AWkFR1l?)ng+`PA!-0XFnNu@^gRg9{3`-b-a}!OsdkMP`6Hug^C{;IN zeojZUgsLbq0y*k#5hKQOyCc(EDSpr0C|IC#X%eqGf$ml-)~V-1wm`--kR}k zZ`@qq=vV9@2?R!WiX+2>iJLne+d0*c+9Htzt75}xlvXO6dlfVouA*SwR2)o2!)S4J b@s0lhu9&WaP>kU700000NkvXXu0mjf+@q15 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9930741e917681d63f61a42c2ccef83cc36c5923 GIT binary patch literal 2178 zcmV-|2z~d7P)xM(iT`5F_0=GFbks*hERa?y7(wA4e61#sXXxc))T)%G)N8@DsTd@T!iV^ z1dCyOhNXd81*s1hHW+0apjAOE0u!Dap;Z8Kg)y$|urOq@0)4J8TLWDKJ_W1@>=M&4 z!I%dj-v-EWf0@++BJl>PL`Vl5xeTd65Tn*arc?r{zxRb#3&^qjuL_gC2)0hJR=Skg zpc_U2F11=fw2)1DLUXkI23^Et+lEA;Br$CQCjlPQ-*kSYBYxU~R6@0LNzd$#XL zmP)S1l>&}l0Vshe#z!J7OI`z@L_%M#UxxI0(t!_1Bj{2oG7PngnoEc^d(D7MjjV=Q zAP{Cj+`rn~%~C+eG{FL&15OIRSq-4W4?oCrp^w9a#PX(L;N^3KETw=J90%%6)3%*U zv+}#=D#SuX;ze@>H(3Opw_-p)caA$R$mYHAQJ3?>LU3sn@SeA)xX9R!^O) zMAW5Srw|LJ?-c|3&ON)^(R3llwrg{9c*C;H){)#dw+|ot$8=-_I+=16q#-YVt_;wt z&puhq=a(NB2IM%XJnz0gD~t_E6!xB_e6lGLE!lJEl>xf#i=P(+e~M)q^D{H8R}qsj zP#jz@xPe_)^he(~=}UH;N=*TIF(G}U?Oa-Yl%Y?wK0OYIEM<8&hGl*wJ)z3r zX^Rbtj3RO=(a#G)eLK?rm5NVD6tO5cw!>MEYl3#8{tQe=RHh}ZAtZu#7eKX zxs2hKFcB;pY_mQ=IbDcENwUed^^3bV@F!=?4=YqHZ!f4rB0@P8HoU7ASu5>SkJQ|PBEC zAKfWahpEq6ywm#EhI|h1-_w>rU}9`u=?Tzv&8ZsD7~HDn{GRJ0rC3-@r8xLkv31) zDgYHG&-7my?=nD8b-X&gRZ622Iz13irvfd)-kYX%tE~4uapdT8M=&Y(4X*pz-FrUx z<6F~{6We!w{R=yGo;-f+qrd!l_n!N1+PdxNYriaCnabpHdmlRR`t#2O^J%}~#EW7C zQ22~OnFU8)D$WUX%U8a-d2HLRd+zcN?f$?*ICoc{aI4?JKRWSY6@^0N=_^>!K` zoH%ys#PQ0)BHsV@m6s4@vq8J#7mxfnL8jiI$l|-?p%%p}B1^qyD9R9ulum~;GFG%) zu@9(0)1_2ON=0J0QLAMWdvH3daD0g@8#*3wmJ54q3_^gih2kT>clkP|C(?)(0sh52f?#XV$}wh}-gLL7o585+%>pPhO6 z;C^PQcdn~?UG>-14a0U7@WPJ{3&L_KJ4!sA`^6yJ(R6~}>o~Pdx8|q*$*VOFjYoza zj6@$&lk$+^?XS`LsOfqIrp_)0D0T{IHbI+p4-A)9ygF%*efILMgV-IXD-)d-qD-xJ zOnrL(21?Wa`zyTn`f`9`L+1u{;6ft$)+$>YebeTE(wsZDW zcQi?WFb*mBopA1wPmkNx%lz=h2q4VqM!of=JB6?<0C zeGF&+7Ga@O`C44CFTUAcxq8~^^%`ZkE69)1(O7u9$%)iq)u+H|EAm2y;F|HCxHmvt zh7K#+7i}jjEa>tfGr7zXoo2+CYakw2i3~)FcOs{8n4rvc#Ek_g($rk-XS`4d}QLruHbI^>sA&SSkh+E*u8X3B3mm*9~pi8aw>^xyW9f^U= zCQxVm^FW_i$RV>rmI_mDBmKF7HeDOVs=b@$TS_9$3#2ED4J_g@+jq)r5)+k#R!fY; zo&ezn!$#Rr!;5`jiV+ua<&*fBB&Lmt+1XITwR2heKfo`fGQ-*^3;+NC07*qoM6N<$ Ef=rYrBme*a literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..af2dc105b1010ce2f50b36358065d5e19d2d26f7 GIT binary patch literal 3373 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 D@?2)< literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..385a94d05b4b67c8088f5f754d440369d9339097 GIT binary patch literal 3876 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 literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..38b66a6a42958701310a932cd58a25ab90e89ab3 GIT binary patch literal 4202 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 RUjIYDQB~A}etc{i{6E9P$H)Kx literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/values-night/styles.xml b/app/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000000..06952be745 --- /dev/null +++ b/app/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/app/android/app/src/main/res/values/styles.xml b/app/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000000..cb1ef88056 --- /dev/null +++ b/app/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/app/android/app/src/profile/AndroidManifest.xml b/app/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000000..8d4c68d1e2 --- /dev/null +++ b/app/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/app/android/build.gradle b/app/android/build.gradle new file mode 100644 index 0000000000..83ae220041 --- /dev/null +++ b/app/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/app/android/gradle.properties b/app/android/gradle.properties new file mode 100644 index 0000000000..94adc3a3f9 --- /dev/null +++ b/app/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/app/android/gradle/wrapper/gradle-wrapper.properties b/app/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..cb24abda10 --- /dev/null +++ b/app/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/app/android/settings.gradle b/app/android/settings.gradle new file mode 100644 index 0000000000..44e62bcf06 --- /dev/null +++ b/app/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/app/assets/Typewriter.png b/app/assets/Typewriter.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d9144e8aee38ca0b26ef6251bb75161455d69d GIT binary patch literal 7799 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 Ssg{*y#L#H+r&!%QsQ(8gQ)0>h literal 0 HcmV?d00001 diff --git a/app/ios/.gitignore b/app/ios/.gitignore new file mode 100644 index 0000000000..7a7f9873ad --- /dev/null +++ b/app/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/app/ios/Flutter/AppFrameworkInfo.plist b/app/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000000..9625e105df --- /dev/null +++ b/app/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/app/ios/Flutter/Debug.xcconfig b/app/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000000..ec97fc6f30 --- /dev/null +++ b/app/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/app/ios/Flutter/Release.xcconfig b/app/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000000..c4855bfe20 --- /dev/null +++ b/app/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/app/ios/Podfile b/app/ios/Podfile new file mode 100644 index 0000000000..88359b225f --- /dev/null +++ b/app/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/app/ios/Runner.xcodeproj/project.pbxproj b/app/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..3ee1075090 --- /dev/null +++ b/app/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,484 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + 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 */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* 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 = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* 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 = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* 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 = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* 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 = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift 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 = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* 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 = 11.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; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = GJXU9JWN83; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = me.gabber235.typewriter; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + 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 = 11.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 = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = GJXU9JWN83; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = me.gabber235.typewriter; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = GJXU9JWN83; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = me.gabber235.typewriter; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + 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 */; +} \ No newline at end of file diff --git a/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000000..f9b0d7c5ea --- /dev/null +++ b/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000000..c87d15a335 --- /dev/null +++ b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/Runner.xcworkspace/contents.xcworkspacedata b/app/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..1d526a16ed --- /dev/null +++ b/app/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000000..f9b0d7c5ea --- /dev/null +++ b/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/app/ios/Runner/AppDelegate.swift b/app/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000000..70693e4a8c --- /dev/null +++ b/app/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..eabd8512d0 --- /dev/null +++ b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images": [ + { + "filename": "Icon-App-20x20@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "Icon-App-20x20@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "Icon-App-29x29@1x.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "Icon-App-29x29@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "Icon-App-29x29@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "Icon-App-40x40@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "Icon-App-40x40@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "Icon-App-60x60@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "Icon-App-60x60@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "Icon-App-20x20@1x.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "Icon-App-20x20@2x.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "Icon-App-29x29@1x.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "Icon-App-29x29@2x.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "Icon-App-40x40@1x.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "Icon-App-40x40@2x.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "Icon-App-76x76@1x.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "Icon-App-76x76@2x.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "Icon-App-83.5x83.5@2x.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "Icon-App-1024x1024@1x.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "icons_launcher", + "version": 1 + } +} \ No newline at end of file diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..e05aff6a6c90c575ebb65faef4bdc17b9e5f22a1 GIT binary patch literal 15017 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 y2DMZ~N{fg_y7jL*F3RKBY+ek<(@t?W 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 O0000=sI zN!MT*xTCCpHZ70*#8il%MYJ4YMIt03FW`IrK9RN!_hkLE>3PD(X{2qUWr>jNgtQO+ zB5k53g#lu!%py4uJ`0Vu zQV)%HHx;_5<`My2ecb65FiONMlh~+FvO!V}lkh1*(S_Q>(|nNI+i%jgjpxqtLAU47 zB)%CyeG%>qLdf{^Zar3HMiX)@*eb}t+d+6vA0;&&q$eaDR)PmIEN8Z$)mzOHUI^xY zLi(vEzqji%_fxxcO;sxuYF7ifxf!KcG%Wktt?Hw{JR9nFh&E4HDL}m^(y#pS*PAxn z(e=*_U9(LKNw7>@;y8v_VIeXKXkq$DdU+-tlccVHUe4uowMx)PFzKZD)c(!i{=<1a zOdKqIWr7HUL>#O&bV+(NJ$&e!j|~nCbj=va7`koOgwKr_6;Wk0rcJPZ#<~8mtp12;KmMw{1?)y+c@z zn&X6^7YHek#A;fu;LhAV%fLi}xP0|(j>n1MPAf}0%^;dNxenLr%Pe)cyc%~b%k_(8 z06b=9Y8el7? zbz(-XwXKt#VK*{f32{y!VKt3XHtTKCHBGIQy)9BaE+?1F!kCjU+H?4yRyA4SnpDr; z@8ok8TbQzw#9>G+5b&Q^bMau<(t;>v*4*Z8 zi4rh1AUVb-t7q@Z46?2oOk1AJ1=1PiW@n^7G}w`2?)Ic}y7Sz1oGx|nr~JB)*BUvV zd+W-GYaE!z$I1_;RS4M@rhNNhXj;{;h>3w^sp0gr#_zjuJKPrb95Hqq-T`NSzMpW( zt$jdXf+RjX$tB6I5omZU$ zqZw~In!LDgr{AuopS_+rRcKxV0iCndaXqE+t?DGMcwj|PA~IYf-aa^_S=+5eiStA+ zwwPr?}6{N^uC?)a`PQp5n!7t)+oj^%Dd z8ENT8ECOjk$w&u>pyn)(5kWN>6y1r zz5%`4KD#R>$FE(vbm_u*kW^8Uw(b1fJ8zvTFNS86;#`nfW&E8dUVIW zM<7={`{wKALVjRq_zU|F4h*N?c<~50!p--6`kn`NUOxX`jr8Xq`cgWRdF7>JKpL{! zd$(nK~IoV--^=8`&oFF7utMA-UDdgAO_0b!bKLFCE zX%@2!o44M7>g8iVS}B*Zb94DzJ;Kgq!4wdsjJ`&WC*T=?u4#t02Eq@gRzhe+JtQ8| z5MBX*_0j#YvRXa&kCSjUT5jFE{^Q3EHg5m+{BMsv_p62?{^W`8H@foKg+pKeDxD5Q z6R_EW+{~>sAx#BV(~_;7OFw}JyO_q~qKq%Sa-4|H1w2_QTrfWHokJ)8{KDk;`|y8y z#j1xN|CYB`({;rYPs4ei{`;FJkN>rH`;8}_{L^m^PhX#;ENAJY5%9p4Gh84i?8JI_ zUS5H%cwq0tcWn6tL>DKH9i4dpJunDsHf;0`H$q9k<%<{ax2e?L1COrXxG5G3)rct% zU=YT1gSqZVd&C1$Dbp~{{qv-$8#bOMC|T*uYsbAc15MW|6=i94%ep!~Ui-13>tIz% z{+zN2oVs>)N!kOYR6PFsX9YW*7PEG*2wbogi98j_+LUXKVPfj9h9DVL8Nent=k ziuH&Fp8o!iTI+C2`<9f{QW>d)sXyc<-hQA(jHPqbbP$lH9?@7D$)L7aCMnF&-|JCG zQ{Vk7H{4fGz9~Q;AorO0)R)UEH{SE~o+z_Nfy0X!cw}#oA8n8LYNm;Ja4}Rn6eiPU zkH{YV-O%1gB$U?X;zr6bd_J~iS4mlxlgnflB{Cp(z zv|uq|PLn1HoPegy?$Q@}NW;N3zOOLLK1a{Vcxm(a<}?8Oo+nAllN9xm+_#j)|40b~q*h(r_}(NE^zB zLK?);k%&c;R4LQ89N*risP_8hj kuzii7j`+!Acbv(80fPNv=+JUAhX4Qo07*qoM6N<$f+^nz!~g&Q literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ebbc4061ad0c7756e8c45084b22483d336e5bc GIT binary patch literal 1317 zcmV+=1={+FP)BF2AH@f1z@~~7 zOqg8*16ckFUSWQed&1TbNlV;y{_de#1=iGZYyXmG$53_scaps#d-<)%1 zWQg~}CZYsEltB=vu13KZqq-nMs24=Z)A4tMNM#3e{}`xCMd& z+y*TTfle0!stXX>0pQ>QcZ#qTE{aw4a4ijV34C#~)HcD$Lm+XxGA_)}YV|H~(K<^9 z*)h#5g4zn;FkoARE;>t^c~E1HvPlK(yTCfM9xo7aJPd-Q{+C8H! zt6a#}>ES$^SuE!ZhbR8{GhHNR%`91se?gP6<-Aa09y3yW1OE{kF%H*`YM^4prMF@0&(n3`;2j-Uk>qugIAMV;_ ztW?NhQ<9oz*w~}fm3tr{uXV!YK3bfnbeK-Jha4<-3qW>_8jPNS=ueiN{>{U z(nSy?*XrAM)E|V`hQ#a3R%2)Pz#upWRm$g~N%mU5_lCni8{HJa)eIHFl|vLZ82gT- zDll1y#a=&;^#i$h*EQjtfxLWkrqN!1FmzEEdUtkb?#NXlWbSI@+|ihC-C{DuIMXTi z0j3N{WuYjDp=cL2S2(Pc;km!#pYGV!sWKE_keun8)%Y9pNzIlZ(nA=*^omw4@L1#K zog66psQ_qB5&cTz$_s|{QYtwbG8yBmSxN$v%Tb++jXE~x)k+?G5~$%CZnMbbA$=Fd z);g*HzoK6m(;~9lH^{@8VcXgdC`t%k~Zpr)H*m zhexKa|EnmfKMePib1dJQ++PhaF0^C@?rYi_%9WHc0s zTsnX5;ivX}J^ucEdmbv8b|@TfOC$=p+#`=aar&cU4hxKoU7yNp4UBF#z)_^C`@Qzt zCAaeJiE-8Ezi{?Ura;GQ8b-NPJbUu9I*g&w38BfD@-bU-z7fCvHuwA3vj>rf?@yk1 z<@o24ETf-kj-Oq=^vmSwiT%&NcbUZqJCb$BnY|=B#}c8xRs3}T zQ(NGN@n+Lx?@mP#+d*x^w2!X1`o(en%%Sfd2PSE8PdZQRNzKacL4nDP`yQY1J?^Cpt1t2QXe&n zcK}?&m4b9Dd-pRwYT}@0oRJ{-MW`&%#f6tSE`#CZq!C(4Qh_yDv)*2TC}!Z{Dq#vd zeZ?8{)1yYaNj>;9LI11RbiLCQWh-1)=y{=f*-~yL+Kd`B2D*DtsDp($QG=cMqOkN0 bK~eq(!sQQ@!KMAK00000NkvXXu0mjf#oU7E literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e258c2f3f88cf5852ad6d22f1f12e8e6e96fb1f1 GIT binary patch literal 2458 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 YA7V`QevqWPB>(^b07*qoM6N<$f=Er(CIA2c literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..925da9f4b39b4a4ff3a4bad1f014b5bb567bcd0a GIT binary patch literal 3258 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 literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..7717ee0b847a5b76816acf5f5770c0ca98d44bd5 GIT binary patch literal 1876 zcmV-a2dnsrP)3$g6h8OOTW6-zPN&cXv?^8#f(sJCXe1g#ltg2Uk;GjiG5CWY#;7DF68)h;W1w-*DUguE#kry)SsDm3aHS&@sK?+5VPCEe+9)JD zqW!K422^5~q-p?|y5QQr;Kft=7|5+agmBf-K)=Y40>$8rXH>B8f22WRB+q6{OTdl_ z77s!bB*c)fT>z=g=Uh{C2VBGFAT0F50G>Yrv~%akDj zSANE8065p$BJja}^yCCynoT1C@&5E7W^TsX=8=C&bkqaO09SkI4|Evi%z;JH}c*En5RG`))T~%G% zPH^O=?&hUk=@S z>~J_I;I>>gmu(5gYJPfVVmuh@nra(a+;!>hxP?gmnZ)iAK6Bqcda2!^IwrV)xj z>ZPmN#Iu?cCrV|{N?tC zEvblprTz;_ML3a)(57n_DA%URd;Jzq=$dAumG^GWF!+G9nS6eHEEvbbskNh1NwYg# z0r^{D7|h`juk*CrBZ0e09R0~!2*xBx9ticqiLf#!aPTuq#Dw!Lq9r8Q}=F6-tz>0_KD*5Kb2O2e!O@psZZ7jCxDju9fKtI z*x%je(zmS5TY^b$?>6P{12@Vu)nf6GUI?xQ<^-!>J`HMAb&2i*&nsezrG69&Kl3g; zb29r{huNDh-jd^ZKGg6pYRjgft28gck|JMk*{hD@MM$@|G+=woEWLz zJ!JCl{MWv9k-SJ@xk)Oj`d~i!#+fdLT15_}15=ZbPFIxR`f;qZfsm=5?$?EvPdB&l z%q}y9jBc=S8nO6urdYi>B5efZw&+E0DPT@uwGW`_-0y^WKt!Yd4{5sKsYd7-<=FrV z3s=xY%+Jx8%_-*9mj^D=vK`L|+EmS@Da}+ZyXMlN&8M7Hu51clTW<8lM~*;k=4DVB zKLM>;yYAG{zUlF?#Vb}~IQ@0-=WCYVaQ$s}e);)M%wPAffAoi4U!NTqSk&8_N~iz$ zwXew2t9KthdWEANOut@+XCm=h+dHni>6Up5uGqC>d#1JRu7}q5|9&)+&0Tx_@?8md|}hR-QPs)(MIv-SQ&7M@RcgWETvv34JR*-ezx_^VBGipclg7> z(I3D6;oIGTs$bdgbg=sRrj2Fn@hxT+K(67W^=*urDCSk9WvlNPI(d9{daAp3>5`SJ zL)kPi~LF#H69;e>G;R8LCl1EWh9BMH9EO_Zw*?+MZ}gu~mfv!A-Db6O zNzKF4s;e5c0)~Jqrr^vGINMiaH3W_mHm^#Tf0sdow@1!TeDZGgk!R1}@IbVO(o(F? z6hI4$6Rk)9+*hxA$M)1itpX0DjsAl>Ju&{lD`o2#>*i$TA;$!#tRtB zZ7o)*uve9iWd!GkgkUD90vHw<)d%%=zUE z9f~!tMHj`=ZRf*JhLi*;=WEzEBtc&;A!hx4em1HW$~@4V(reA1nGf!8 z5PL-?+$Abf9biskz-}R$LG_|m&GFcN&bMVOa^jT-$JidQ%v?Wt73qH?9u}mipNGT% O0000K~a;c5j3O~B1J_| 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 literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..601e28179751b9d1b50c7c83285025e9fb91fe4a GIT binary patch literal 3863 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 literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..2295cfe30fd8b351f6cc8a68db1a37915a3dc5b1 GIT binary patch literal 2491 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 FV1mB@-4y@; literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..236d4a83a11d453971a84fc3b194949dd64bc4af GIT binary patch literal 3637 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 Xohj-gZgjnx^#NLH`l_|cHn0B=WPjt2 literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb2f382d2608da9e1461e0ae50ea96922178ab5 GIT binary patch literal 2929 zcmV-%3y$=OP)kYCE{SE%4p%T-|2rGyaoyN^DFFLuBzOV28avCXFBz7XP%em&#d2*HJA{c6vxQ5V}bL8QF92(WK3Yn1^=pfovpSV#0*p9 zoSKfyo-bmAvGa?;(H>$TRIGaed73mH)F3N_^F>{QSvdRC)R67aiq=eXXQpP!m5+r+ z4Asxiwh=P{(g;ct=2GKKYw{vSTG5=M5&DsqCzG&gk3boQX)7@qv0O{U3J4n3NKDO; zD=Ri3rpr+1(k;-?dcBOeD7`d6kARM0Jv4h&Il0;*@UDL8h{1{sEt8mrHP>jOJW0E0 z<=$AP&BQ>9V2#{xP9JJvDF|TsdA}Um(K`9!88D4J)N2c+8Wjs&G^ns$6dau6J)i2_uCS&n(^gw?&M4+`#Z1PY^TLDI?Rax^*WruKFIeLS z>t1wGEiVLO*Q{LerOkKtcDrn)fQu#BrU+oe_rCd&3 z_%D^|s61GnU$Au0p7X-rkNjr$8*^;H2Vjl`U8dy}QSP7##ZHe>?IOlRzQXH3dwi#w`gWh;^G$5$8LUl=TP+q!uIW?8F!;2CQMh+^tFs zrcHfV0IXe~4FQPVF;Hp2a7s~d6JmlS^)IH4eV^NwMyxI$>x)HtqZK_jsn>TIC=#tm zz48IDJbVD_x)IPo2|(<4*2tN1RJ`_XJ({TH8_Sl9(@CKqfhte(#;1E_(iBZAH4F|I z!Npvb%4AqJmLQIU69wtb9MOJn&)Yb9Bdz7L7mtt6j3S1+lJ_;{e7t5@Dg8|O?% za{q>hg@vLBbr4FIAl_jG%**gXb}TeKNuMxSxY`o5{17#jmG|hI4Qw; z`><-ntSBRK{TQe;Sq<2kCAEHQ2-f)0#wXZ?KpUwJX3vDYQ^wFyPEwHAm`vJRtkRF3SKP9WbH&%-Ru z60e)&wP$aaRy-r~TTgZGUp?9Hx#I1d?AkusLYS{P0uf_T=Th^p-|)|a?{)Du-BebL zbf({4U_x!RXTg#xr^%p6-Hy+L)H@p#_ZxIPU8?H>SwYkELOK_C#k(($1=%=0dk&iuobD&pbRZA6|+u?|lo42J_-K~r6I?&J%b~eW^^AU4LXvAWP1X%9nVr33- z93SoMl#2x&W1XA@K#`7^z_5w{mR8QnNpul?4Q60ITk-pXQ5H`m%cYXyupbQu-r-OM zSjr%{h7l;p^U#l;7&-Cpo!g(ZeqOQSsx6N_zVnw)UO01VY~+2&+5FHqSFTwLw0`{E zZ=E-De)8+*;hIUOAKh|4+=!AC?TCHxbU_n!K~IwfB*cm_5!C*9Ear9SSv`&m|>-62&6n166C++ASaWm_YA5WAE3t2 z2ozk0mtzavCf+Ugeqm~S?A_O1v3~ZoTxw|wgSnNy$`GgHJRnCR(UfBRi@lN6GUl>09$7i07#^buK=VxZD%*hMqcWnC^ z!*TYWEUQ|kUKC+XmrIqs_OW+{o_!)Mh~miUQ*&=s2*h&f>HiG9#fzdnido2Ij~slJ zWm)@H0JP#%q0VIh8Air9J+w zfhQ-w9YI3zX-C7#fE_-@a^KQ_{&ZyJi(C7T?g^zS6u@o-yS`%De|s=!;FEVfL*^du zDI7W&TeD7Fv;^)aR^OFhc(u=u$*Mk;^Xv47wW%3rRJc^h*3_ZI)L zqi^eDY%Bq0c?%!*1MbLfba)p&d9a0deJT%!F~Rvv`lW3Q$0OFsa)UuGr>Q(0`iGK4 zO{oOSoq#iAC^O;q)EiBSxr>=vR?ZxAe_BMP@#f!GOV#s-A!82eUg|YBGFjqyXasC7 zq#iSJx&3E@};kLDCEq#-eNo)N4l5 z^m0q5J;4M{AWkFR1l?)ng+`PA!-0XFnNu@^gRg9{3`-b-a}!OsdkMP`6Hug^C{;IN zeojZUgsLbq0y*k#5hKQOyCc(EDSpr0C|IC#X%eqGf$ml-)~V-1wm`--kR}k zZ`@qq=vV9@2?R!WiX+2>iJLne+d0*c+9Htzt75}xlvXO6dlfVouA*SwR2)o2!)S4J b@s0lhu9&WaP>kU700000NkvXXu0mjf+@q15 literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..385a94d05b4b67c8088f5f754d440369d9339097 GIT binary patch literal 3876 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 literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd7e647b5693ae060a0faeeb62f71e19008d7d6 GIT binary patch literal 3011 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 literal 0 HcmV?d00001 diff --git a/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000000..0bedcf2fd4 --- /dev/null +++ b/app/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/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/app/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/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/app/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/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/app/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/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000000..89c2725b70 --- /dev/null +++ b/app/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/app/ios/Runner/Base.lproj/LaunchScreen.storyboard b/app/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000000..f2e259c7c9 --- /dev/null +++ b/app/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/Runner/Base.lproj/Main.storyboard b/app/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000000..f3c28516fb --- /dev/null +++ b/app/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/Runner/Info.plist b/app/ios/Runner/Info.plist new file mode 100644 index 0000000000..9f4166c717 --- /dev/null +++ b/app/ios/Runner/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Typewriter + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Typewriter + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/app/ios/Runner/Runner-Bridging-Header.h b/app/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000000..308a2a560b --- /dev/null +++ b/app/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/app/lib/main.dart b/app/lib/main.dart new file mode 100644 index 0000000000..3eb01b5bd0 --- /dev/null +++ b/app/lib/main.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:typewriter/pages/graph.dart'; + +void main() { + runApp(const ProviderScope(child: TypeWriterApp())); +} + +class TypeWriterApp extends StatelessWidget { + const TypeWriterApp({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'TypeWriter', + theme: _buildTheme(Brightness.light), + darkTheme: _buildTheme(Brightness.dark), + debugShowCheckedModeBanner: false, + home: const Scaffold( + body: PageGraph(), + ), + ); + } + + ThemeData _buildTheme(Brightness brightness) { + var baseTheme = ThemeData(brightness: brightness); + + return baseTheme.copyWith( + textTheme: GoogleFonts.jetBrainsMonoTextTheme(baseTheme.textTheme), + inputDecorationTheme: InputDecorationTheme( + contentPadding: const EdgeInsets.only(left: 8), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + borderSide: BorderSide.none, + ), + fillColor: brightness == Brightness.light + ? Colors.black.withOpacity(0.05) + : Colors.white.withOpacity(0.05), + filled: true, + ), + ); + } +} + +extension BuildContextExtension on BuildContext { + bool get isDark => Theme.of(this).brightness == Brightness.dark; +} + +extension StringExtension on String { + String get capitalize { + if (isEmpty) { + return this; + } + return "${this[0].toUpperCase()}${substring(1)}"; + } +} + +extension ObjectExtension on Object? { + T? cast() { + return this is T ? this as T : null; + } +} diff --git a/app/lib/models/page.dart b/app/lib/models/page.dart new file mode 100644 index 0000000000..3565dfafeb --- /dev/null +++ b/app/lib/models/page.dart @@ -0,0 +1,401 @@ +import 'dart:convert'; + +import 'package:collection/collection.dart'; +import 'package:flutter/material.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:graphview/GraphView.dart'; +import 'package:typewriter/main.dart'; + +part 'page.freezed.dart'; + +part 'page.g.dart'; + +PageModel pageModelFromJson(String str) => PageModel.fromJson(json.decode(str)); + +String pageModelToJson(PageModel data) => json.encode(data.toJson()); + +@freezed +class PageModel with _$PageModel { + const factory PageModel({ + @Default([]) List facts, + @Default([]) List events, + @Default([]) List dialogue, + }) = _PageModel; + + factory PageModel.fromJson(Map json) => + _$PageModelFromJson(json); +} + +@freezed +class Fact with _$Fact { + const factory Fact({ + required String id, + required String name, + @Default(FactLifetime.permanent) FactLifetime lifetime, + @Default("") String data, + }) = _Fact; + + factory Fact.fromJson(Map json) => _$FactFromJson(json); +} + +enum FactLifetime { + permanent("Saved permanently, it never gets removed"), + cron("Saved until a specified date, like (0 0 * * 1)"), + timed("Saved for a specified duration, like 20 minutes"), + server("Saved until the shutdown of a server"), + session("Saved until a player logouts of the server"), + ; + + final String description; + + const FactLifetime(this.description); +} + +abstract class Entry { + String get name; + + String get id; + + List get triggers; +} + +abstract class RuleEntry extends Entry { + List get triggeredBy; + + List get criteria; + + List get modifiers; +} + +@Freezed(unionKey: "type", unionValueCase: FreezedUnionCase.snake) +class Event with _$Event implements Entry { + const factory Event({ + required String name, + required String id, + @Default([]) List triggers, + }) = _Event; + + @FreezedUnionValue("npc_interact") + const factory Event.npc({ + required String name, + required String id, + @Default("") String identifier, + @Default([]) List triggers, + }) = NpcEvent; + + factory Event.fromJson(Map json) => _$EventFromJson(json); +} + +@Freezed(unionKey: "type", unionValueCase: FreezedUnionCase.snake) +class Dialogue with _$Dialogue implements RuleEntry { + const factory Dialogue({ + required String name, + required String id, + @Default([]) @JsonKey(name: "triggered_by") List triggeredBy, + @Default([]) List triggers, + required String speaker, + required String text, + @Default([]) List criteria, + @Default([]) List modifiers, + }) = _Dialogue; + + const factory Dialogue.spoken({ + required String name, + required String id, + @Default([]) @JsonKey(name: "triggered_by") List triggeredBy, + @Default([]) List triggers, + required String speaker, + required String text, + @Default([]) List criteria, + @Default([]) List modifiers, + @Default(40) int duration, + }) = SpokenDialogue; + + const factory Dialogue.option({ + required String name, + required String id, + @Default([]) @JsonKey(name: "triggered_by") List triggeredBy, + @Default([]) List triggers, + required String speaker, + required String text, + @Default([]) List criteria, + @Default([]) List modifiers, + @Default([]) List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/macos/Runner/Configs/AppInfo.xcconfig b/app/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000000..62717c80ec --- /dev/null +++ b/app/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = typewriter + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = me.gabber235.typewriter + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2022 me.gabber235. All rights reserved. diff --git a/app/macos/Runner/Configs/Debug.xcconfig b/app/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000000..36b0fd9464 --- /dev/null +++ b/app/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/app/macos/Runner/Configs/Release.xcconfig b/app/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000000..dff4f49561 --- /dev/null +++ b/app/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/app/macos/Runner/Configs/Warnings.xcconfig b/app/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000000..42bcbf4780 --- /dev/null +++ b/app/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/app/macos/Runner/DebugProfile.entitlements b/app/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000000..3ba6c1266f --- /dev/null +++ b/app/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/app/macos/Runner/Info.plist b/app/macos/Runner/Info.plist new file mode 100644 index 0000000000..4789daa6a4 --- /dev/null +++ b/app/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/app/macos/Runner/MainFlutterWindow.swift b/app/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000000..2722837ec9 --- /dev/null +++ b/app/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/app/macos/Runner/Release.entitlements b/app/macos/Runner/Release.entitlements new file mode 100644 index 0000000000..7a2230dc33 --- /dev/null +++ b/app/macos/Runner/Release.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/app/pubspec.lock b/app/pubspec.lock new file mode 100644 index 0000000000..645bc4fe8f --- /dev/null +++ b/app/pubspec.lock @@ -0,0 +1,712 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "47.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "4.7.0" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.1" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.1" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.9.0" + auto_size_text: + dependency: "direct main" + description: + name: auto_size_text + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + build: + dependency: transitive + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.dartlang.org" + source: hosted + version: "7.2.3" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + url: "https://pub.dartlang.org" + source: hosted + version: "8.4.1" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.3" + dropdown_search: + dependency: "direct main" + description: + name: dropdown_search + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.2" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.4" + file_picker: + dependency: "direct main" + description: + name: file_picker + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_hooks: + dependency: "direct main" + description: + name: flutter_hooks + url: "https://pub.dartlang.org" + source: hosted + version: "0.18.5+1" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" + flutter_riverpod: + dependency: transitive + description: + name: flutter_riverpod + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + font_awesome_flutter: + dependency: "direct main" + description: + name: font_awesome_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "10.2.1" + freezed: + dependency: "direct dev" + description: + name: freezed + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0+1" + freezed_annotation: + dependency: "direct main" + description: + name: freezed_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + graphview: + dependency: "direct main" + description: + name: graphview + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + hooks_riverpod: + dependency: "direct main" + description: + name: hooks_riverpod + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.1" + icons_launcher: + dependency: "direct dev" + description: + name: icons_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.0" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" + json_annotation: + dependency: "direct main" + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.6.0" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.1" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.12" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.20" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + rive: + dependency: "direct main" + description: + name: rive + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.1" + riverpod: + dependency: transitive + description: + name: riverpod + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.2" + source_helper: + dependency: transitive + description: + name: source_helper + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + state_notifier: + dependency: transitive + description: + name: state_notifier + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.2+1" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.12" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + universal_io: + dependency: transitive + description: + name: universal_io + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.7.0" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.0" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" +sdks: + dart: ">=2.18.0 <3.0.0" + flutter: ">=3.0.0" diff --git a/app/pubspec.yaml b/app/pubspec.yaml new file mode 100644 index 0000000000..1e29ebea52 --- /dev/null +++ b/app/pubspec.yaml @@ -0,0 +1,51 @@ +name: typewriter +description: Visual quest configuration +publish_to: 'none' +version: 1.0.0+1 + +environment: + sdk: '>=2.18.0 <3.0.0' + +dependencies: + flutter: + sdk: flutter + cupertino_icons: ^1.0.5 + freezed_annotation: ^2.1.0 + json_annotation: ^4.6.0 + graphview: ^1.1.1 + flutter_hooks: ^0.18.5+1 + hooks_riverpod: ^1.0.4 + auto_size_text: ^3.0.0 + google_fonts: ^3.0.1 + font_awesome_flutter: ^10.2.1 + file_picker: ^5.0.1 + rive: ^0.9.1 + dropdown_search: ^5.0.2 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.1 + build_runner: ^2.2.0 + freezed: ^2.1.0+1 + json_serializable: ^6.3.1 + icons_launcher: ^2.0.5 + +icons_launcher: + image_path: "assets/Typewriter.png" + platforms: + android: + enable: true + ios: + enable: true + macos: + enable: true + windows: + enable: true + linux: + enable: true + +flutter: + uses-material-design: true + assets: + - assets/ \ No newline at end of file diff --git a/app/snap/gui/app_icon.desktop b/app/snap/gui/app_icon.desktop new file mode 100644 index 0000000000..92a01f6aa9 --- /dev/null +++ b/app/snap/gui/app_icon.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Flutter Linux App +Comment=Flutter Linux launcher icon +Exec=app_icon +Icon=app_icon.png +Terminal=false +Type=Application +Categories=Entertainment; diff --git a/app/snap/gui/app_icon.png b/app/snap/gui/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..76e04e8639fb157dac629c6bfc8954526a511538 GIT binary patch literal 4887 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 literal 0 HcmV?d00001 diff --git a/app/web/favicon.png b/app/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..16ca03cfaf2dce5442a7ce9d06747c57d9843f0b GIT binary patch literal 632 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 RUjIYDQB~A}etc{i{6E9P$H)Kx literal 0 HcmV?d00001 diff --git a/app/web/icons/Icon-512.png b/app/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e819dc838a5b7f80091aadac910fb1daf7cb12 GIT binary patch literal 5598 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 literal 0 HcmV?d00001 diff --git a/app/web/icons/Icon-maskable-192.png b/app/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..38b66a6a42958701310a932cd58a25ab90e89ab3 GIT binary patch literal 4202 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 RUjIYDQB~A}etc{i{6E9P$H)Kx literal 0 HcmV?d00001 diff --git a/app/web/icons/Icon-maskable-512.png b/app/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e819dc838a5b7f80091aadac910fb1daf7cb12 GIT binary patch literal 5598 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 literal 0 HcmV?d00001 diff --git a/app/web/index.html b/app/web/index.html new file mode 100644 index 0000000000..9157fa0ffc --- /dev/null +++ b/app/web/index.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + typewriter + + + + + + + + + + diff --git a/app/web/manifest.json b/app/web/manifest.json new file mode 100644 index 0000000000..92eba9de98 --- /dev/null +++ b/app/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "typewriter", + "short_name": "typewriter", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "Visual quest configuration", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} \ No newline at end of file diff --git a/app/windows/.gitignore b/app/windows/.gitignore new file mode 100644 index 0000000000..d492d0d98c --- /dev/null +++ b/app/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/app/windows/CMakeLists.txt b/app/windows/CMakeLists.txt new file mode 100644 index 0000000000..c021da1614 --- /dev/null +++ b/app/windows/CMakeLists.txt @@ -0,0 +1,101 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(typewriter LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "typewriter") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/app/windows/flutter/CMakeLists.txt b/app/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000000..930d2071a3 --- /dev/null +++ b/app/windows/flutter/CMakeLists.txt @@ -0,0 +1,104 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/app/windows/flutter/generated_plugin_registrant.cc b/app/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000000..8b6d4680af --- /dev/null +++ b/app/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/app/windows/flutter/generated_plugin_registrant.h b/app/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000000..dc139d85a9 --- /dev/null +++ b/app/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/app/windows/flutter/generated_plugins.cmake b/app/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000000..b93c4c30c1 --- /dev/null +++ b/app/windows/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/app/windows/runner/CMakeLists.txt b/app/windows/runner/CMakeLists.txt new file mode 100644 index 0000000000..17411a8ab8 --- /dev/null +++ b/app/windows/runner/CMakeLists.txt @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/app/windows/runner/Runner.rc b/app/windows/runner/Runner.rc new file mode 100644 index 0000000000..ef32040fdc --- /dev/null +++ b/app/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "me.gabber235" "\0" + VALUE "FileDescription", "typewriter" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "typewriter" "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 me.gabber235. All rights reserved." "\0" + VALUE "OriginalFilename", "typewriter.exe" "\0" + VALUE "ProductName", "typewriter" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/app/windows/runner/flutter_window.cpp b/app/windows/runner/flutter_window.cpp new file mode 100644 index 0000000000..b43b9095ea --- /dev/null +++ b/app/windows/runner/flutter_window.cpp @@ -0,0 +1,61 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/app/windows/runner/flutter_window.h b/app/windows/runner/flutter_window.h new file mode 100644 index 0000000000..6da0652f05 --- /dev/null +++ b/app/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/app/windows/runner/main.cpp b/app/windows/runner/main.cpp new file mode 100644 index 0000000000..cb66728504 --- /dev/null +++ b/app/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.CreateAndShow(L"typewriter", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/app/windows/runner/resource.h b/app/windows/runner/resource.h new file mode 100644 index 0000000000..66a65d1e4a --- /dev/null +++ b/app/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/app/windows/runner/resources/app_icon.ico b/app/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..494f90438cce4018bfcbc3a5d88072d2e731e653 GIT binary patch literal 20349 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

smuMCAJrRoW!n7N^RQ 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

^-cAxYe82$Nv&ygS(x@=}%Un;-n0e$`X zxFy56qk^rU&mxPioUj>{^eGOIZH!@31t=6zlbx{J>l|U6vk&S``~e1SykSN}y*eTt zUpKi$uRCvVnA7J=ltV)8opV}``YiU7S9ghChV~qBYB<~4WCp5}!V}K~VNru1nE%?h zI>S9;WN8LK++Gt)bU@PrsE z$|cwr1AC-yV_7V*&h8di|D)K0ZViUQaDwCfAT=IG61~Xqde6c z_`;+#nX+Hv?84OCoPSlAYp^VPhjIJy{QN^aN(Ea`$Yp|>KM@!6n%$gSvKmSi7;oO15`IK~fXXEeOoFi4<>Q+(iFZkLejtjwrwi( zX5<1F;4l9V$RM$%fj+JVOPLzGogxcOqf-N}_4)@Bd&~K~-!y{=gFZUxu(_dBSsXno zf3>|`ln=Ze6y&K1f7bhb)`U6d3a)h6cT{L>Spg(flKZz z8qxQ==Vtf}Yx_l`v73W@ZqX8F6aH^509>?<9TxTrTv*Q}cFRe} zb`$ZDbuZI6+%US4L(}Uo=G2zekf21a-lw;ZEoJiZT%OKT9Lypy1(aZmVt`ru|0W0} zttXuI#;ITRw4V2_?cC@wNUzbsMeKLG21&cagkFygOp;%)uQTBGmbRWhAgyyEX@aCI zxTEufww=IxaOB3nKCy+ryGr^`BJbHN{md>m07M-J#pNx@#>|e^%#OO a+l3H#I<0FTZ8tr+cCrESYVGf1v3~>A<=FE8 literal 0 HcmV?d00001 diff --git a/app/windows/runner/runner.exe.manifest b/app/windows/runner/runner.exe.manifest new file mode 100644 index 0000000000..a42ea7687c --- /dev/null +++ b/app/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/app/windows/runner/utils.cpp b/app/windows/runner/utils.cpp new file mode 100644 index 0000000000..f5bf9fa0f5 --- /dev/null +++ b/app/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/app/windows/runner/utils.h b/app/windows/runner/utils.h new file mode 100644 index 0000000000..3879d54755 --- /dev/null +++ b/app/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/app/windows/runner/win32_window.cpp b/app/windows/runner/win32_window.cpp new file mode 100644 index 0000000000..c10f08dc7d --- /dev/null +++ b/app/windows/runner/win32_window.cpp @@ -0,0 +1,245 @@ +#include "win32_window.h" + +#include + +#include "resource.h" + +namespace { + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + FreeLibrary(user32_module); + } +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + return OnCreate(); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} diff --git a/app/windows/runner/win32_window.h b/app/windows/runner/win32_window.h new file mode 100644 index 0000000000..17ba431125 --- /dev/null +++ b/app/windows/runner/win32_window.h @@ -0,0 +1,98 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates and shows a win32 window with |title| and position and size using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size to will treat the width height passed in to this function + // as logical pixels and scale to appropriate for the default monitor. Returns + // true if the window was created successfully. + bool CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/design/Typewriter.png b/design/Typewriter.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d9144e8aee38ca0b26ef6251bb75161455d69d GIT binary patch literal 7799 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"buildAndMove") { + dependsOn("clean", "shadowJar") + + group = "build" + description = "Builds the jar and moves it to the server folder" + + // Move the jar from the build/libs folder to the server/plugins folder + doLast { + val jar = file("build/libs/%s-%s-all.jar".format(project.name, project.version)) + val server = file("server/plugins/%s.jar".format(project.name.capitalizeAsciiOnly())) + jar.copyTo(server, overwrite = true) + } +} \ No newline at end of file diff --git a/plugin/gradle.properties b/plugin/gradle.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugin/gradle/wrapper/gradle-wrapper.jar b/plugin/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/plugin/gradle/wrapper/gradle-wrapper.properties b/plugin/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..2e6e5897b5 --- /dev/null +++ b/plugin/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/plugin/gradlew b/plugin/gradlew new file mode 100755 index 0000000000..1b6c787337 --- /dev/null +++ b/plugin/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/plugin/gradlew.bat b/plugin/gradlew.bat new file mode 100644 index 0000000000..107acd32c4 --- /dev/null +++ b/plugin/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/plugin/settings.gradle.kts b/plugin/settings.gradle.kts new file mode 100644 index 0000000000..6d3a793a83 --- /dev/null +++ b/plugin/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "typewriter" diff --git a/plugin/src/main/kotlin/me/gabber235/typewriter/Typewriter.kt b/plugin/src/main/kotlin/me/gabber235/typewriter/Typewriter.kt new file mode 100644 index 0000000000..d33adaf1d6 --- /dev/null +++ b/plugin/src/main/kotlin/me/gabber235/typewriter/Typewriter.kt @@ -0,0 +1,55 @@ +package me.gabber235.typewriter + +import com.comphenix.protocol.ProtocolLibrary +import lirand.api.architecture.KotlinPlugin +import me.gabber235.typewriter.entry.EntryDatabase +import me.gabber235.typewriter.facts.FactDatabase +import me.gabber235.typewriter.interaction.ChatHistoryHandler +import me.gabber235.typewriter.interaction.InteractionHandler +import me.gabber235.typewriter.npc.NpcHandler +import net.kyori.adventure.platform.bukkit.BukkitAudiences + +class Typewriter : KotlinPlugin() { + companion object { + lateinit var plugin: Typewriter + private set + lateinit var adventure: BukkitAudiences + private set + } + + init { + plugin = this + } + + override fun onEnable() { + adventure = BukkitAudiences.create(this) + typeWriterCommand() + + if (!server.pluginManager.isPluginEnabled("ProtocolLib")) { + logger.warning("ProtocolLib is not enabled, Typewriter will not work without it. Shutting down...") + isEnabled = false + return + } + + EntryDatabase.loadEntries() + InteractionHandler.init() + FactDatabase.init() + + + ProtocolLibrary.getProtocolManager() + .addPacketListener(ChatHistoryHandler) + + if (server.pluginManager.isPluginEnabled("Citizens")) { + NpcHandler.init() + } + } + + val isFloodgateInstalled: Boolean by lazy { + plugin.server.pluginManager.isPluginEnabled("Floodgate") + } + + override fun onDisable() { + InteractionHandler.shutdown() + adventure.close() + } +} \ No newline at end of file diff --git a/plugin/src/main/kotlin/me/gabber235/typewriter/TypewriterCommand.kt b/plugin/src/main/kotlin/me/gabber235/typewriter/TypewriterCommand.kt new file mode 100644 index 0000000000..c6260d879a --- /dev/null +++ b/plugin/src/main/kotlin/me/gabber235/typewriter/TypewriterCommand.kt @@ -0,0 +1,58 @@ +package me.gabber235.typewriter + +import com.mojang.brigadier.arguments.StringArgumentType.string +import lirand.api.dsl.command.builders.command +import lirand.api.dsl.command.types.PlayerType +import me.gabber235.typewriter.entry.EntryDatabase +import me.gabber235.typewriter.npc.TypeWriterTrait +import me.gabber235.typewriter.utils.msg +import net.citizensnpcs.api.CitizensAPI +import net.citizensnpcs.api.npc.NPC +import org.bukkit.command.CommandSender +import org.bukkit.plugin.Plugin + +fun Plugin.typeWriterCommand() = command("typewriter") { + requiresPermissions("typewriter.use") + alias("tw") + + literal("reload") { + executes { + source.msg("Reloading configuration...") + EntryDatabase.loadEntries() + source.msg("Configuration reloaded!") + } + } + + if (server.pluginManager.isPluginEnabled("Citizens")) { + literal("npc") { + literal("identifier") { + argument("name", string()) { name -> + fun NPC?.setIdentifier(source: CommandSender, name: String) { + if (this == null) { + source.msg("No NPC selected!") + return + } + + val trait = this.getOrAddTrait(TypeWriterTrait::class.java) + trait.identifier = name + + source.msg("Identifier set to $name") + } + + executesPlayer { + val npc = CitizensAPI.getDefaultNPCSelector().getSelected(source) + npc.setIdentifier(source, name.get()) + } + + + argument("target", PlayerType.Instance) { player -> + executes { + val npc = CitizensAPI.getDefaultNPCSelector().getSelected(player.get()) + npc.setIdentifier(source, name.get()) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/plugin/src/main/kotlin/me/gabber235/typewriter/entry/Entry.kt b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/Entry.kt new file mode 100644 index 0000000000..bcae5e3ede --- /dev/null +++ b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/Entry.kt @@ -0,0 +1,63 @@ +package me.gabber235.typewriter.entry + +import com.google.gson.annotations.SerializedName +import me.gabber235.typewriter.facts.Fact + +interface Entry { + val id: String + val name: String + val triggers: List +} + +interface RuleEntry : Entry { + val criteria: List + val modifiers: List +} + +enum class CriteriaOperator { + @SerializedName("==") + EQUALS, + + @SerializedName("<") + LESS_THAN, + + @SerializedName(">") + GREATER_THAN, + + @SerializedName("<=") + LER_THAN_OR_EQUAL, + + @SerializedName(">=") + GREATER_THAN_OR_EQUAL, +} + +data class Criteria( + val fact: String, + val operator: CriteriaOperator, + val value: Int, +) { + fun isValid(facts: Set): Boolean { + val value = facts.find { it.name == this.fact }?.value ?: 0 + return when (operator) { + CriteriaOperator.EQUALS -> value == this.value + CriteriaOperator.LESS_THAN -> value < this.value + CriteriaOperator.GREATER_THAN -> value > this.value + CriteriaOperator.LER_THAN_OR_EQUAL -> value <= this.value + CriteriaOperator.GREATER_THAN_OR_EQUAL -> value >= this.value + } + } +} + +enum class ModifierOperator { + @SerializedName("=") + SET, + + @SerializedName("+") + ADD; +} + +data class Modifier( + val fact: String, + val operator: ModifierOperator, + val value: Int, +) diff --git a/plugin/src/main/kotlin/me/gabber235/typewriter/entry/EntryDatabase.kt b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/EntryDatabase.kt new file mode 100644 index 0000000000..b26645648e --- /dev/null +++ b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/EntryDatabase.kt @@ -0,0 +1,73 @@ +package me.gabber235.typewriter.entry + +import com.google.gson.GsonBuilder +import com.google.gson.stream.JsonReader +import me.gabber235.typewriter.Typewriter +import me.gabber235.typewriter.entry.dialogue.DialogueEntry +import me.gabber235.typewriter.entry.dialogue.entries.OptionDialogueEntry +import me.gabber235.typewriter.entry.dialogue.entries.SpokenDialogueEntry +import me.gabber235.typewriter.entry.event.EventEntry +import me.gabber235.typewriter.entry.event.entries.NpcEventEntry +import me.gabber235.typewriter.facts.Fact +import me.gabber235.typewriter.facts.FactEntry +import me.gabber235.typewriter.utils.RuntimeTypeAdapterFactory +import java.io.File +import kotlin.reflect.KClass + +object EntryDatabase { + private var facts = listOf() + private var events = listOf() + private var dialogue = listOf() + + fun loadEntries() { + val dir = Typewriter.plugin.dataFolder["pages"] + if (!dir.exists()) { + dir.mkdirs() + } + + val pages = dir.listFiles { file -> file.name.endsWith(".json") }?.map { file -> + val dialogueReader = JsonReader(file.reader()) + dialogueReader.parsePage() + } + + this.facts = pages?.flatMap { it.facts } ?: listOf() + this.events = pages?.flatMap { it.events } ?: listOf() + this.dialogue = pages?.flatMap { it.dialogue } ?: listOf() + + println("Loaded ${facts.size} facts, ${events.size} events and ${dialogue.size} dialogue entries") + } + + fun findEventEntries(klass: KClass, predicate: (T) -> Boolean): List { + return events.filterIsInstance(klass.java).filter(predicate) + } + + fun findDialogue(trigger: String, facts: Set): DialogueEntry? { + val rules = dialogue.filter { trigger in it.triggerdBy }.sortedByDescending { it.criteria.size } + return rules.find { rule -> rule.criteria.matches(facts) } + } +} + +private val eventFactory = RuntimeTypeAdapterFactory.of(EventEntry::class.java) + .registerSubtype(NpcEventEntry::class.java, "npc_interact") + +private val dialogueFactory = RuntimeTypeAdapterFactory.of(DialogueEntry::class.java) + .registerSubtype(SpokenDialogueEntry::class.java, "spoken") + .registerSubtype(OptionDialogueEntry::class.java, "option") + +private val gson = GsonBuilder() + .registerTypeAdapterFactory(eventFactory) + .registerTypeAdapterFactory(dialogueFactory) + .create() + +private fun JsonReader.parsePage(): Page = + gson.fromJson(this, Page::class.java) + +private class Page( + val facts: List, + val events: List, + val dialogue: List +) + +private operator fun File.get(name: String): File = File(this, name) + +fun Iterable.matches(facts: Set): Boolean = all { it.isValid(facts) } \ No newline at end of file diff --git a/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/DialogueEntry.kt b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/DialogueEntry.kt new file mode 100644 index 0000000000..33e9ac77c2 --- /dev/null +++ b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/DialogueEntry.kt @@ -0,0 +1,9 @@ +package me.gabber235.typewriter.entry.dialogue + +import me.gabber235.typewriter.entry.RuleEntry + +interface DialogueEntry : RuleEntry { + val text: String + val triggerdBy: List +} + diff --git a/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/DialogueSequence.kt b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/DialogueSequence.kt new file mode 100644 index 0000000000..8f628d4c5d --- /dev/null +++ b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/DialogueSequence.kt @@ -0,0 +1,54 @@ +package me.gabber235.typewriter.entry.dialogue + +import me.gabber235.typewriter.entry.dialogue.messengers.MessengerFinder +import me.gabber235.typewriter.entry.dialogue.messengers.MessengerState +import me.gabber235.typewriter.entry.event.Event +import me.gabber235.typewriter.facts.FactDatabase +import me.gabber235.typewriter.interaction.InteractionHandler +import org.bukkit.entity.Player + +class DialogueSequence(private val player: Player, initialEntry: DialogueEntry) { + + private var currentEntry: DialogueEntry = initialEntry + private var currentMessenger = MessengerFinder.findMessenger(player, initialEntry) + private var cycle = 0 + + val triggers: List + get() = currentMessenger.triggers + + fun init() { + cycle = 0 + currentMessenger.init(player) + tick() + } + + private fun cleanupEntry(final: Boolean) { + val messenger = currentMessenger + messenger.dispose(player) + if (final) messenger.end(player) + + FactDatabase.modify(player.uniqueId, messenger.modifiers) + } + + fun tick() { + currentMessenger.tick(player, cycle++) + + if (currentMessenger.state == MessengerState.FINISHED) { + InteractionHandler.triggerEvent(Event("system.dialogue.next", player)) + } else if (currentMessenger.state == MessengerState.CANCELLED) { + InteractionHandler.triggerEvent(Event("system.dialogue.end", player)) + } + } + + fun next(nextEntry: DialogueEntry): Boolean { + cleanupEntry(false) + currentEntry = nextEntry + currentMessenger = MessengerFinder.findMessenger(player, nextEntry) + init() + return true + } + + fun end() { + cleanupEntry(true) + } +} \ No newline at end of file diff --git a/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/entries/OptionDialogueEntry.kt b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/entries/OptionDialogueEntry.kt new file mode 100644 index 0000000000..4cf20557f9 --- /dev/null +++ b/plugin/src/main/kotlin/me/gabber235/typewriter/entry/dialogue/entries/OptionDialogueEntry.kt @@ -0,0 +1,26 @@ +package me.gabber235.typewriter.entry.dialogue.entries + +import com.google.gson.annotations.SerializedName +import me.gabber235.typewriter.entry.Criteria +import me.gabber235.typewriter.entry.Modifier +import me.gabber235.typewriter.entry.dialogue.DialogueEntry + +class OptionDialogueEntry( + override val id: String = "", + override val name: String = "", + @SerializedName("triggered_by") + override val triggerdBy: List = emptyList(), + override val criteria: List = emptyList(), + override val triggers: List = emptyList(), + override val modifiers: List = emptyList(), + override val text: String = "", + val speaker: String = "", + val options: List