create-pixi-vn 1.6.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/template-nqtr-react-vite-muijoy/README.md +1 -0
- package/template-nqtr-react-vite-muijoy/package.json +28 -25
- package/template-nqtr-react-vite-muijoy/src/App.tsx +9 -1
- package/template-nqtr-react-vite-muijoy/src/AppRoutes.tsx +5 -2
- package/template-nqtr-react-vite-muijoy/src/Home.tsx +3 -3
- package/template-nqtr-react-vite-muijoy/src/assets/manifest.ts +18 -15
- package/template-nqtr-react-vite-muijoy/src/components/MenuButton.tsx +11 -1
- package/template-nqtr-react-vite-muijoy/src/components/ModalDialog.tsx +20 -23
- package/template-nqtr-react-vite-muijoy/src/components/NqtrRoundIconButton.tsx +18 -17
- package/template-nqtr-react-vite-muijoy/src/components/RoundIconButton.tsx +5 -0
- package/template-nqtr-react-vite-muijoy/src/components/VisibilityButton.tsx +46 -0
- package/template-nqtr-react-vite-muijoy/src/hooks/useGameProps.ts +10 -0
- package/template-nqtr-react-vite-muijoy/src/hooks/useKeyboardDetector.ts +1 -15
- package/template-nqtr-react-vite-muijoy/src/hooks/useNQTRDetector.tsx +39 -36
- package/template-nqtr-react-vite-muijoy/src/hooks/useNarrationFunctions.ts +6 -0
- package/template-nqtr-react-vite-muijoy/src/hooks/useQueryNQTR.ts +13 -48
- package/template-nqtr-react-vite-muijoy/src/hooks/useTimeTracker.ts +48 -0
- package/template-nqtr-react-vite-muijoy/src/index.css +1 -0
- package/template-nqtr-react-vite-muijoy/src/labels/index.ts +5 -0
- package/template-nqtr-react-vite-muijoy/src/labels/sleepNapLabels.ts +33 -17
- package/template-nqtr-react-vite-muijoy/src/labels/startLabel.ts +2 -2
- package/template-nqtr-react-vite-muijoy/src/labels/variousActionsLabels.ts +26 -20
- package/template-nqtr-react-vite-muijoy/src/locales/strings_en.json +3 -1
- package/template-nqtr-react-vite-muijoy/src/main.tsx +2 -24
- package/template-nqtr-react-vite-muijoy/src/models/MultiTypeSprite.ts +11 -0
- package/template-nqtr-react-vite-muijoy/src/models/{ImageTimeSlots.ts → TimeSlotsImage.ts} +1 -1
- package/template-nqtr-react-vite-muijoy/src/models/nqtr/Activity.ts +22 -16
- package/template-nqtr-react-vite-muijoy/src/models/nqtr/Commitment.ts +33 -25
- package/template-nqtr-react-vite-muijoy/src/models/nqtr/Location.ts +23 -15
- package/template-nqtr-react-vite-muijoy/src/models/nqtr/Map.ts +12 -5
- package/template-nqtr-react-vite-muijoy/src/models/nqtr/Quest.ts +4 -7
- package/template-nqtr-react-vite-muijoy/src/models/nqtr/Room.ts +18 -11
- package/template-nqtr-react-vite-muijoy/src/models/nqtr/Stage.ts +9 -10
- package/template-nqtr-react-vite-muijoy/src/nqtr.d.ts +26 -18
- package/template-nqtr-react-vite-muijoy/src/pixi-vn.d.ts +19 -0
- package/template-nqtr-react-vite-muijoy/src/{Imports.tsx → providers/RootProvider.tsx} +25 -25
- package/template-nqtr-react-vite-muijoy/src/screens/NarrationScreen.tsx +3 -1
- package/template-nqtr-react-vite-muijoy/src/screens/QuickTools.tsx +71 -91
- package/template-nqtr-react-vite-muijoy/src/screens/nqtr/MapScreen.tsx +24 -9
- package/template-nqtr-react-vite-muijoy/src/screens/nqtr/MemoScreen.tsx +3 -4
- package/template-nqtr-react-vite-muijoy/src/screens/nqtr/NqtrQuickTools.tsx +0 -3
- package/template-nqtr-react-vite-muijoy/src/screens/nqtr/QuickActivities.tsx +57 -53
- package/template-nqtr-react-vite-muijoy/src/screens/nqtr/QuickRooms.tsx +7 -10
- package/template-nqtr-react-vite-muijoy/src/screens/nqtr/TimeScreen.tsx +10 -7
- package/template-nqtr-react-vite-muijoy/src/stores/useInterfaceStore.ts +7 -12
- package/template-nqtr-react-vite-muijoy/src/utils/assets-utility.ts +30 -19
- package/template-nqtr-react-vite-muijoy/src/utils/image-utility.ts +13 -0
- package/template-nqtr-react-vite-muijoy/src/utils/nqtr-utility.ts +25 -0
- package/template-nqtr-react-vite-muijoy/src/values/{activity.tsx → activities.tsx} +12 -7
- package/template-nqtr-react-vite-muijoy/src/values/characters.ts +2 -3
- package/template-nqtr-react-vite-muijoy/src/values/index.ts +6 -0
- package/template-nqtr-react-vite-muijoy/src/values/locations.tsx +3 -3
- package/template-nqtr-react-vite-muijoy/src/values/maps.tsx +3 -3
- package/{template-nqtr-react-vite-muijoy-ink/src/values/quests/alice/quests.tsx → template-nqtr-react-vite-muijoy/src/values/quests/aliceQuest.tsx} +17 -15
- package/template-nqtr-react-vite-muijoy/src/values/quests/index.ts +1 -0
- package/template-nqtr-react-vite-muijoy/src/values/rooms.tsx +10 -10
- package/template-nqtr-react-vite-muijoy/src/values/routine.tsx +17 -11
- package/template-nqtr-react-vite-muijoy-ink/.vscode/extensions.json +2 -1
- package/template-nqtr-react-vite-muijoy-ink/README.md +39 -1
- package/template-nqtr-react-vite-muijoy-ink/package.json +28 -25
- package/template-nqtr-react-vite-muijoy-ink/src/App.tsx +11 -1
- package/template-nqtr-react-vite-muijoy-ink/src/AppRoutes.tsx +5 -2
- package/template-nqtr-react-vite-muijoy-ink/src/Home.tsx +5 -3
- package/template-nqtr-react-vite-muijoy-ink/src/assets/manifest.ts +10 -16
- package/template-nqtr-react-vite-muijoy-ink/src/components/NqtrRoundIconButton.tsx +18 -17
- package/template-nqtr-react-vite-muijoy-ink/src/components/RoundIconButton.tsx +5 -0
- package/template-nqtr-react-vite-muijoy-ink/src/components/VisibilityButton.tsx +46 -0
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useGameProps.ts +4 -0
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useInkInitialization.tsx +10 -0
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useKeyboardDetector.ts +1 -15
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useNQTRDetector.tsx +39 -36
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useNarrationFunctions.ts +6 -0
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useQueryNQTR.ts +13 -48
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useTimeTracker.ts +48 -0
- package/template-nqtr-react-vite-muijoy-ink/src/i18n.ts +12 -0
- package/template-nqtr-react-vite-muijoy-ink/src/ink/variousActionsLabels.ink +24 -0
- package/template-nqtr-react-vite-muijoy-ink/src/ink.d.ts +4 -0
- package/template-nqtr-react-vite-muijoy-ink/src/labels/index.ts +5 -0
- package/template-nqtr-react-vite-muijoy-ink/src/labels/sleepNapLabels.ts +33 -17
- package/template-nqtr-react-vite-muijoy-ink/src/labels/startLabel.ts +2 -2
- package/template-nqtr-react-vite-muijoy-ink/src/labels/variousActionsLabels.ts +2 -51
- package/template-nqtr-react-vite-muijoy-ink/src/locales/strings_en.json +3 -1
- package/template-nqtr-react-vite-muijoy-ink/src/main-ink.ink +2 -0
- package/template-nqtr-react-vite-muijoy-ink/src/main.tsx +1 -21
- package/template-nqtr-react-vite-muijoy-ink/src/models/MultiTypeSprite.ts +11 -0
- package/{template-nqtr-react-vite-muijoy-tauri/src/models/ImageTimeSlots.ts → template-nqtr-react-vite-muijoy-ink/src/models/TimeSlotsImage.ts} +1 -1
- package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Activity.ts +22 -16
- package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Commitment.ts +33 -25
- package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Location.ts +23 -15
- package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Map.ts +12 -5
- package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Quest.ts +4 -7
- package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Room.ts +18 -11
- package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Stage.ts +9 -10
- package/template-nqtr-react-vite-muijoy-ink/src/nqtr.d.ts +26 -18
- package/template-nqtr-react-vite-muijoy-ink/src/pixi-vn.d.ts +14 -0
- package/{template-nqtr-react-vite-muijoy-tauri/src/Imports.tsx → template-nqtr-react-vite-muijoy-ink/src/providers/RootProvider.tsx} +25 -25
- package/template-nqtr-react-vite-muijoy-ink/src/screens/MainMenu.tsx +1 -2
- package/template-nqtr-react-vite-muijoy-ink/src/screens/QuickTools.tsx +71 -91
- package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/MapScreen.tsx +21 -6
- package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/MemoScreen.tsx +3 -4
- package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/NqtrQuickTools.tsx +0 -3
- package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/QuickActivities.tsx +57 -60
- package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/QuickRooms.tsx +7 -10
- package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/TimeScreen.tsx +10 -7
- package/template-nqtr-react-vite-muijoy-ink/src/stores/useInterfaceStore.ts +7 -12
- package/template-nqtr-react-vite-muijoy-ink/src/utils/assets-utility.ts +30 -19
- package/template-nqtr-react-vite-muijoy-ink/src/utils/image-utility.ts +13 -0
- package/template-nqtr-react-vite-muijoy-ink/src/utils/ink-utility.ts +52 -0
- package/template-nqtr-react-vite-muijoy-ink/src/utils/nqtr-utility.ts +25 -0
- package/{template-nqtr-react-vite-muijoy-tauri/src/values/activity.tsx → template-nqtr-react-vite-muijoy-ink/src/values/activities.tsx} +1 -1
- package/template-nqtr-react-vite-muijoy-ink/src/values/index.ts +6 -0
- package/template-nqtr-react-vite-muijoy-ink/src/values/locations.tsx +3 -3
- package/template-nqtr-react-vite-muijoy-ink/src/values/maps.tsx +3 -3
- package/{template-nqtr-react-vite-muijoy-ink-tauri/src/values/quests/alice/quests.tsx → template-nqtr-react-vite-muijoy-ink/src/values/quests/aliceQuest.tsx} +17 -15
- package/template-nqtr-react-vite-muijoy-ink/src/values/quests/index.ts +1 -0
- package/template-nqtr-react-vite-muijoy-ink/src/values/rooms.tsx +10 -10
- package/template-nqtr-react-vite-muijoy-ink/src/values/routine.tsx +14 -9
- package/template-nqtr-react-vite-muijoy-ink/vite.config.ts +1 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/.vscode/extensions.json +5 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/.vscode/launch.json +30 -2
- package/template-nqtr-react-vite-muijoy-ink-tauri/.vscode/tasks.json +29 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/README.md +204 -113
- package/template-nqtr-react-vite-muijoy-ink-tauri/_github/workflows/tauri.yml +129 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/_gitignore +1 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/package.json +33 -26
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/App.tsx +11 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/AppRoutes.tsx +5 -2
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/Home.tsx +5 -3
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/assets/manifest.ts +10 -16
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/components/NqtrRoundIconButton.tsx +18 -17
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/components/RoundIconButton.tsx +5 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/components/VisibilityButton.tsx +46 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useGameProps.ts +4 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useInkInitialization.tsx +10 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useKeyboardDetector.ts +1 -15
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useNQTRDetector.tsx +39 -36
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useNarrationFunctions.ts +6 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useQueryIsFullModeScreen.ts +7 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useQueryNQTR.ts +13 -48
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useTimeTracker.ts +48 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/i18n.ts +12 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/ink/variousActionsLabels.ink +24 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/ink.d.ts +4 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/index.ts +5 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/sleepNapLabels.ts +33 -17
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/startLabel.ts +2 -2
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/variousActionsLabels.ts +2 -51
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/locales/strings_en.json +3 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/main-ink.ink +2 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/main.tsx +1 -21
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/MultiTypeSprite.ts +11 -0
- package/{template-nqtr-react-vite-muijoy-ink/src/models/ImageTimeSlots.ts → template-nqtr-react-vite-muijoy-ink-tauri/src/models/TimeSlotsImage.ts} +1 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Activity.ts +22 -16
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Commitment.ts +33 -25
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Location.ts +23 -15
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Map.ts +12 -5
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Quest.ts +4 -7
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Room.ts +18 -11
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Stage.ts +9 -10
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/nqtr.d.ts +26 -18
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/pixi-vn.d.ts +14 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/{Imports.tsx → providers/RootProvider.tsx} +25 -25
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/MainMenu.tsx +1 -2
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/QuickTools.tsx +71 -91
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/MapScreen.tsx +21 -6
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/MemoScreen.tsx +3 -4
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/NqtrQuickTools.tsx +0 -3
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/QuickActivities.tsx +57 -60
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/QuickRooms.tsx +7 -10
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/TimeScreen.tsx +10 -7
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/settings/FullScreenSettings.tsx +10 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/stores/useInterfaceStore.ts +7 -12
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/assets-utility.ts +30 -19
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/image-utility.ts +13 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/ink-utility.ts +52 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/nqtr-utility.ts +25 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/{activity.tsx → activities.tsx} +1 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/index.ts +6 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/locations.tsx +3 -3
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/maps.tsx +3 -3
- package/{template-nqtr-react-vite-muijoy-tauri/src/values/quests/alice/quests.tsx → template-nqtr-react-vite-muijoy-ink-tauri/src/values/quests/aliceQuest.tsx} +17 -15
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/quests/index.ts +1 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/rooms.tsx +10 -10
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/routine.tsx +14 -9
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/Cargo.toml +25 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/build.rs +3 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/capabilities/default.json +11 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/128x128.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/128x128@2x.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/32x32.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square107x107Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square142x142Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square150x150Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square284x284Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square30x30Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square310x310Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square44x44Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square71x71Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/Square89x89Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/StoreLogo.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/icon.icns +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/icon.ico +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/icons/icon.png +0 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/src/lib.rs +14 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/src/main.rs +6 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src-tauri/tauri.conf.json +37 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/vite.config.ts +25 -0
- package/template-nqtr-react-vite-muijoy-tauri/.vscode/extensions.json +4 -1
- package/template-nqtr-react-vite-muijoy-tauri/.vscode/launch.json +30 -2
- package/template-nqtr-react-vite-muijoy-tauri/.vscode/tasks.json +29 -0
- package/template-nqtr-react-vite-muijoy-tauri/README.md +167 -113
- package/template-nqtr-react-vite-muijoy-tauri/_github/workflows/tauri.yml +129 -0
- package/template-nqtr-react-vite-muijoy-tauri/_gitignore +1 -0
- package/template-nqtr-react-vite-muijoy-tauri/package.json +32 -26
- package/template-nqtr-react-vite-muijoy-tauri/src/App.tsx +9 -1
- package/template-nqtr-react-vite-muijoy-tauri/src/AppRoutes.tsx +5 -2
- package/template-nqtr-react-vite-muijoy-tauri/src/Home.tsx +3 -3
- package/template-nqtr-react-vite-muijoy-tauri/src/assets/manifest.ts +10 -16
- package/template-nqtr-react-vite-muijoy-tauri/src/components/NqtrRoundIconButton.tsx +18 -17
- package/template-nqtr-react-vite-muijoy-tauri/src/components/RoundIconButton.tsx +5 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/components/VisibilityButton.tsx +46 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useGameProps.ts +4 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useKeyboardDetector.ts +1 -15
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useNQTRDetector.tsx +39 -36
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useNarrationFunctions.ts +6 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useQueryIsFullModeScreen.ts +7 -1
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useQueryNQTR.ts +13 -48
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useTimeTracker.ts +48 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/labels/index.ts +5 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/labels/sleepNapLabels.ts +33 -17
- package/template-nqtr-react-vite-muijoy-tauri/src/labels/startLabel.ts +2 -2
- package/template-nqtr-react-vite-muijoy-tauri/src/labels/variousActionsLabels.ts +2 -2
- package/template-nqtr-react-vite-muijoy-tauri/src/locales/strings_en.json +3 -1
- package/template-nqtr-react-vite-muijoy-tauri/src/main.tsx +1 -21
- package/template-nqtr-react-vite-muijoy-tauri/src/models/MultiTypeSprite.ts +11 -0
- package/{template-nqtr-react-vite-muijoy-ink-tauri/src/models/ImageTimeSlots.ts → template-nqtr-react-vite-muijoy-tauri/src/models/TimeSlotsImage.ts} +1 -1
- package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Activity.ts +22 -16
- package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Commitment.ts +33 -25
- package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Location.ts +23 -15
- package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Map.ts +12 -5
- package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Quest.ts +4 -7
- package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Room.ts +18 -11
- package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Stage.ts +9 -10
- package/template-nqtr-react-vite-muijoy-tauri/src/nqtr.d.ts +26 -18
- package/template-nqtr-react-vite-muijoy-tauri/src/pixi-vn.d.ts +14 -0
- package/{template-nqtr-react-vite-muijoy-ink/src/Imports.tsx → template-nqtr-react-vite-muijoy-tauri/src/providers/RootProvider.tsx} +25 -25
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/QuickTools.tsx +71 -91
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/MapScreen.tsx +21 -6
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/MemoScreen.tsx +3 -4
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/NqtrQuickTools.tsx +0 -3
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/QuickActivities.tsx +57 -60
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/QuickRooms.tsx +7 -10
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/TimeScreen.tsx +10 -7
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/settings/FullScreenSettings.tsx +10 -1
- package/template-nqtr-react-vite-muijoy-tauri/src/stores/useInterfaceStore.ts +7 -12
- package/template-nqtr-react-vite-muijoy-tauri/src/utils/assets-utility.ts +30 -19
- package/template-nqtr-react-vite-muijoy-tauri/src/utils/image-utility.ts +13 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/utils/nqtr-utility.ts +25 -0
- package/{template-nqtr-react-vite-muijoy-ink/src/values/activity.tsx → template-nqtr-react-vite-muijoy-tauri/src/values/activities.tsx} +1 -1
- package/template-nqtr-react-vite-muijoy-tauri/src/values/index.ts +6 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/values/locations.tsx +3 -3
- package/template-nqtr-react-vite-muijoy-tauri/src/values/maps.tsx +3 -3
- package/{template-nqtr-react-vite-muijoy/src/values/quests/alice/quests.tsx → template-nqtr-react-vite-muijoy-tauri/src/values/quests/aliceQuest.tsx} +17 -15
- package/template-nqtr-react-vite-muijoy-tauri/src/values/quests/index.ts +1 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/values/rooms.tsx +10 -10
- package/template-nqtr-react-vite-muijoy-tauri/src/values/routine.tsx +14 -9
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/Cargo.toml +25 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/build.rs +3 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/capabilities/default.json +11 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/128x128.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/128x128@2x.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/32x32.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square107x107Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square142x142Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square150x150Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square284x284Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square30x30Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square310x310Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square44x44Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square71x71Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/Square89x89Logo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/StoreLogo.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/icon.icns +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/icon.ico +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/icons/icon.png +0 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/src/lib.rs +14 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/src/main.rs +6 -0
- package/template-nqtr-react-vite-muijoy-tauri/src-tauri/tauri.conf.json +37 -0
- package/template-nqtr-react-vite-muijoy-tauri/vite.config.ts +24 -0
- package/template-react-vite-muijoy/package.json +24 -24
- package/template-react-vite-muijoy/src/App.tsx +1 -1
- package/template-react-vite-muijoy/src/AppRoutes.tsx +4 -2
- package/template-react-vite-muijoy/src/Home.tsx +3 -3
- package/template-react-vite-muijoy/src/components/VisibilityButton.tsx +46 -0
- package/template-react-vite-muijoy/src/hooks/useKeyboardDetector.ts +1 -15
- package/template-react-vite-muijoy/src/hooks/useNarrationFunctions.ts +6 -0
- package/template-react-vite-muijoy/src/labels/index.ts +2 -0
- package/template-react-vite-muijoy/src/main.tsx +0 -1
- package/template-react-vite-muijoy/src/providers/RootProvider.tsx +25 -0
- package/template-react-vite-muijoy/src/screens/QuickTools.tsx +71 -91
- package/template-react-vite-muijoy/src/stores/useInterfaceStore.ts +7 -12
- package/template-react-vite-muijoy/src/utils/assets-utility.ts +11 -0
- package/template-react-vite-muijoy/src/values/index.ts +1 -0
- package/template-react-vite-muijoy-ink/README.md +1 -0
- package/template-react-vite-muijoy-ink/package.json +25 -25
- package/template-react-vite-muijoy-ink/src/App.tsx +8 -1
- package/template-react-vite-muijoy-ink/src/AppRoutes.tsx +4 -2
- package/template-react-vite-muijoy-ink/src/Home.tsx +3 -3
- package/template-react-vite-muijoy-ink/src/components/VisibilityButton.tsx +46 -0
- package/template-react-vite-muijoy-ink/src/hooks/useKeyboardDetector.ts +1 -15
- package/template-react-vite-muijoy-ink/src/hooks/useNarrationFunctions.ts +6 -0
- package/template-react-vite-muijoy-ink/src/main.tsx +0 -2
- package/template-react-vite-muijoy-ink/src/providers/RootProvider.tsx +25 -0
- package/template-react-vite-muijoy-ink/src/screens/QuickTools.tsx +71 -91
- package/template-react-vite-muijoy-ink/src/stores/useInterfaceStore.ts +7 -12
- package/template-react-vite-muijoy-ink/src/utils/assets-utility.ts +11 -0
- package/template-react-vite-muijoy-ink/src/values/index.ts +1 -0
- package/template-react-vite-muijoy-ink-tauri/README.md +1 -0
- package/template-react-vite-muijoy-ink-tauri/package.json +25 -25
- package/template-react-vite-muijoy-ink-tauri/src/App.tsx +8 -1
- package/template-react-vite-muijoy-ink-tauri/src/AppRoutes.tsx +4 -2
- package/template-react-vite-muijoy-ink-tauri/src/Home.tsx +3 -3
- package/template-react-vite-muijoy-ink-tauri/src/components/VisibilityButton.tsx +46 -0
- package/template-react-vite-muijoy-ink-tauri/src/hooks/useKeyboardDetector.ts +1 -15
- package/template-react-vite-muijoy-ink-tauri/src/hooks/useNarrationFunctions.ts +6 -0
- package/template-react-vite-muijoy-ink-tauri/src/main.tsx +0 -2
- package/template-react-vite-muijoy-ink-tauri/src/providers/RootProvider.tsx +25 -0
- package/template-react-vite-muijoy-ink-tauri/src/screens/QuickTools.tsx +71 -91
- package/template-react-vite-muijoy-ink-tauri/src/stores/useInterfaceStore.ts +7 -12
- package/template-react-vite-muijoy-ink-tauri/src/utils/assets-utility.ts +11 -0
- package/template-react-vite-muijoy-ink-tauri/src/values/index.ts +1 -0
- package/template-react-vite-muijoy-tauri/README.md +1 -0
- package/template-react-vite-muijoy-tauri/package.json +24 -24
- package/template-react-vite-muijoy-tauri/src/App.tsx +1 -1
- package/template-react-vite-muijoy-tauri/src/AppRoutes.tsx +4 -2
- package/template-react-vite-muijoy-tauri/src/Home.tsx +3 -3
- package/template-react-vite-muijoy-tauri/src/components/VisibilityButton.tsx +46 -0
- package/template-react-vite-muijoy-tauri/src/hooks/useKeyboardDetector.ts +1 -15
- package/template-react-vite-muijoy-tauri/src/hooks/useNarrationFunctions.ts +6 -0
- package/template-react-vite-muijoy-tauri/src/labels/index.ts +2 -0
- package/template-react-vite-muijoy-tauri/src/main.tsx +0 -1
- package/template-react-vite-muijoy-tauri/src/providers/RootProvider.tsx +25 -0
- package/template-react-vite-muijoy-tauri/src/screens/QuickTools.tsx +71 -91
- package/template-react-vite-muijoy-tauri/src/stores/useInterfaceStore.ts +7 -12
- package/template-react-vite-muijoy-tauri/src/utils/assets-utility.ts +11 -0
- package/template-react-vite-muijoy-tauri/src/values/index.ts +1 -0
- package/template-nqtr-react-vite-muijoy/src/utils/component-utility.ts +0 -29
- package/template-nqtr-react-vite-muijoy/src/utils/time-utility.ts +0 -29
- package/template-nqtr-react-vite-muijoy-ink/src/utils/component-utility.ts +0 -29
- package/template-nqtr-react-vite-muijoy-ink/src/utils/time-utility.ts +0 -29
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/component-utility.ts +0 -29
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/time-utility.ts +0 -29
- package/template-nqtr-react-vite-muijoy-tauri/src/utils/component-utility.ts +0 -29
- package/template-nqtr-react-vite-muijoy-tauri/src/utils/time-utility.ts +0 -29
- package/template-react-vite-muijoy/src/Imports.tsx +0 -25
- package/template-react-vite-muijoy/src/utils/component-utility.ts +0 -29
- package/template-react-vite-muijoy-ink/src/Imports.tsx +0 -25
- package/template-react-vite-muijoy-ink/src/utils/component-utility.ts +0 -29
- package/template-react-vite-muijoy-ink-tauri/src/Imports.tsx +0 -25
- package/template-react-vite-muijoy-ink-tauri/src/utils/component-utility.ts +0 -29
- package/template-react-vite-muijoy-tauri/src/Imports.tsx +0 -25
- package/template-react-vite-muijoy-tauri/src/utils/component-utility.ts +0 -29
- /package/template-nqtr-react-vite-muijoy/src/labels/{utility-labels.ts → label-utility.ts} +0 -0
- /package/template-nqtr-react-vite-muijoy-ink/src/labels/{utility-labels.ts → label-utility.ts} +0 -0
- /package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/{utility-labels.ts → label-utility.ts} +0 -0
- /package/template-nqtr-react-vite-muijoy-tauri/src/labels/{utility-labels.ts → label-utility.ts} +0 -0
package/dist/index.mjs
CHANGED
|
@@ -45,7 +45,7 @@ ${o.gray(K)} ${D}
|
|
|
45
45
|
`);let k=0,b=0;f(),s=setInterval(()=>{if(r&&n===a)return;E(),a=n;const p=o.magenta(e[k]);if(r)process.stdout.write(`${p} ${n}...`);else if(D==="timer")process.stdout.write(`${p} ${n} ${T(c)}`);else{const $=".".repeat(Math.floor(b)).slice(0,3);process.stdout.write(`${p} ${n}${$}`)}k=k+1<e.length?k+1:0,b=b<e.length?b+.125:0},t)},Y=(B="",k=0)=>{u=!1,clearInterval(s),E();const b=k===0?o.green(du):k===1?o.red(Wu):o.red(zu);n=l(B??n),D==="timer"?process.stdout.write(`${b} ${n} ${T(c)}
|
|
46
46
|
`):process.stdout.write(`${b} ${n}
|
|
47
47
|
`),m(),i()};return{start:uu,stop:Y,message:(B="")=>{n=l(B??n)}}},au=async D=>{for(const e of D){if(e.enabled===!1)continue;const t=PD();t.start(e.title);const r=await e.task(t.message);t.stop(r||e.title)}};let z=!0;const q=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{};let X=0;if(q.process&&q.process.env&&q.process.stdout){const{FORCE_COLOR:D,NODE_DISABLE_COLORS:e,NO_COLOR:t,TERM:r,COLORTERM:i}=q.process.env;e||t||D==="0"?z=!1:D==="1"||D==="2"||D==="3"?z=!0:r==="dumb"?z=!1:"CI"in q.process.env&&["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE","DRONE"].some(s=>s in q.process.env)?z=!0:z=process.stdout.isTTY,z&&(process.platform==="win32"||i&&(i==="truecolor"||i==="24bit")?X=3:r&&(r.endsWith("-256color")||r.endsWith("256"))?X=2:X=1)}let Yu={enabled:z,supportLevel:X};function nu(D,e,t=1){const r=`\x1B[${D}m`,i=`\x1B[${e}m`,s=new RegExp(`\\x1b\\[${e}m`,"g");return u=>Yu.enabled&&Yu.supportLevel>=t?r+(""+u).replace(s,r)+i:""+u}const UD=nu(31,39),ou=nu(36,39),GD=nu(90,39),WD=nu(91,39);var vu,Ku;function zD(){if(Ku)return vu;Ku=1;function D(r,i){var s=r;i.slice(0,-1).forEach(function(n){s=s[n]||{}});var u=i[i.length-1];return u in s}function e(r){return typeof r=="number"||/^0x[0-9a-f]+$/i.test(r)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(r)}function t(r,i){return i==="constructor"&&typeof r[i]=="function"||i==="__proto__"}return vu=function(r,i){i||(i={});var s={bools:{},strings:{},unknownFn:null};typeof i.unknown=="function"&&(s.unknownFn=i.unknown),typeof i.boolean=="boolean"&&i.boolean?s.allBools=!0:[].concat(i.boolean).filter(Boolean).forEach(function(p){s.bools[p]=!0});var u={};function n(p){return u[p].some(function($){return s.bools[$]})}Object.keys(i.alias||{}).forEach(function(p){u[p]=[].concat(i.alias[p]),u[p].forEach(function($){u[$]=[p].concat(u[p].filter(function(L){return $!==L}))})}),[].concat(i.string).filter(Boolean).forEach(function(p){s.strings[p]=!0,u[p]&&[].concat(u[p]).forEach(function($){s.strings[$]=!0})});var a=i.default||{},c={_:[]};function h(p,$){return s.allBools&&/^--[^=]+$/.test($)||s.strings[p]||s.bools[p]||u[p]}function F(p,$,L){for(var d=p,Z=0;Z<$.length-1;Z++){var V=$[Z];if(t(d,V))return;d[V]===void 0&&(d[V]={}),(d[V]===Object.prototype||d[V]===Number.prototype||d[V]===String.prototype)&&(d[V]={}),d[V]===Array.prototype&&(d[V]=[]),d=d[V]}var P=$[$.length-1];t(d,P)||((d===Object.prototype||d===Number.prototype||d===String.prototype)&&(d={}),d===Array.prototype&&(d=[]),d[P]===void 0||s.bools[P]||typeof d[P]=="boolean"?d[P]=L:Array.isArray(d[P])?d[P].push(L):d[P]=[d[P],L])}function C(p,$,L){if(!(L&&s.unknownFn&&!h(p,L)&&s.unknownFn(L)===!1)){var d=!s.strings[p]&&e($)?Number($):$;F(c,p.split("."),d),(u[p]||[]).forEach(function(Z){F(c,Z.split("."),d)})}}Object.keys(s.bools).forEach(function(p){C(p,a[p]===void 0?!1:a[p])});var f=[];r.indexOf("--")!==-1&&(f=r.slice(r.indexOf("--")+1),r=r.slice(0,r.indexOf("--")));for(var m=0;m<r.length;m++){var E=r[m],l,T;if(/^--.+=/.test(E)){var uu=E.match(/^--([^=]+)=([\s\S]*)$/);l=uu[1];var Y=uu[2];s.bools[l]&&(Y=Y!=="false"),C(l,Y,E)}else if(/^--no-.+/.test(E))l=E.match(/^--no-(.+)/)[1],C(l,!1,E);else if(/^--.+/.test(E))l=E.match(/^--(.+)/)[1],T=r[m+1],T!==void 0&&!/^(-|--)[^-]/.test(T)&&!s.bools[l]&&!s.allBools&&(!u[l]||!n(l))?(C(l,T,E),m+=1):/^(true|false)$/.test(T)?(C(l,T==="true",E),m+=1):C(l,s.strings[l]?"":!0,E);else if(/^-[^-]+/.test(E)){for(var B=E.slice(1,-1).split(""),k=!1,b=0;b<B.length;b++){if(T=E.slice(b+2),T==="-"){C(B[b],T,E);continue}if(/[A-Za-z]/.test(B[b])&&T[0]==="="){C(B[b],T.slice(1),E),k=!0;break}if(/[A-Za-z]/.test(B[b])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(T)){C(B[b],T,E),k=!0;break}if(B[b+1]&&B[b+1].match(/\W/)){C(B[b],E.slice(b+2),E),k=!0;break}else C(B[b],s.strings[B[b]]?"":!0,E)}l=E.slice(-1)[0],!k&&l!=="-"&&(r[m+1]&&!/^(-|--)[^-]/.test(r[m+1])&&!s.bools[l]&&(!u[l]||!n(l))?(C(l,r[m+1],E),m+=1):r[m+1]&&/^(true|false)$/.test(r[m+1])?(C(l,r[m+1]==="true",E),m+=1):C(l,s.strings[l]?"":!0,E))}else if((!s.unknownFn||s.unknownFn(E)!==!1)&&c._.push(s.strings._||!e(E)?E:Number(E)),i.stopEarly){c._.push.apply(c._,r.slice(m+1));break}}return Object.keys(a).forEach(function(p){D(c,p.split("."))||(F(c,p.split("."),a[p]),(u[p]||[]).forEach(function($){F(c,$.split("."),a[p])}))}),i["--"]?c["--"]=f.slice():f.forEach(function(p){c._.push(p)}),c},vu}var YD=zD();const KD=ku(YD);async function qD({rootFolder:D}){const e=x.join(D,".git");try{if(w.existsSync(e)){M.warn("Git repository already exists.");return}}catch(r){M.error(`Error checking git folder: ${r}`);return}const t=await W({message:"Do you want to initialize a git repository? (recommended)",options:[{value:!0,label:"Yes",hint:"You can use GitHub to track changes and collaborate with others."},{value:!1,label:"No",hint:"It is not recommended to skip this step."}],initialValue:!0});if(_(t)&&(g("Operation cancelled."),process.exit(0)),t){const r=await au([{title:"Initializing git repository...",task:async i=>{const s=await G("git",["init","-b","main"],{cwd:D});i(s.stdout);const u=await G("git",["add","."],{cwd:D});return i(u.stdout),"Git repository initialized."}}]);_(r)&&(g("Operation cancelled."),process.exit(0)),M.message(`Now, you can use GitHub Desktop upload your project to GitHub.
|
|
48
|
-
GitHub Desktop: https://github.com/apps/desktop`)}}var H=(D=>(D.VisualStudioCode="vscode",D.Cursor="cursor",D.VSCodium="codium",D.Other="other",D))(H||{});async function HD({rootFolder:D,fileToOpen:e}){const t=await W({message:"Which IDE do you want to use?",options:[{value:H.VisualStudioCode,label:"Visual Studio Code"},{value:H.Cursor,label:"Cursor"},{value:H.VSCodium,label:"VSCodium"},{value:H.Other,label:"Other"}],initialValue:H.VisualStudioCode});if(_(t)&&(g("Operation cancelled."),process.exit(0)),t===void 0)return;let r,i;switch(t){case"vscode":i="Opening in Visual Studio Code...",r="code";break;case"cursor":i="Opening in Cursor...",r="cursor";break;case"codium":i="Opening in VSCodium...",r="codium";break;default:return}await au([{title:i,task:async s=>{try{await xu(r);const u=await G(r,[D]);s(u.stdout);const n=await G(r,[`${D}/README.md`]);if(s(n.stdout),e){const a=await G(r,[`${D}/${e}`]);s(a.stdout)}return`Opened project using ${t}`}catch{return`Could not open project using ${t}, since ${t} was not in your PATH`}}}])}var U=(D=>(D[D.VisualNovel=0]="VisualNovel",D[D.TextStory=1]="TextStory",D[D.PointAndClick=2]="PointAndClick",D[D.GameEngine=3]="GameEngine",D))(U||{}),y=(D=>(D[D.Ink=0]="Ink",D[D.Renpy=1]="Renpy",D[D.Typescript=2]="Typescript",D))(y||{}),O=(D=>(D[D.React=0]="React",D[D.Vue=1]="Vue",D[D.Angular=2]="Angular",D))(O||{});const Au="My Game",JD="my-game",J=[{type:U.VisualNovel,name:"Visual Novel",availableUI:[O.React],availableNarrativeLanguages:[y.Ink,y.Typescript]},{type:U.TextStory,name:"Text-based Story",availableUI:[O.React],availableNarrativeLanguages:[y.Ink,y.Typescript]},{type:U.PointAndClick,name:"Point & Click Adventure",availableUI:[O.React],availableNarrativeLanguages:[y.Ink,y.Typescript]},{type:U.GameEngine,name:"Game Engine",availableUI:[],availableNarrativeLanguages:[]}];async function ZD({packageName:D}){const e=await W({message:"Select the type of game you want to create:",options:J.map(a=>({label:a.name,value:a.type})),initialValue:J[0].type});_(e)&&(g("Operation cancelled."),process.exit(0));const t=J.find(a=>a.type===e)?.availableUI.map(a=>{let c="";switch(a){case O.React:c=ou("React");break;case O.Vue:c=GD("Vue");break;case O.Angular:c=UD("Angular");break}return{label:c,value:a}})||[];let r;t.length===1?(M.warning(`Only one UI framework available: ${t[0].label}. Using it by default.`),r=t[0].value):t.length>0?(r=await W({message:"Select the UI framework you want to use:",options:t,initialValue:J.find(a=>a.type===e)?.availableUI[0]}),_(r)&&(g("Operation cancelled."),process.exit(0))):r=void 0;const i=J.find(a=>a.type===e)?.availableNarrativeLanguages.map(a=>{let c="";switch(a){case y.Ink:c="Ink + Typescript";break;case y.Renpy:c=WD("Renpy");break;case y.Typescript:c=ou("Typescript");break}return{label:c,value:a}})||[];let s;i.length===1?(M.warning(`Only one narrative language available: ${i[0].label}. Using it by default.`),s=i[0].value):i.length>0?(s=await W({message:"Select the narrative language you want to use:",options:i,initialValue:J.find(a=>a.type===e)?.availableNarrativeLanguages[0]}),_(s)&&(g("Operation cancelled."),process.exit(0))):s=void 0;const u=await W({message:"Which devices is the project intended for?",options:[{label:"Web page",value:!1},{label:"Web page + Desktop + Mobile (Tauri)",value:!0}],initialValue:!1});_(u)&&(g("Operation cancelled."),process.exit(0));let n;return u?(n=await su({message:"Project identifier:",initialValue:`com.${D}.app`,validate:a=>{if(!a)return"Identifier is required.";if(!/^[a-zA-Z0-9_.\-]+$/.test(a))return"Identifier can only contain letters, numbers, underscores, dots and dashes."}}),_(n)&&(g("Operation cancelled."),process.exit(0))):n="",{gameType:e,UIFramework:r,narrativeLanguage:s,multidevice:u,identifier:n}}var I=(D=>(D.Delete="delete",D.Overwrite="overwrite",D.Skip="skip",D.Ask="ask",D.Cancel="cancel",D))(I||{});function QD(D){return D?.trim().replace(/\/+$/g,"")}function XD(D){const e=w.readdirSync(D);return e.length===0||e.length===1&&e[0]===".git"}function ue(D){if(w.existsSync(D))for(const e of w.readdirSync(D))e!==".git"&&w.rmSync(x.resolve(D,e),{recursive:!0,force:!0})}function De(D){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(D)}function qu(D){return D.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}async function ee({argTargetDir:D,targetDir:e}){const t=()=>e==="."?x.basename(x.resolve()):e;let r;D?r=Au:(r=await su({message:"Project name:",defaultValue:Au,placeholder:Au,validate:n=>{if(!n)return"Project name cannot be empty"}}),_(r)&&(g("Operation cancelled."),process.exit(0)));const i=await su({message:"Project description:",defaultValue:"A new game project",placeholder:"A new game project",validate:n=>{if(!n)return"Project description cannot be empty"}});_(i)&&(g("Operation cancelled."),process.exit(0));const s=await su({message:"Package name:",defaultValue:qu(t()),placeholder:qu(t()),validate:n=>{if(!n)return"Package name cannot be empty";if(!De(n))return"Invalid package name. The name can only include URL-friendly characters."}});_(s)&&(g("Operation cancelled."),process.exit(0));let u;return w.existsSync(s)&&!XD(s)?(u=await W({message:"Overwrite existing files?",options:[{hint:"Delete all existing files and create a new project",label:"Delete all",value:I.Delete},{hint:"Overwrite existing conflicting files",label:"Overwrite",value:I.Overwrite},{hint:"Skip existing conflicting files",label:"Skip",value:I.Skip},{hint:"Ask for each file",label:"Ask",value:I.Ask},{hint:"Cancel operation",label:"Cancel",value:I.Cancel}],initialValue:I.Overwrite}),(_(u)||u===I.Cancel)&&(g("Operation cancelled."),process.exit(0))):u=void 0,{projectName:r,description:i,packageName:s,overwrite:u}}const Hu={_gitignore:".gitignore"};async function te({rootFolder:D,overwrite:e,template:t,packageName:r,description:i,projectName:s,identifier:u}){const n=await au([{title:`Creating project in ${D}...`,task:async a=>{switch(e){case I.Delete:ue(D);break;case I.Overwrite:case I.Skip:case I.Ask:break;default:w.mkdirSync(D,{recursive:!0});break}const c=x.resolve(uD(import.meta.url),"../..",`${t}`),h=(m,E)=>{const l=x.join(D,Hu[m]??m);E?w.writeFileSync(l,E):Ju(x.join(c,m),l)},F=w.readdirSync(c).map(async m=>{const E=x.join(D,Hu[m]??m);if(w.existsSync(E))switch(e){case I.Ask:const l=await ND({message:`File ${E} already exists. Do you want to overwrite it?`,initialValue:!1});if(_(l)&&(g("Operation cancelled."),process.exit(0)),!l)return;w.rmSync(E,{recursive:!0,force:!0});break;case I.Skip:return;case I.Delete:case I.Overwrite:w.rmSync(E,{recursive:!0,force:!0});break}switch(m){case"package.json":case"vite.config.ts":case"index.html":let l=w.readFileSync(x.join(c,m),"utf-8");l=l.replace(/my-app-package-name/g,r),l=l.replace(/my-app-description/g,i),l=l.replace(/my-app-project-name/g,s),h(m,l);break;case".git":case"package-lock.json":break;default:h(m)}});await Promise.all(F);const C=x.join(D,"src-tauri");if(w.existsSync(C)){const m=w.readdirSync(C).map(async E=>{switch(E){case"Cargo.lock":case"Cargo.toml":case"tauri.conf.json":let l=w.readFileSync(x.join(C,E),"utf-8");l=l.replace(/my-app-package-name/g,r),l=l.replace(/my-app-description/g,i),l=l.replace(/my-app-project-name/g,s),l=l.replace(/com.my-app-project-name.app/g,u),h(x.join("src-tauri",E),l)}});await Promise.all(m)}const f=x.join(D,"_github");return w.existsSync(f)&&w.renameSync(f,x.join(D,".github")),"Project created"}}]);_(n)&&(g("Operation cancelled."),process.exit(0))}function re(D,e){w.mkdirSync(e,{recursive:!0});for(const t of w.readdirSync(D)){const r=x.resolve(D,t),i=x.resolve(e,t);Ju(r,i)}}function Ju(D,e){w.statSync(D).isDirectory()?re(D,e):w.copyFileSync(D,e)}const ie=process.cwd();async function se(D){let e=D||JD,t,{description:r,overwrite:i,packageName:s,projectName:u}=await ee({argTargetDir:D,targetDir:e}),{UIFramework:n,gameType:a,narrativeLanguage:c,multidevice:h,identifier:F}=await ZD({packageName:s});const C=x.join(ie,e);let f;switch(a){case U.VisualNovel:switch(n){case O.React:switch(c){case y.Typescript:h?f="template-react-vite-muijoy-tauri":f="template-react-vite-muijoy",t="src/labels/startLabel.ts";break;case y.Ink:h?f="template-react-vite-muijoy-ink-tauri":f="template-react-vite-muijoy-ink",t="src/ink/start.ink";break;case y.Renpy:g("Error: There are no templates for this narrative language"),process.exit(0);default:g("Error: Unknown narrative language"),process.exit(0)}break;case O.Vue:case O.Angular:g("Error: There are no templates for this game type and UI framework"),process.exit(0);default:g("Error: Unknown UI framework"),process.exit(0)}break;case U.TextStory:switch(n){case O.React:switch(c){case y.Typescript:h?f="template-story-react-vite-muijoy-tauri":f="template-story-react-vite-muijoy",t="src/labels/startLabel.ts";break;case y.Ink:h?f="template-story-react-vite-muijoy-ink-tauri":f="template-story-react-vite-muijoy-ink",t="src/ink/start.ink";break;case y.Renpy:g("Error: There are no templates for this narrative language"),process.exit(0);default:g("Error: Unknown narrative language"),process.exit(0)}break;case O.Vue:case O.Angular:g("Error: There are no templates for this game type and UI framework"),process.exit(0);default:g("Error: Unknown UI framework"),process.exit(0)}break;case U.PointAndClick:switch(n){case O.React:switch(c){case y.Typescript:h?f="template-nqtr-react-vite-muijoy-tauri":f="template-nqtr-react-vite-muijoy",t="src/labels/startLabel.ts";break;case y.Ink:h?f="template-nqtr-react-vite-muijoy-ink-tauri":f="template-nqtr-react-vite-muijoy-ink",t="src/ink/start.ink";break;case y.Renpy:g("Error: There are no templates for this narrative language"),process.exit(0);default:g("Error: Unknown narrative language"),process.exit(0)}break;case O.Vue:case O.Angular:g("Error: There are no templates for this game type and UI framework"),process.exit(0);default:g("Error: Unknown UI framework"),process.exit(0)}break;case U.GameEngine:f="template-game-engine",t="src/index.ts";break;default:g("Error: Unknown game type"),process.exit(0)}return await te({rootFolder:C,template:f,packageName:s,description:r,projectName:u,overwrite:i,identifier:F}),{rootFolder:C,fileToOpen:t}}function ae(){console.info(`
|
|
48
|
+
GitHub Desktop: https://github.com/apps/desktop`)}}var H=(D=>(D.VisualStudioCode="vscode",D.Cursor="cursor",D.VSCodium="codium",D.Other="other",D))(H||{});async function HD({rootFolder:D,fileToOpen:e}){const t=await W({message:"Which IDE do you want to use?",options:[{value:H.VisualStudioCode,label:"Visual Studio Code"},{value:H.Cursor,label:"Cursor"},{value:H.VSCodium,label:"VSCodium"},{value:H.Other,label:"Other"}],initialValue:H.VisualStudioCode});if(_(t)&&(g("Operation cancelled."),process.exit(0)),t===void 0)return;let r,i;switch(t){case"vscode":i="Opening in Visual Studio Code...",r="code";break;case"cursor":i="Opening in Cursor...",r="cursor";break;case"codium":i="Opening in VSCodium...",r="codium";break;default:return}await au([{title:i,task:async s=>{try{await xu(r);const u=await G(r,[D]);s(u.stdout);const n=await G(r,[`${D}/README.md`]);if(s(n.stdout),e){const a=await G(r,[`${D}/${e}`]);s(a.stdout)}return`Opened project using ${t}`}catch{return`Could not open project using ${t}, since ${t} was not in your PATH`}}}])}var U=(D=>(D[D.VisualNovel=0]="VisualNovel",D[D.TextStory=1]="TextStory",D[D.PointAndClick=2]="PointAndClick",D[D.GameEngine=3]="GameEngine",D))(U||{}),y=(D=>(D[D.Ink=0]="Ink",D[D.Renpy=1]="Renpy",D[D.Typescript=2]="Typescript",D))(y||{}),O=(D=>(D[D.React=0]="React",D[D.Vue=1]="Vue",D[D.Angular=2]="Angular",D))(O||{});const Au="My Game",JD="my-game",J=[{type:U.VisualNovel,name:"Visual Novel",availableUI:[O.React],availableNarrativeLanguages:[y.Ink,y.Typescript]},{type:U.TextStory,name:"Text-based Story",availableUI:[O.React],availableNarrativeLanguages:[y.Ink,y.Typescript]},{type:U.PointAndClick,name:"Point & Click Adventure",availableUI:[O.React],availableNarrativeLanguages:[y.Ink,y.Typescript]},{type:U.GameEngine,name:"Game Engine",availableUI:[],availableNarrativeLanguages:[]}];async function ZD({packageName:D}){const e=await W({message:"Select the type of game you want to create:",options:J.map(a=>({label:a.name,value:a.type})),initialValue:J[0].type});_(e)&&(g("Operation cancelled."),process.exit(0));const t=J.find(a=>a.type===e)?.availableUI.map(a=>{let c="";switch(a){case O.React:c=ou("React");break;case O.Vue:c=GD("Vue");break;case O.Angular:c=UD("Angular");break}return{label:c,value:a}})||[];let r;t.length===1?(M.warning(`Only one UI framework available: ${t[0].label}. Using it by default.`),r=t[0].value):t.length>0?(r=await W({message:"Select the UI framework you want to use:",options:t,initialValue:J.find(a=>a.type===e)?.availableUI[0]}),_(r)&&(g("Operation cancelled."),process.exit(0))):r=void 0;const i=J.find(a=>a.type===e)?.availableNarrativeLanguages.map(a=>{let c="";switch(a){case y.Ink:c="Ink + Typescript";break;case y.Renpy:c=WD("Renpy");break;case y.Typescript:c=ou("Typescript");break}return{label:c,value:a}})||[];let s;i.length===1?(M.warning(`Only one narrative language available: ${i[0].label}. Using it by default.`),s=i[0].value):i.length>0?(s=await W({message:"Select the narrative language you want to use:",options:i,initialValue:J.find(a=>a.type===e)?.availableNarrativeLanguages[0]}),_(s)&&(g("Operation cancelled."),process.exit(0))):s=void 0;const u=await W({message:"Which devices is the project intended for?",options:[{label:"Web page",value:!1},{label:"Web page + Desktop + Mobile (Tauri)",value:!0}],initialValue:!1});_(u)&&(g("Operation cancelled."),process.exit(0));let n;return u?(n=await su({message:"Project identifier:",initialValue:`com.${D}.app`,validate:a=>{if(!a)return"Identifier is required.";if(!/^[a-zA-Z0-9_.\-]+$/.test(a))return"Identifier can only contain letters, numbers, underscores, dots and dashes."}}),_(n)&&(g("Operation cancelled."),process.exit(0))):n="",{gameType:e,UIFramework:r,narrativeLanguage:s,multidevice:u,identifier:n}}var I=(D=>(D.Delete="delete",D.Overwrite="overwrite",D.Skip="skip",D.Ask="ask",D.Cancel="cancel",D))(I||{});function QD(D){return D?.trim().replace(/\/+$/g,"")}function XD(D){const e=w.readdirSync(D);return e.length===0||e.length===1&&e[0]===".git"}function ue(D){if(w.existsSync(D))for(const e of w.readdirSync(D))e!==".git"&&w.rmSync(x.resolve(D,e),{recursive:!0,force:!0})}function De(D){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(D)}function qu(D){return D.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}async function ee({argTargetDir:D,targetDir:e}){const t=()=>e==="."?x.basename(x.resolve()):e;let r;D?r=Au:(r=await su({message:"Project name:",defaultValue:Au,placeholder:Au,validate:n=>{if(!n)return"Project name cannot be empty"}}),_(r)&&(g("Operation cancelled."),process.exit(0)));const i=await su({message:"Project description:",defaultValue:"A new game project",placeholder:"A new game project",validate:n=>{if(!n)return"Project description cannot be empty"}});_(i)&&(g("Operation cancelled."),process.exit(0));const s=await su({message:"Package name:",defaultValue:qu(t()),placeholder:qu(t()),validate:n=>{if(!n)return"Package name cannot be empty";if(!De(n))return"Invalid package name. The name can only include URL-friendly characters."}});_(s)&&(g("Operation cancelled."),process.exit(0));let u;return w.existsSync(s)&&!XD(s)?(u=await W({message:"Overwrite existing files?",options:[{hint:"Delete all existing files and create a new project",label:"Delete all",value:I.Delete},{hint:"Overwrite existing conflicting files",label:"Overwrite",value:I.Overwrite},{hint:"Skip existing conflicting files",label:"Skip",value:I.Skip},{hint:"Ask for each file",label:"Ask",value:I.Ask},{hint:"Cancel operation",label:"Cancel",value:I.Cancel}],initialValue:I.Overwrite}),(_(u)||u===I.Cancel)&&(g("Operation cancelled."),process.exit(0))):u=void 0,{projectName:r,description:i,packageName:s,overwrite:u}}const Hu={_gitignore:".gitignore"};async function te({rootFolder:D,overwrite:e,template:t,packageName:r,description:i,projectName:s,identifier:u}){const n=await au([{title:`Creating project in ${D}...`,task:async a=>{switch(e){case I.Delete:ue(D);break;case I.Overwrite:case I.Skip:case I.Ask:break;default:w.mkdirSync(D,{recursive:!0});break}const c=x.resolve(uD(import.meta.url),"../..",`${t}`),h=(m,E)=>{const l=x.join(D,Hu[m]??m);E?w.writeFileSync(l,E):Ju(x.join(c,m),l)},F=w.readdirSync(c).map(async m=>{const E=x.join(D,Hu[m]??m);if(w.existsSync(E))switch(e){case I.Ask:const l=await ND({message:`File ${E} already exists. Do you want to overwrite it?`,initialValue:!1});if(_(l)&&(g("Operation cancelled."),process.exit(0)),!l)return;w.rmSync(E,{recursive:!0,force:!0});break;case I.Skip:return;case I.Delete:case I.Overwrite:w.rmSync(E,{recursive:!0,force:!0});break}switch(m){case"package.json":case"vite.config.ts":case"index.html":let l=w.readFileSync(x.join(c,m),"utf-8");l=l.replace(/my-app-package-name/g,r),l=l.replace(/my-app-description/g,i),l=l.replace(/my-app-project-name/g,s),h(m,l);break;case".git":case"package-lock.json":break;default:h(m)}});await Promise.all(F);const C=x.join(D,"src-tauri");if(w.existsSync(C)){const m=w.readdirSync(C).map(async E=>{switch(E){case"Cargo.lock":case"Cargo.toml":case"tauri.conf.json":let l=w.readFileSync(x.join(C,E),"utf-8");l=l.replace(/my-app-package-name/g,r),l=l.replace(/my-app-description/g,i),l=l.replace(/my-app-project-name/g,s),l=l.replace(/com.my-app-project-name.app/g,u),h(x.join("src-tauri",E),l)}});await Promise.all(m)}const f=x.join(D,"_github");return w.existsSync(f)&&w.renameSync(f,x.join(D,".github")),"Project created"}}]);_(n)&&(g("Operation cancelled."),process.exit(0))}function re(D,e){w.mkdirSync(e,{recursive:!0});for(const t of w.readdirSync(D)){const r=x.resolve(D,t),i=x.resolve(e,t);Ju(r,i)}}function Ju(D,e){w.statSync(D).isDirectory()?re(D,e):w.copyFileSync(D,e)}const ie=process.cwd();async function se(D){let e=D||JD,t,{description:r,overwrite:i,packageName:s,projectName:u}=await ee({argTargetDir:D,targetDir:e}),{UIFramework:n,gameType:a,narrativeLanguage:c,multidevice:h,identifier:F}=await ZD({packageName:s});const C=x.join(ie,e);let f;switch(a){case U.VisualNovel:switch(n){case O.React:switch(c){case y.Typescript:h?f="template-react-vite-muijoy-tauri":f="template-react-vite-muijoy",t="src/labels/startLabel.ts";break;case y.Ink:h?f="template-react-vite-muijoy-ink-tauri":f="template-react-vite-muijoy-ink",t="src/ink/start.ink";break;case y.Renpy:g("Error: There are no templates for this narrative language"),process.exit(0);default:g("Error: Unknown narrative language"),process.exit(0)}break;case O.Vue:case O.Angular:g("Error: There are no templates for this game type and UI framework"),process.exit(0);default:g("Error: Unknown UI framework"),process.exit(0)}break;case U.TextStory:switch(n){case O.React:switch(c){case y.Typescript:h?f="template-story-react-vite-muijoy-tauri":f="template-story-react-vite-muijoy",t="src/labels/startLabel.ts";break;case y.Ink:h?f="template-story-react-vite-muijoy-ink-tauri":f="template-story-react-vite-muijoy-ink",t="src/ink/start.ink";break;case y.Renpy:g("Error: There are no templates for this narrative language"),process.exit(0);default:g("Error: Unknown narrative language"),process.exit(0)}break;case O.Vue:case O.Angular:g("Error: There are no templates for this game type and UI framework"),process.exit(0);default:g("Error: Unknown UI framework"),process.exit(0)}break;case U.PointAndClick:switch(n){case O.React:switch(c){case y.Typescript:h?f="template-nqtr-react-vite-muijoy-tauri":f="template-nqtr-react-vite-muijoy",t="src/labels/startLabel.ts";break;case y.Ink:h?f="template-nqtr-react-vite-muijoy-ink-tauri":f="template-nqtr-react-vite-muijoy-ink",t="src/ink/variousActionsLabels.ink";break;case y.Renpy:g("Error: There are no templates for this narrative language"),process.exit(0);default:g("Error: Unknown narrative language"),process.exit(0)}break;case O.Vue:case O.Angular:g("Error: There are no templates for this game type and UI framework"),process.exit(0);default:g("Error: Unknown UI framework"),process.exit(0)}break;case U.GameEngine:f="template-game-engine",t="src/index.ts";break;default:g("Error: Unknown game type"),process.exit(0)}return await te({rootFolder:C,template:f,packageName:s,description:r,projectName:u,overwrite:i,identifier:F}),{rootFolder:C,fileToOpen:t}}function ae(){console.info(`
|
|
49
49
|
\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557
|
|
50
50
|
\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551
|
|
51
51
|
\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551
|
package/package.json
CHANGED
|
@@ -47,6 +47,7 @@ Core libraries:
|
|
|
47
47
|
You can use the following button to show Tanstack Query interactions with the game. (the button will be automatically hidden when released)
|
|
48
48
|
* [Tailwind CSS](https://tailwindcss.com/): A utility-first CSS framework for rapidly building custom designs.
|
|
49
49
|
* [Tailwind CSS Motion](https://rombo.co/tailwind/): A library that provides a set of utilities for creating animations with Tailwind CSS.
|
|
50
|
+
* [Tailwind CSS Typography](https://tailwindcss.com/docs/typography-plugin): A plugin that provides a set of utilities for styling text.
|
|
50
51
|
|
|
51
52
|
UI libraries:
|
|
52
53
|
|
|
@@ -11,50 +11,53 @@
|
|
|
11
11
|
"preview": "vite preview"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@drincs/nqtr": "^0.
|
|
15
|
-
"@drincs/pixi-vn": "^1.2.
|
|
14
|
+
"@drincs/nqtr": "^0.5.5",
|
|
15
|
+
"@drincs/pixi-vn": "^1.2.22",
|
|
16
16
|
"@emotion/react": "^11.14.0",
|
|
17
|
-
"@emotion/styled": "^11.14.
|
|
18
|
-
"@mui/icons-material": "^7.
|
|
17
|
+
"@emotion/styled": "^11.14.1",
|
|
18
|
+
"@mui/icons-material": "^7.2.0",
|
|
19
19
|
"@mui/joy": "^5.0.0-beta.52",
|
|
20
|
-
"@mui/material": "^7.
|
|
21
|
-
"@tailwindcss/vite": "^4.1.
|
|
22
|
-
"@tanstack/react-query": "^5.
|
|
23
|
-
"i18next": "^25.
|
|
20
|
+
"@mui/material": "^7.2.0",
|
|
21
|
+
"@tailwindcss/vite": "^4.1.11",
|
|
22
|
+
"@tanstack/react-query": "^5.83.0",
|
|
23
|
+
"i18next": "^25.3.2",
|
|
24
24
|
"i18next-chained-backend": "^4.6.2",
|
|
25
25
|
"i18next-resources-to-backend": "^1.2.1",
|
|
26
|
-
"motion": "^12.
|
|
26
|
+
"motion": "^12.23.6",
|
|
27
27
|
"notistack": "^3.0.2",
|
|
28
28
|
"react": "^19.1.0",
|
|
29
29
|
"react-color-palette": "^7.3.0",
|
|
30
30
|
"react-dom": "^19.1.0",
|
|
31
31
|
"react-error-boundary": "^6.0.0",
|
|
32
|
-
"react-i18next": "^15.
|
|
32
|
+
"react-i18next": "^15.6.0",
|
|
33
|
+
"react-lazy-load-image-component": "^1.6.3",
|
|
33
34
|
"react-markdown": "^10.1.0",
|
|
34
35
|
"react-markdown-typewriter": "^1.1.4",
|
|
35
|
-
"react-router-dom": "^7.6.
|
|
36
|
+
"react-router-dom": "^7.6.3",
|
|
36
37
|
"rehype-raw": "^7.0.0",
|
|
37
38
|
"remark-gfm": "^4.0.1",
|
|
38
39
|
"shade-generator": "^1.2.7",
|
|
39
|
-
"tailwindcss": "^4.1.
|
|
40
|
-
"vite-plugin-checker": "^0.
|
|
41
|
-
"zustand": "^5.0.
|
|
40
|
+
"tailwindcss": "^4.1.11",
|
|
41
|
+
"vite-plugin-checker": "^0.10.0",
|
|
42
|
+
"zustand": "^5.0.6"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@
|
|
45
|
-
"@
|
|
46
|
-
"@types/
|
|
47
|
-
"@types/react
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"eslint": "^
|
|
45
|
+
"@tailwindcss/typography": "^0.5.16",
|
|
46
|
+
"@tanstack/react-query-devtools": "^5.83.0",
|
|
47
|
+
"@types/node": "^24.0.14",
|
|
48
|
+
"@types/react": "^19.1.8",
|
|
49
|
+
"@types/react-dom": "^19.1.6",
|
|
50
|
+
"@types/react-lazy-load-image-component": "^1.6.4",
|
|
51
|
+
"@typescript-eslint/eslint-plugin": "^8.37.0",
|
|
52
|
+
"@typescript-eslint/parser": "^8.37.0",
|
|
53
|
+
"@vitejs/plugin-react": "^4.6.0",
|
|
54
|
+
"eslint": "^9.31.0",
|
|
52
55
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
53
56
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
54
|
-
"tailwindcss-motion": "^1.1.
|
|
57
|
+
"tailwindcss-motion": "^1.1.1",
|
|
55
58
|
"typescript": "^5.8.3",
|
|
56
|
-
"vite": "^
|
|
57
|
-
"vite-plugin-pwa": "^1.0.
|
|
59
|
+
"vite": "^7.0.4",
|
|
60
|
+
"vite-plugin-pwa": "^1.0.1"
|
|
58
61
|
},
|
|
59
62
|
"keywords": [
|
|
60
63
|
"game",
|
|
@@ -4,9 +4,17 @@ import { useI18n } from "./i18n";
|
|
|
4
4
|
import LoadingScreen from "./screens/LoadingScreen";
|
|
5
5
|
import { defineAssets } from "./utils/assets-utility";
|
|
6
6
|
import { initializeIndexedDB } from "./utils/indexedDB-utility";
|
|
7
|
+
import { initializeNQTR } from "./utils/nqtr-utility";
|
|
7
8
|
|
|
8
9
|
const Home = lazy(async () => {
|
|
9
|
-
await Promise.all([
|
|
10
|
+
await Promise.all([
|
|
11
|
+
import("./values"),
|
|
12
|
+
import("./labels"),
|
|
13
|
+
initializeIndexedDB(),
|
|
14
|
+
defineAssets(),
|
|
15
|
+
useI18n(),
|
|
16
|
+
initializeNQTR(),
|
|
17
|
+
]);
|
|
10
18
|
return import("./Home");
|
|
11
19
|
});
|
|
12
20
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Route, Routes } from "react-router-dom";
|
|
2
2
|
import NextButton from "./components/NextButton";
|
|
3
|
+
import VisibilityButton from "./components/VisibilityButton";
|
|
3
4
|
import { LOADING_ROUTE, MAIN_MENU_ROUTE, MAP_ROUTE, NARRATION_ROUTE, NAVIGATION_ROUTE } from "./constans";
|
|
4
5
|
import useNQTRDetector from "./hooks/useNQTRDetector";
|
|
5
6
|
import useSkipAutoDetector from "./hooks/useSkipAutoDetector";
|
|
@@ -37,7 +38,8 @@ function NarrationElement() {
|
|
|
37
38
|
<QuickTools />
|
|
38
39
|
<TextInput />
|
|
39
40
|
<NextButton />
|
|
40
|
-
<
|
|
41
|
+
<NarrationDetectors />
|
|
42
|
+
<VisibilityButton />
|
|
41
43
|
</>
|
|
42
44
|
);
|
|
43
45
|
}
|
|
@@ -52,11 +54,12 @@ function NavigationElement() {
|
|
|
52
54
|
<QuickRooms />
|
|
53
55
|
<TimeScreen />
|
|
54
56
|
<NqtrQuickTools />
|
|
57
|
+
<VisibilityButton />
|
|
55
58
|
</>
|
|
56
59
|
);
|
|
57
60
|
}
|
|
58
61
|
|
|
59
|
-
function
|
|
62
|
+
function NarrationDetectors() {
|
|
60
63
|
useSkipAutoDetector();
|
|
61
64
|
return <></>;
|
|
62
65
|
}
|
|
@@ -4,7 +4,7 @@ import Routes from "./AppRoutes";
|
|
|
4
4
|
import useClosePageDetector from "./hooks/useClosePageDetector";
|
|
5
5
|
import useKeyboardDetector from "./hooks/useKeyboardDetector";
|
|
6
6
|
import useEventListener from "./hooks/useKeyDetector";
|
|
7
|
-
import
|
|
7
|
+
import RootProvider from "./providers/RootProvider";
|
|
8
8
|
import GameSaveScreen from "./screens/GameSaveScreen";
|
|
9
9
|
import SaveLoadAlert from "./screens/modals/SaveLoadAlert";
|
|
10
10
|
import OfflineScreen from "./screens/OfflineScreen";
|
|
@@ -41,8 +41,8 @@ function HomeChild() {
|
|
|
41
41
|
|
|
42
42
|
export default function Home() {
|
|
43
43
|
return (
|
|
44
|
-
<
|
|
44
|
+
<RootProvider>
|
|
45
45
|
<HomeChild />
|
|
46
|
-
</
|
|
46
|
+
</RootProvider>
|
|
47
47
|
);
|
|
48
48
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AssetsManifest } from "@drincs/pixi-vn";
|
|
2
2
|
import { MAIN_MENU_ROUTE } from "../constans";
|
|
3
|
-
import { mainMap } from "../values/maps";
|
|
3
|
+
import { mainMap, nightcityMap } from "../values/maps";
|
|
4
4
|
import { aliceRoom, annRoom, bathroom, gymRoom, lounge, mcRoom, terrace } from "../values/rooms";
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -41,6 +41,23 @@ const manifest: AssetsManifest = {
|
|
|
41
41
|
alias: "map-3",
|
|
42
42
|
src: "https://raw.githubusercontent.com/DRincs-Productions/NQTR-System/refs/heads/main/game/images/location/map-3.webp",
|
|
43
43
|
},
|
|
44
|
+
{
|
|
45
|
+
alias: "icon_location_home",
|
|
46
|
+
src: "https://raw.githubusercontent.com/DRincs-Productions/NQTR-System/refs/heads/main/game/nqtr_interface/home-00.webp",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
alias: "icon_location_gym",
|
|
50
|
+
src: "https://raw.githubusercontent.com/DRincs-Productions/NQTR-System/refs/heads/main/game/nqtr_interface/gym.webp",
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: nightcityMap.id,
|
|
56
|
+
assets: [
|
|
57
|
+
{
|
|
58
|
+
alias: "map-nightcity",
|
|
59
|
+
src: "https://raw.githubusercontent.com/DRincs-Productions/NQTR-System/refs/heads/main/game/images/location/nightcity.webp",
|
|
60
|
+
},
|
|
44
61
|
],
|
|
45
62
|
},
|
|
46
63
|
// rooms
|
|
@@ -167,20 +184,6 @@ const manifest: AssetsManifest = {
|
|
|
167
184
|
},
|
|
168
185
|
],
|
|
169
186
|
},
|
|
170
|
-
// locations
|
|
171
|
-
{
|
|
172
|
-
name: "locations",
|
|
173
|
-
assets: [
|
|
174
|
-
{
|
|
175
|
-
alias: "icon_location_home",
|
|
176
|
-
src: "https://raw.githubusercontent.com/DRincs-Productions/NQTR-System/refs/heads/main/game/nqtr_interface/home-00.webp",
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
alias: "icon_location_gym",
|
|
180
|
-
src: "https://raw.githubusercontent.com/DRincs-Productions/NQTR-System/refs/heads/main/game/nqtr_interface/gym.webp",
|
|
181
|
-
},
|
|
182
|
-
],
|
|
183
|
-
},
|
|
184
187
|
// alice
|
|
185
188
|
{
|
|
186
189
|
name: "alice",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Button, ButtonProps, ButtonTypeMap } from "@mui/joy";
|
|
2
|
+
import { motion, Variants } from "motion/react";
|
|
2
3
|
|
|
3
4
|
interface MenuButtonProps
|
|
4
5
|
extends ButtonProps<
|
|
@@ -12,6 +13,14 @@ interface MenuButtonProps
|
|
|
12
13
|
|
|
13
14
|
export default function MenuButton(props: MenuButtonProps) {
|
|
14
15
|
const { sx, transitionDelay, ...rest } = props;
|
|
16
|
+
const itemVariants: Variants = {
|
|
17
|
+
open: {
|
|
18
|
+
opacity: 1,
|
|
19
|
+
x: 0,
|
|
20
|
+
transition: { type: "spring", stiffness: 300, damping: 24, delay: transitionDelay },
|
|
21
|
+
},
|
|
22
|
+
closed: { opacity: 0, x: -50, transition: { duration: 0.2 } },
|
|
23
|
+
};
|
|
15
24
|
|
|
16
25
|
return (
|
|
17
26
|
<Button
|
|
@@ -20,7 +29,8 @@ export default function MenuButton(props: MenuButtonProps) {
|
|
|
20
29
|
fontSize: { xs: "0.75rem", sm: "0.75rem", md: "1rem", lg: "1.25rem", xl: "1.5rem" },
|
|
21
30
|
...sx,
|
|
22
31
|
}}
|
|
23
|
-
|
|
32
|
+
component={motion.div}
|
|
33
|
+
variants={itemVariants}
|
|
24
34
|
{...rest}
|
|
25
35
|
/>
|
|
26
36
|
);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { DialogActions, DialogContent, Divider, ModalClose } from "@mui/joy";
|
|
2
2
|
import Modal from "@mui/joy/Modal";
|
|
3
3
|
import { default as ModalDialogJoy, ModalDialogProps } from "@mui/joy/ModalDialog";
|
|
4
|
-
import { AnimatePresence } from "motion/react";
|
|
5
4
|
import { useEffect, useMemo, useState } from "react";
|
|
6
5
|
|
|
7
6
|
export interface ModalDialogCustomProps extends ModalDialogProps {
|
|
@@ -41,31 +40,29 @@ export default function ModalDialogCustom(props: ModalDialogCustomProps) {
|
|
|
41
40
|
);
|
|
42
41
|
|
|
43
42
|
return (
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
<Modal
|
|
44
|
+
keepMounted
|
|
45
|
+
open={internalOpen}
|
|
46
|
+
onClose={() => canBeIgnored && setOpen(false)}
|
|
47
|
+
sx={{
|
|
48
|
+
pointerEvents: open ? "auto" : "none",
|
|
49
|
+
}}
|
|
50
|
+
className={modalVarians}
|
|
51
|
+
>
|
|
52
|
+
<ModalDialogJoy
|
|
49
53
|
sx={{
|
|
50
54
|
pointerEvents: open ? "auto" : "none",
|
|
55
|
+
...sx,
|
|
51
56
|
}}
|
|
52
|
-
className={
|
|
57
|
+
className={modalDialogVarians}
|
|
58
|
+
{...rest}
|
|
53
59
|
>
|
|
54
|
-
<
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
>
|
|
62
|
-
{canBeIgnored && <ModalClose />}
|
|
63
|
-
{head}
|
|
64
|
-
{head && <Divider />}
|
|
65
|
-
<DialogContent>{internalOpen && children}</DialogContent>
|
|
66
|
-
{actions && <DialogActions>{actions}</DialogActions>}
|
|
67
|
-
</ModalDialogJoy>
|
|
68
|
-
</Modal>
|
|
69
|
-
</AnimatePresence>
|
|
60
|
+
{canBeIgnored && <ModalClose />}
|
|
61
|
+
{head}
|
|
62
|
+
{head && <Divider />}
|
|
63
|
+
<DialogContent>{internalOpen && children}</DialogContent>
|
|
64
|
+
{actions && <DialogActions>{actions}</DialogActions>}
|
|
65
|
+
</ModalDialogJoy>
|
|
66
|
+
</Modal>
|
|
70
67
|
);
|
|
71
68
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { OnRunProps } from "@drincs/nqtr";
|
|
2
|
-
import { Assets } from "@drincs/pixi-vn";
|
|
3
2
|
import { useTheme } from "@mui/joy";
|
|
4
3
|
import { isValidElement, ReactElement } from "react";
|
|
4
|
+
import { LazyLoadComponent } from "react-lazy-load-image-component";
|
|
5
5
|
import useGameProps from "../hooks/useGameProps";
|
|
6
|
-
import
|
|
6
|
+
import TimeSlotsImage from "../models/TimeSlotsImage";
|
|
7
7
|
import useNqtrScreenStore from "../stores/useNqtrScreenStore";
|
|
8
|
+
import { getPixiJSAsset } from "../utils/assets-utility";
|
|
8
9
|
import RoundIconButton, { RoundIconButtonProps } from "./RoundIconButton";
|
|
9
10
|
|
|
10
11
|
interface NqtrRoundIconButtonProps extends RoundIconButtonProps {
|
|
@@ -17,7 +18,6 @@ export default function NqtrRoundIconButton(props: NqtrRoundIconButtonProps) {
|
|
|
17
18
|
|
|
18
19
|
return (
|
|
19
20
|
<RoundIconButton
|
|
20
|
-
className='motion-preset-pop'
|
|
21
21
|
sx={{
|
|
22
22
|
"--IconButton-size": { xs: "40px", sm: "60px", md: "80px" },
|
|
23
23
|
border: 3,
|
|
@@ -32,7 +32,7 @@ export default function NqtrRoundIconButton(props: NqtrRoundIconButtonProps) {
|
|
|
32
32
|
|
|
33
33
|
export function NqtrRoundIconButtonConvertor(
|
|
34
34
|
props: NqtrRoundIconButtonProps & {
|
|
35
|
-
image?: string |
|
|
35
|
+
image?: string | TimeSlotsImage | ReactElement | ((props: OnRunProps) => ReactElement);
|
|
36
36
|
}
|
|
37
37
|
) {
|
|
38
38
|
let { image, ...rest } = props;
|
|
@@ -47,26 +47,27 @@ export function NqtrRoundIconButtonConvertor(
|
|
|
47
47
|
return image;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
if (image instanceof
|
|
50
|
+
if (image instanceof TimeSlotsImage) {
|
|
51
51
|
image = image.src;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
if (typeof image == "string") {
|
|
55
55
|
try {
|
|
56
|
-
|
|
57
|
-
image = Assets.resolver.resolve(image).src || image;
|
|
56
|
+
image = getPixiJSAsset(image);
|
|
58
57
|
} catch {}
|
|
59
58
|
return (
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
59
|
+
<LazyLoadComponent>
|
|
60
|
+
<NqtrRoundIconButton
|
|
61
|
+
{...rest}
|
|
62
|
+
sx={{
|
|
63
|
+
backgroundImage: `url(${image})`,
|
|
64
|
+
backgroundSize: "cover",
|
|
65
|
+
backgroundPosition: "center",
|
|
66
|
+
fontSize: { xs: "1rem", sm: "1.5rem", md: "2rem", lg: "2.5rem", xl: "3rem" },
|
|
67
|
+
...rest.sx,
|
|
68
|
+
}}
|
|
69
|
+
/>
|
|
70
|
+
</LazyLoadComponent>
|
|
70
71
|
);
|
|
71
72
|
}
|
|
72
73
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { IconButton, IconButtonProps, Shadow, Tooltip } from "@mui/joy";
|
|
2
|
+
import { useShallow } from "zustand/react/shallow";
|
|
3
|
+
import useInterfaceStore from "../stores/useInterfaceStore";
|
|
2
4
|
|
|
3
5
|
export interface RoundIconButtonProps extends IconButtonProps {
|
|
4
6
|
circumference?: string | {} | number;
|
|
@@ -8,6 +10,7 @@ export interface RoundIconButtonProps extends IconButtonProps {
|
|
|
8
10
|
|
|
9
11
|
export default function RoundIconButton(props: RoundIconButtonProps) {
|
|
10
12
|
const { sx, circumference, ariaLabel, elevation, ...rest } = props;
|
|
13
|
+
const hidden = useInterfaceStore(useShallow((state) => state.hidden));
|
|
11
14
|
|
|
12
15
|
return (
|
|
13
16
|
<Tooltip key={props.key ? "tooltip-" + props.key : undefined} title={ariaLabel}>
|
|
@@ -15,11 +18,13 @@ export default function RoundIconButton(props: RoundIconButtonProps) {
|
|
|
15
18
|
{/* This div is necessary to avoid the tooltip to be cutted */}
|
|
16
19
|
<IconButton
|
|
17
20
|
title={ariaLabel}
|
|
21
|
+
className={hidden ? "motion-scale-out-[0]" : "motion-scale-in-[0]"}
|
|
18
22
|
sx={{
|
|
19
23
|
borderRadius: "50%",
|
|
20
24
|
height: circumference,
|
|
21
25
|
width: circumference,
|
|
22
26
|
boxShadow: elevation ?? undefined,
|
|
27
|
+
pointerEvents: hidden ? "none" : "auto",
|
|
23
28
|
...sx,
|
|
24
29
|
}}
|
|
25
30
|
{...rest}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import VisibilityOffIcon from "@mui/icons-material/VisibilityOff";
|
|
2
|
+
import { IconButton, useTheme } from "@mui/joy";
|
|
3
|
+
import { useEffect, useMemo } from "react";
|
|
4
|
+
import { useShallow } from "zustand/react/shallow";
|
|
5
|
+
import useEventListener from "../hooks/useKeyDetector";
|
|
6
|
+
import useInterfaceStore from "../stores/useInterfaceStore";
|
|
7
|
+
|
|
8
|
+
export default function VisibilityButton() {
|
|
9
|
+
const hidden = useInterfaceStore(useShallow((state) => state.hidden));
|
|
10
|
+
const editHideInterface = useInterfaceStore((state) => state.editHidden);
|
|
11
|
+
const showInterface = useInterfaceStore((state) => state.show);
|
|
12
|
+
const iconVarians = useMemo(() => (hidden ? `motion-preset-pop` : `motion-scale-out-0`), [hidden]);
|
|
13
|
+
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
return () => {
|
|
16
|
+
showInterface();
|
|
17
|
+
};
|
|
18
|
+
}, [showInterface]);
|
|
19
|
+
|
|
20
|
+
useEventListener({
|
|
21
|
+
type: "keyup",
|
|
22
|
+
listener: (event) => {
|
|
23
|
+
if (event.code == "KeyV" && event.altKey) {
|
|
24
|
+
editHideInterface();
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<IconButton
|
|
31
|
+
onClick={editHideInterface}
|
|
32
|
+
sx={{
|
|
33
|
+
position: "absolute",
|
|
34
|
+
top: 0,
|
|
35
|
+
right: 0,
|
|
36
|
+
}}
|
|
37
|
+
className={iconVarians}
|
|
38
|
+
>
|
|
39
|
+
<VisibilityOffIcon
|
|
40
|
+
sx={{
|
|
41
|
+
color: useTheme().palette.neutral[500],
|
|
42
|
+
}}
|
|
43
|
+
/>
|
|
44
|
+
</IconButton>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
import { StepLabelProps } from "@drincs/pixi-vn";
|
|
2
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
2
3
|
import { useSnackbar } from "notistack";
|
|
3
4
|
import { useTranslation } from "react-i18next";
|
|
4
5
|
import useMyNavigate from "./useMyNavigate";
|
|
6
|
+
import { INTERFACE_DATA_USE_QUEY_KEY } from "./useQueryInterface";
|
|
7
|
+
import useTimeTracker from "./useTimeTracker";
|
|
5
8
|
|
|
6
9
|
export default function useGameProps(): StepLabelProps {
|
|
7
10
|
const navigate = useMyNavigate();
|
|
8
11
|
const { t } = useTranslation(["narration"]);
|
|
9
12
|
const { t: uiTransition } = useTranslation(["ui"]);
|
|
10
13
|
const { enqueueSnackbar } = useSnackbar();
|
|
14
|
+
const queryClient = useQueryClient();
|
|
15
|
+
const { sleep, wait } = useTimeTracker();
|
|
11
16
|
|
|
12
17
|
return {
|
|
13
18
|
navigate,
|
|
14
19
|
t,
|
|
15
20
|
uiTransition,
|
|
16
21
|
notify: enqueueSnackbar,
|
|
22
|
+
invalidateInterfaceData: () => {
|
|
23
|
+
queryClient.invalidateQueries({ queryKey: [INTERFACE_DATA_USE_QUEY_KEY] });
|
|
24
|
+
},
|
|
25
|
+
sleep,
|
|
26
|
+
wait,
|
|
17
27
|
};
|
|
18
28
|
}
|
|
@@ -4,15 +4,12 @@ import { useCallback } from "react";
|
|
|
4
4
|
import { useTranslation } from "react-i18next";
|
|
5
5
|
import { useLocation } from "react-router-dom";
|
|
6
6
|
import useGameSaveScreenStore from "../stores/useGameSaveScreenStore";
|
|
7
|
-
import useInterfaceStore from "../stores/useInterfaceStore";
|
|
8
7
|
import { putSaveIntoIndexDB } from "../utils/save-utility";
|
|
9
8
|
import useEventListener from "./useKeyDetector";
|
|
10
9
|
import useQueryLastSave, { LAST_SAVE_USE_QUEY_KEY } from "./useQueryLastSave";
|
|
11
10
|
import { SAVES_USE_QUEY_KEY } from "./useQuerySaves";
|
|
12
11
|
|
|
13
12
|
export default function useKeyboardDetector() {
|
|
14
|
-
const hideInterface = useInterfaceStore((state) => state.hidden);
|
|
15
|
-
const setHideInterface = useInterfaceStore((state) => state.setHidden);
|
|
16
13
|
const setOpenLoadAlert = useGameSaveScreenStore((state) => state.editLoadAlert);
|
|
17
14
|
const queryClient = useQueryClient();
|
|
18
15
|
const { t } = useTranslation(["ui"]);
|
|
@@ -23,17 +20,6 @@ export default function useKeyboardDetector() {
|
|
|
23
20
|
const onkeydown = useCallback(
|
|
24
21
|
(event: KeyboardEvent) => {
|
|
25
22
|
switch (event.code) {
|
|
26
|
-
case "Enter":
|
|
27
|
-
case "Space":
|
|
28
|
-
if (hideInterface) {
|
|
29
|
-
setHideInterface(false);
|
|
30
|
-
}
|
|
31
|
-
break;
|
|
32
|
-
case "KeyV":
|
|
33
|
-
if (event.altKey) {
|
|
34
|
-
setHideInterface(!hideInterface);
|
|
35
|
-
}
|
|
36
|
-
break;
|
|
37
23
|
case "KeyS":
|
|
38
24
|
if (event.altKey) {
|
|
39
25
|
if (location.pathname === "/") {
|
|
@@ -62,7 +48,7 @@ export default function useKeyboardDetector() {
|
|
|
62
48
|
break;
|
|
63
49
|
}
|
|
64
50
|
},
|
|
65
|
-
[location,
|
|
51
|
+
[location, lastSave, queryClient, t]
|
|
66
52
|
);
|
|
67
53
|
|
|
68
54
|
useEventListener({ type: "keydown", listener: onkeydown });
|