create-pixi-vn 1.7.3 → 1.7.4
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/package.json +3 -3
- package/template-game-engine/package.json +1 -1
- package/template-nqtr-react-vite-muijoy/.vscode/settings.json +4 -0
- package/template-nqtr-react-vite-muijoy/package.json +2 -2
- package/template-nqtr-react-vite-muijoy/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-nqtr-react-vite-muijoy/src/hooks/useMinigame.ts +3 -2
- package/template-nqtr-react-vite-muijoy/src/i18n.ts +25 -3
- package/template-nqtr-react-vite-muijoy/src/locales/strings_en.json +28 -27
- package/template-nqtr-react-vite-muijoy/src/screens/QuickTools.tsx +2 -2
- package/template-nqtr-react-vite-muijoy/src/screens/Settings.tsx +2 -0
- package/template-nqtr-react-vite-muijoy/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-nqtr-react-vite-muijoy/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-nqtr-react-vite-muijoy/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-nqtr-react-vite-muijoy/src/utils/indexedDB-utility.ts +1 -1
- package/template-nqtr-react-vite-muijoy/src/utils/save-utility.ts +9 -9
- package/template-nqtr-react-vite-muijoy-ink/.vscode/settings.json +4 -0
- package/template-nqtr-react-vite-muijoy-ink/package.json +3 -3
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useInkInitialization.tsx +3 -1
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-nqtr-react-vite-muijoy-ink/src/hooks/useMinigame.ts +3 -2
- package/template-nqtr-react-vite-muijoy-ink/src/i18n.ts +41 -3
- package/template-nqtr-react-vite-muijoy-ink/src/locales/strings_en.json +28 -27
- package/template-nqtr-react-vite-muijoy-ink/src/main.tsx +53 -51
- package/template-nqtr-react-vite-muijoy-ink/src/screens/QuickTools.tsx +2 -2
- package/template-nqtr-react-vite-muijoy-ink/src/screens/Settings.tsx +2 -0
- package/template-nqtr-react-vite-muijoy-ink/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-nqtr-react-vite-muijoy-ink/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-nqtr-react-vite-muijoy-ink/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-nqtr-react-vite-muijoy-ink/src/utils/indexedDB-utility.ts +1 -1
- package/template-nqtr-react-vite-muijoy-ink/src/utils/ink-utility.ts +22 -5
- package/template-nqtr-react-vite-muijoy-ink/src/utils/save-utility.ts +9 -9
- package/template-nqtr-react-vite-muijoy-ink/vite.config.ts +2 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/.vscode/settings.json +4 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/package.json +4 -4
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useInkInitialization.tsx +3 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useMinigame.ts +3 -2
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/i18n.ts +41 -3
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/locales/strings_en.json +28 -27
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/main.tsx +53 -51
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/QuickTools.tsx +2 -2
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/Settings.tsx +2 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/indexedDB-utility.ts +1 -1
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/ink-utility.ts +22 -5
- package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/save-utility.ts +9 -9
- package/template-nqtr-react-vite-muijoy-ink-tauri/vite.config.ts +2 -0
- package/template-nqtr-react-vite-muijoy-tauri/.vscode/settings.json +4 -0
- package/template-nqtr-react-vite-muijoy-tauri/package.json +2 -2
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useMinigame.ts +3 -2
- package/template-nqtr-react-vite-muijoy-tauri/src/i18n.ts +25 -3
- package/template-nqtr-react-vite-muijoy-tauri/src/locales/strings_en.json +28 -27
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/QuickTools.tsx +2 -2
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/Settings.tsx +2 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-nqtr-react-vite-muijoy-tauri/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-nqtr-react-vite-muijoy-tauri/src/utils/indexedDB-utility.ts +1 -1
- package/template-nqtr-react-vite-muijoy-tauri/src/utils/save-utility.ts +9 -9
- package/template-react-vite-muijoy/.vscode/settings.json +4 -0
- package/template-react-vite-muijoy/package.json +2 -2
- package/template-react-vite-muijoy/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-react-vite-muijoy/src/hooks/useMinigame.ts +3 -2
- package/template-react-vite-muijoy/src/i18n.ts +25 -3
- package/template-react-vite-muijoy/src/locales/strings_en.json +4 -3
- package/template-react-vite-muijoy/src/screens/QuickTools.tsx +2 -2
- package/template-react-vite-muijoy/src/screens/Settings.tsx +2 -0
- package/template-react-vite-muijoy/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-react-vite-muijoy/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-react-vite-muijoy/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-react-vite-muijoy/src/utils/indexedDB-utility.ts +1 -1
- package/template-react-vite-muijoy/src/utils/save-utility.ts +9 -9
- package/template-react-vite-muijoy-ink/.vscode/settings.json +4 -0
- package/template-react-vite-muijoy-ink/package.json +3 -3
- package/template-react-vite-muijoy-ink/src/hooks/useInkInitialization.tsx +3 -1
- package/template-react-vite-muijoy-ink/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-react-vite-muijoy-ink/src/hooks/useMinigame.ts +3 -2
- package/template-react-vite-muijoy-ink/src/i18n.ts +41 -3
- package/template-react-vite-muijoy-ink/src/locales/strings_en.json +4 -3
- package/template-react-vite-muijoy-ink/src/main.tsx +3 -0
- package/template-react-vite-muijoy-ink/src/screens/QuickTools.tsx +2 -2
- package/template-react-vite-muijoy-ink/src/screens/Settings.tsx +2 -0
- package/template-react-vite-muijoy-ink/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-react-vite-muijoy-ink/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-react-vite-muijoy-ink/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-react-vite-muijoy-ink/src/utils/indexedDB-utility.ts +1 -1
- package/template-react-vite-muijoy-ink/src/utils/ink-utility.ts +22 -5
- package/template-react-vite-muijoy-ink/src/utils/save-utility.ts +9 -9
- package/template-react-vite-muijoy-ink/vite.config.ts +2 -0
- package/template-react-vite-muijoy-ink-tauri/.vscode/settings.json +4 -0
- package/template-react-vite-muijoy-ink-tauri/package.json +4 -4
- package/template-react-vite-muijoy-ink-tauri/src/hooks/useInkInitialization.tsx +3 -1
- package/template-react-vite-muijoy-ink-tauri/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-react-vite-muijoy-ink-tauri/src/hooks/useMinigame.ts +3 -2
- package/template-react-vite-muijoy-ink-tauri/src/i18n.ts +41 -3
- package/template-react-vite-muijoy-ink-tauri/src/locales/strings_en.json +4 -3
- package/template-react-vite-muijoy-ink-tauri/src/main.tsx +3 -0
- package/template-react-vite-muijoy-ink-tauri/src/screens/QuickTools.tsx +2 -2
- package/template-react-vite-muijoy-ink-tauri/src/screens/Settings.tsx +2 -0
- package/template-react-vite-muijoy-ink-tauri/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-react-vite-muijoy-ink-tauri/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-react-vite-muijoy-ink-tauri/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-react-vite-muijoy-ink-tauri/src/utils/indexedDB-utility.ts +1 -1
- package/template-react-vite-muijoy-ink-tauri/src/utils/ink-utility.ts +22 -5
- package/template-react-vite-muijoy-ink-tauri/src/utils/save-utility.ts +9 -9
- package/template-react-vite-muijoy-ink-tauri/vite.config.ts +2 -0
- package/template-react-vite-muijoy-tauri/.vscode/settings.json +4 -0
- package/template-react-vite-muijoy-tauri/package.json +2 -2
- package/template-react-vite-muijoy-tauri/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-react-vite-muijoy-tauri/src/hooks/useMinigame.ts +3 -2
- package/template-react-vite-muijoy-tauri/src/i18n.ts +25 -3
- package/template-react-vite-muijoy-tauri/src/locales/strings_en.json +4 -3
- package/template-react-vite-muijoy-tauri/src/screens/QuickTools.tsx +2 -2
- package/template-react-vite-muijoy-tauri/src/screens/Settings.tsx +2 -0
- package/template-react-vite-muijoy-tauri/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-react-vite-muijoy-tauri/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-react-vite-muijoy-tauri/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-react-vite-muijoy-tauri/src/utils/indexedDB-utility.ts +1 -1
- package/template-react-vite-muijoy-tauri/src/utils/save-utility.ts +9 -9
- package/template-story-react-vite-muijoy/.vscode/settings.json +4 -0
- package/template-story-react-vite-muijoy/package.json +2 -2
- package/template-story-react-vite-muijoy/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-story-react-vite-muijoy/src/hooks/useMinigame.ts +3 -2
- package/template-story-react-vite-muijoy/src/i18n.ts +25 -3
- package/template-story-react-vite-muijoy/src/locales/strings_en.json +4 -3
- package/template-story-react-vite-muijoy/src/screens/QuickTools.tsx +2 -2
- package/template-story-react-vite-muijoy/src/screens/Settings.tsx +2 -0
- package/template-story-react-vite-muijoy/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-story-react-vite-muijoy/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-story-react-vite-muijoy/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-story-react-vite-muijoy/src/utils/indexedDB-utility.ts +1 -1
- package/template-story-react-vite-muijoy/src/utils/save-utility.ts +9 -9
- package/template-story-react-vite-muijoy-ink/.vscode/settings.json +4 -0
- package/template-story-react-vite-muijoy-ink/package.json +3 -3
- package/template-story-react-vite-muijoy-ink/src/hooks/useInkInitialization.tsx +3 -1
- package/template-story-react-vite-muijoy-ink/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-story-react-vite-muijoy-ink/src/hooks/useMinigame.ts +3 -2
- package/template-story-react-vite-muijoy-ink/src/i18n.ts +41 -3
- package/template-story-react-vite-muijoy-ink/src/locales/strings_en.json +4 -3
- package/template-story-react-vite-muijoy-ink/src/main.tsx +3 -0
- package/template-story-react-vite-muijoy-ink/src/screens/QuickTools.tsx +2 -2
- package/template-story-react-vite-muijoy-ink/src/screens/Settings.tsx +2 -0
- package/template-story-react-vite-muijoy-ink/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-story-react-vite-muijoy-ink/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-story-react-vite-muijoy-ink/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-story-react-vite-muijoy-ink/src/utils/indexedDB-utility.ts +1 -1
- package/template-story-react-vite-muijoy-ink/src/utils/ink-utility.ts +22 -5
- package/template-story-react-vite-muijoy-ink/src/utils/save-utility.ts +9 -9
- package/template-story-react-vite-muijoy-ink/vite.config.ts +2 -0
- package/template-story-react-vite-muijoy-ink-tauri/.vscode/settings.json +4 -0
- package/template-story-react-vite-muijoy-ink-tauri/package.json +4 -4
- package/template-story-react-vite-muijoy-ink-tauri/src/hooks/useInkInitialization.tsx +3 -1
- package/template-story-react-vite-muijoy-ink-tauri/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-story-react-vite-muijoy-ink-tauri/src/hooks/useMinigame.ts +3 -2
- package/template-story-react-vite-muijoy-ink-tauri/src/i18n.ts +41 -3
- package/template-story-react-vite-muijoy-ink-tauri/src/locales/strings_en.json +4 -3
- package/template-story-react-vite-muijoy-ink-tauri/src/main.tsx +3 -0
- package/template-story-react-vite-muijoy-ink-tauri/src/screens/QuickTools.tsx +2 -2
- package/template-story-react-vite-muijoy-ink-tauri/src/screens/Settings.tsx +2 -0
- package/template-story-react-vite-muijoy-ink-tauri/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-story-react-vite-muijoy-ink-tauri/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-story-react-vite-muijoy-ink-tauri/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-story-react-vite-muijoy-ink-tauri/src/utils/indexedDB-utility.ts +1 -1
- package/template-story-react-vite-muijoy-ink-tauri/src/utils/ink-utility.ts +22 -5
- package/template-story-react-vite-muijoy-ink-tauri/src/utils/save-utility.ts +9 -9
- package/template-story-react-vite-muijoy-ink-tauri/vite.config.ts +2 -0
- package/template-story-react-vite-muijoy-tauri/.vscode/settings.json +4 -0
- package/template-story-react-vite-muijoy-tauri/package.json +2 -2
- package/template-story-react-vite-muijoy-tauri/src/hooks/useKeyboardDetector.ts +2 -2
- package/template-story-react-vite-muijoy-tauri/src/hooks/useMinigame.ts +3 -2
- package/template-story-react-vite-muijoy-tauri/src/i18n.ts +25 -3
- package/template-story-react-vite-muijoy-tauri/src/locales/strings_en.json +4 -3
- package/template-story-react-vite-muijoy-tauri/src/screens/QuickTools.tsx +2 -2
- package/template-story-react-vite-muijoy-tauri/src/screens/Settings.tsx +2 -0
- package/template-story-react-vite-muijoy-tauri/src/screens/modals/SaveLoadAlert.tsx +2 -2
- package/template-story-react-vite-muijoy-tauri/src/screens/settings/DownloadFileToTranslateSettingButton.tsx +32 -0
- package/template-story-react-vite-muijoy-tauri/src/screens/settings/SaveLoadSettingButtons.tsx +3 -7
- package/template-story-react-vite-muijoy-tauri/src/utils/indexedDB-utility.ts +1 -1
- package/template-story-react-vite-muijoy-tauri/src/utils/save-utility.ts +9 -9
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-pixi-vn",
|
|
3
3
|
"description": "Create a new Pixi’VN project",
|
|
4
|
-
"version": "1.7.
|
|
4
|
+
"version": "1.7.4",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "GPL-3.0",
|
|
7
7
|
"author": "DRincs-Productions",
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"@clack/prompts": "^0.11.0",
|
|
51
51
|
"@types/minimist": "^1.2.5",
|
|
52
52
|
"@types/which": "^3.0.4",
|
|
53
|
-
"inquirer": "^12.
|
|
53
|
+
"inquirer": "^12.9.3",
|
|
54
54
|
"kolorist": "^1.8.0",
|
|
55
55
|
"minimist": "^1.2.8",
|
|
56
|
-
"unbuild": "^3.
|
|
56
|
+
"unbuild": "^3.6.1"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"execa": "^9.6.0",
|
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
"editor.formatOnSave": true,
|
|
26
26
|
"prettier.tabWidth": 2,
|
|
27
27
|
},
|
|
28
|
+
"[json]": {
|
|
29
|
+
"editor.defaultFormatter": "vscode.json-language-features",
|
|
30
|
+
"editor.formatOnSave": true
|
|
31
|
+
},
|
|
28
32
|
"prettier.jsxSingleQuote": true,
|
|
29
33
|
"prettier.printWidth": 120,
|
|
30
34
|
"prettier.useTabs": false,
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@drincs/nqtr": "^0.5.7",
|
|
15
|
-
"@drincs/pixi-vn": "^1.3.
|
|
15
|
+
"@drincs/pixi-vn": "^1.3.19",
|
|
16
16
|
"@emotion/react": "^11.14.0",
|
|
17
17
|
"@emotion/styled": "^11.14.1",
|
|
18
18
|
"@mui/icons-material": "^7.3.1",
|
|
@@ -70,4 +70,4 @@
|
|
|
70
70
|
"visual-novel",
|
|
71
71
|
"vn"
|
|
72
72
|
]
|
|
73
|
-
}
|
|
73
|
+
}
|
|
@@ -4,7 +4,7 @@ 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 {
|
|
7
|
+
import { saveGameToIndexDB } from "../utils/save-utility";
|
|
8
8
|
import useEventListener from "./useKeyDetector";
|
|
9
9
|
import useQueryLastSave, { LAST_SAVE_USE_QUEY_KEY } from "./useQueryLastSave";
|
|
10
10
|
import { SAVES_USE_QUEY_KEY } from "./useQuerySaves";
|
|
@@ -26,7 +26,7 @@ export default function useKeyboardDetector() {
|
|
|
26
26
|
console.log("Can't save on home page");
|
|
27
27
|
break;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
saveGameToIndexDB()
|
|
30
30
|
.then((save) => {
|
|
31
31
|
queryClient.setQueryData([SAVES_USE_QUEY_KEY, save.id], save);
|
|
32
32
|
queryClient.setQueryData([LAST_SAVE_USE_QUEY_KEY], save);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { canvas, Layer
|
|
1
|
+
import { canvas, Layer } from "@drincs/pixi-vn";
|
|
2
|
+
import { Container } from "@drincs/pixi-vn/pixi.js";
|
|
2
3
|
import { useEffect, useRef } from "react";
|
|
3
4
|
import { CANVAS_MINIGAME_LAYER_NAME } from "../constans";
|
|
4
5
|
|
|
@@ -27,7 +28,7 @@ export default function useMinigame(
|
|
|
27
28
|
useEffect(() => {
|
|
28
29
|
// Create the layer and start the game once
|
|
29
30
|
loading.current = true;
|
|
30
|
-
const layer = canvas.addLayer(CANVAS_MINIGAME_LAYER_NAME, new
|
|
31
|
+
const layer = canvas.addLayer(CANVAS_MINIGAME_LAYER_NAME, new Container());
|
|
31
32
|
if (!layer) {
|
|
32
33
|
console.error("Failed to create UI layer for minigame");
|
|
33
34
|
return;
|
|
@@ -3,10 +3,32 @@ import Backend from "i18next-chained-backend";
|
|
|
3
3
|
import resourcesToBackend from "i18next-resources-to-backend";
|
|
4
4
|
import { initReactI18next } from "react-i18next";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
function getUserLang(): string {
|
|
7
7
|
let userLang: string = navigator.language || "en";
|
|
8
8
|
return userLang?.toLocaleLowerCase()?.split("-")[0];
|
|
9
|
-
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function getLocalesResource(lng: string): Promise<any> {
|
|
12
|
+
return import(`./locales/strings_${lng}.json`);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function generateResourceToTranslate(lng: string): Promise<any> {
|
|
16
|
+
return getLocalesResource(lng);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export async function downloadResourceToTranslate() {
|
|
20
|
+
const lng = i18n.options.fallbackLng?.toString() || "en";
|
|
21
|
+
const data = await generateResourceToTranslate(lng);
|
|
22
|
+
const jsonString = JSON.stringify(data);
|
|
23
|
+
// download the save data as a JSON file
|
|
24
|
+
const blob = new Blob([jsonString], { type: "application/json" });
|
|
25
|
+
// download the file
|
|
26
|
+
const url = URL.createObjectURL(blob);
|
|
27
|
+
const a = document.createElement("a");
|
|
28
|
+
a.href = url;
|
|
29
|
+
a.download = `strings_${lng}.json`;
|
|
30
|
+
a.click();
|
|
31
|
+
}
|
|
10
32
|
|
|
11
33
|
export const useI18n = () => {
|
|
12
34
|
if (!i18n.isInitialized) {
|
|
@@ -23,7 +45,7 @@ export const useI18n = () => {
|
|
|
23
45
|
backend: {
|
|
24
46
|
backends: [
|
|
25
47
|
resourcesToBackend(async (lng: string, ns: string) => {
|
|
26
|
-
let object = await
|
|
48
|
+
let object = await getLocalesResource(lng);
|
|
27
49
|
return object[ns];
|
|
28
50
|
}),
|
|
29
51
|
],
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"narration": {},
|
|
2
3
|
"ui": {
|
|
3
4
|
"allert_error_occurred": "An error occurred, please report it to the developer",
|
|
4
5
|
"attention": "Attention",
|
|
@@ -55,36 +56,36 @@
|
|
|
55
56
|
"you_sure_to_delete_save": "Are you sure you want to delete this save file?",
|
|
56
57
|
"you_sure_to_load_save": "Are you sure you want to load this save file?",
|
|
57
58
|
"you_sure_to_return_main_menu": "Are you sure you want to return to the main menu? All unsaved progress will be lost.",
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
59
|
+
"download_locale": "Download File to Translate",
|
|
60
|
+
"morning": "Morning",
|
|
61
|
+
"afternoon": "Afternoon",
|
|
62
|
+
"evening": "Evening",
|
|
63
|
+
"night": "Night",
|
|
64
|
+
"monday": "Monday",
|
|
65
|
+
"tuesday": "Tuesday",
|
|
66
|
+
"wednesday": "Wednesday",
|
|
67
|
+
"thursday": "Thursday",
|
|
68
|
+
"friday": "Friday",
|
|
69
|
+
"saturday": "Saturday",
|
|
70
|
+
"sunday": "Sunday",
|
|
71
|
+
"nap": "Nap",
|
|
72
|
+
"sleep": "Sleep",
|
|
73
|
+
"allarm_menu_item": "{{hour}} 00",
|
|
74
|
+
"nap_menu_item": "{{hour}} hours",
|
|
75
|
+
"wait": "Wait",
|
|
76
|
+
"quests": "Quests",
|
|
77
|
+
"completed": "Completed",
|
|
78
|
+
"failed": "Failed",
|
|
79
|
+
"memo": "Memo",
|
|
80
|
+
"map": "Map",
|
|
81
|
+
"quest_completed_description": "This quest has been completed.",
|
|
82
|
+
"quest_is_in_development": "That is all for the moment. The quest is in development.",
|
|
83
|
+
"notify_quest_is_started": "The \"{{quest}}\" quest has started.",
|
|
84
|
+
"notify_quest_is_updated": "The \"{{quest}}\" quest has been updated.",
|
|
83
85
|
"bed": "Bed",
|
|
84
86
|
"order_product": "Order Products",
|
|
85
87
|
"take_product": "Take Product",
|
|
86
88
|
"cant_sleep_now": "You can't sleep now",
|
|
87
89
|
"cant_wait_now": "You can't wait anymore, you should sleep now"
|
|
88
|
-
}
|
|
89
|
-
"narration": {}
|
|
90
|
+
}
|
|
90
91
|
}
|
|
@@ -15,7 +15,7 @@ import useInterfaceStore from "../stores/useInterfaceStore";
|
|
|
15
15
|
import useSettingsScreenStore from "../stores/useSettingsScreenStore";
|
|
16
16
|
import useSkipStore from "../stores/useSkipStore";
|
|
17
17
|
import useStepStore from "../stores/useStepStore";
|
|
18
|
-
import {
|
|
18
|
+
import { saveGameToIndexDB } from "../utils/save-utility";
|
|
19
19
|
|
|
20
20
|
export default function QuickTools() {
|
|
21
21
|
const editOpenSettings = useSettingsScreenStore((state) => state.editOpen);
|
|
@@ -93,7 +93,7 @@ export default function QuickTools() {
|
|
|
93
93
|
</TextMenuButton>
|
|
94
94
|
<TextMenuButton
|
|
95
95
|
onClick={() => {
|
|
96
|
-
|
|
96
|
+
saveGameToIndexDB()
|
|
97
97
|
.then((save) => {
|
|
98
98
|
queryClient.setQueryData([SAVES_USE_QUEY_KEY, save.id], save);
|
|
99
99
|
queryClient.setQueryData([LAST_SAVE_USE_QUEY_KEY], save);
|
|
@@ -17,6 +17,7 @@ import useEventListener from "../hooks/useKeyDetector";
|
|
|
17
17
|
import useSettingsScreenStore from "../stores/useSettingsScreenStore";
|
|
18
18
|
import AutoSettingToggle from "./settings/AutoSettingToggle";
|
|
19
19
|
import DialoguesSettings from "./settings/DialoguesSettings";
|
|
20
|
+
import DownloadFileToTranslateSettingButton from "./settings/DownloadFileToTranslateSettingButton";
|
|
20
21
|
import FullScreenSettings from "./settings/FullScreenSettings";
|
|
21
22
|
import HideInterfaceSettingToggle from "./settings/HideInterfaceSettingToggle";
|
|
22
23
|
import OpenHistorySettingButton from "./settings/OpenHistorySettingButton";
|
|
@@ -89,6 +90,7 @@ export default function Settings() {
|
|
|
89
90
|
<OpenHistorySettingButton />
|
|
90
91
|
<SaveLoadSettingButtons />
|
|
91
92
|
<HideInterfaceSettingToggle />
|
|
93
|
+
<DownloadFileToTranslateSettingButton />
|
|
92
94
|
</Box>
|
|
93
95
|
</RadioGroup>
|
|
94
96
|
</FormControl>
|
|
@@ -10,7 +10,7 @@ import { INTERFACE_DATA_USE_QUEY_KEY } from "../../hooks/useQueryInterface";
|
|
|
10
10
|
import { LAST_SAVE_USE_QUEY_KEY } from "../../hooks/useQueryLastSave";
|
|
11
11
|
import { SAVES_USE_QUEY_KEY } from "../../hooks/useQuerySaves";
|
|
12
12
|
import useGameSaveScreenStore from "../../stores/useGameSaveScreenStore";
|
|
13
|
-
import { deleteSaveFromIndexDB, loadSave,
|
|
13
|
+
import { deleteSaveFromIndexDB, loadSave, saveGameToIndexDB } from "../../utils/save-utility";
|
|
14
14
|
|
|
15
15
|
export default function SaveLoadAlert() {
|
|
16
16
|
const navigate = useMyNavigate();
|
|
@@ -73,7 +73,7 @@ export default function SaveLoadAlert() {
|
|
|
73
73
|
});
|
|
74
74
|
case "save":
|
|
75
75
|
case "overwrite_save":
|
|
76
|
-
return
|
|
76
|
+
return saveGameToIndexDB({ id: alertData.data, name: tempSaveName })
|
|
77
77
|
.then((save) => {
|
|
78
78
|
queryClient.setQueryData([SAVES_USE_QUEY_KEY, save.id], save);
|
|
79
79
|
queryClient.setQueryData([LAST_SAVE_USE_QUEY_KEY], save);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import TranslateIcon from "@mui/icons-material/Translate";
|
|
2
|
+
import { Typography } from "@mui/joy";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { useTranslation } from "react-i18next";
|
|
5
|
+
import SettingButton from "../../components/SettingButton";
|
|
6
|
+
import { downloadResourceToTranslate } from "../../i18n";
|
|
7
|
+
|
|
8
|
+
export default function DownloadFileToTranslateSettingButton() {
|
|
9
|
+
const { t } = useTranslation(["ui"]);
|
|
10
|
+
const [loading, setLoading] = useState(false);
|
|
11
|
+
|
|
12
|
+
// Only show this button in development mode
|
|
13
|
+
if (import.meta.env.PROD) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<SettingButton
|
|
19
|
+
key={"download_locale"}
|
|
20
|
+
onClick={() => {
|
|
21
|
+
setLoading(true);
|
|
22
|
+
downloadResourceToTranslate()
|
|
23
|
+
.then(() => setLoading(false))
|
|
24
|
+
.catch(() => setLoading(false));
|
|
25
|
+
}}
|
|
26
|
+
disabled={loading}
|
|
27
|
+
>
|
|
28
|
+
<TranslateIcon />
|
|
29
|
+
<Typography level='title-md'>{t("download_locale")}</Typography>
|
|
30
|
+
</SettingButton>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
@@ -15,7 +15,7 @@ import useQueryLastSave, { LAST_SAVE_USE_QUEY_KEY } from "../../hooks/useQueryLa
|
|
|
15
15
|
import { SAVES_USE_QUEY_KEY } from "../../hooks/useQuerySaves";
|
|
16
16
|
import useGameSaveScreenStore from "../../stores/useGameSaveScreenStore";
|
|
17
17
|
import useSettingsScreenStore from "../../stores/useSettingsScreenStore";
|
|
18
|
-
import { downloadGameSave, loadGameSaveFromFile,
|
|
18
|
+
import { downloadGameSave, loadGameSaveFromFile, saveGameToIndexDB } from "../../utils/save-utility";
|
|
19
19
|
|
|
20
20
|
export default function SaveLoadSettingButtons() {
|
|
21
21
|
const navigate = useMyNavigate();
|
|
@@ -33,7 +33,7 @@ export default function SaveLoadSettingButtons() {
|
|
|
33
33
|
<SettingButton
|
|
34
34
|
key={"quick_save_button"}
|
|
35
35
|
onClick={() => {
|
|
36
|
-
|
|
36
|
+
saveGameToIndexDB()
|
|
37
37
|
.then((save) => {
|
|
38
38
|
queryClient.setQueryData([SAVES_USE_QUEY_KEY, save.id], save);
|
|
39
39
|
queryClient.setQueryData([LAST_SAVE_USE_QUEY_KEY], save);
|
|
@@ -91,11 +91,7 @@ export default function SaveLoadSettingButtons() {
|
|
|
91
91
|
<Typography level='title-md'>{t(`${t("save")}/${t("load")}`)}</Typography>
|
|
92
92
|
</SettingButton>,
|
|
93
93
|
location.pathname === "/" ? null : (
|
|
94
|
-
<SettingButton
|
|
95
|
-
key={"download_button"}
|
|
96
|
-
onClick={() => downloadGameSave()}
|
|
97
|
-
disabled={location.pathname === "/"}
|
|
98
|
-
>
|
|
94
|
+
<SettingButton key={"save_to_file"} onClick={() => downloadGameSave()} disabled={location.pathname === "/"}>
|
|
99
95
|
<DownloadIcon />
|
|
100
96
|
<Typography level='title-md'>{t("save_to_file")}</Typography>
|
|
101
97
|
</SettingButton>
|
|
@@ -13,31 +13,31 @@ import {
|
|
|
13
13
|
|
|
14
14
|
const SAVE_FILE_EXTENSION = "json";
|
|
15
15
|
|
|
16
|
-
export function
|
|
16
|
+
export function createGameSave(options?: { image?: string; name?: string }): GameSaveData {
|
|
17
|
+
const { image, name = "" } = options || {};
|
|
17
18
|
return {
|
|
18
19
|
saveData: Game.exportGameState(),
|
|
19
20
|
gameVersion: __APP_VERSION__,
|
|
20
21
|
date: new Date(),
|
|
21
|
-
name:
|
|
22
|
+
name: name,
|
|
22
23
|
image: image,
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
export async function loadSave(saveData: GameSaveData, navigate: NavigateFunction) {
|
|
27
28
|
await navigate(LOADING_ROUTE);
|
|
28
|
-
// load the save data from the JSON string
|
|
29
29
|
await Game.restoreGameState(saveData.saveData, navigate);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export async function
|
|
32
|
+
export async function saveGameToIndexDB(
|
|
33
33
|
info: Partial<GameSaveData> & { id?: number } = {},
|
|
34
|
-
data =
|
|
34
|
+
data = createGameSave()
|
|
35
35
|
): Promise<GameSaveData & { id: number }> {
|
|
36
|
-
|
|
36
|
+
const { image = await canvas.extractImage(), ...rest } = info;
|
|
37
37
|
let item = {
|
|
38
38
|
...data,
|
|
39
39
|
image: image,
|
|
40
|
-
...
|
|
40
|
+
...rest,
|
|
41
41
|
};
|
|
42
42
|
if (item.id === undefined) {
|
|
43
43
|
let lastSave = await getLastRowFromIndexDB<GameSaveData & { id: number }>(INDEXED_DB_SAVE_TABLE);
|
|
@@ -73,7 +73,7 @@ export async function deleteSaveFromIndexDB(id: number): Promise<void> {
|
|
|
73
73
|
return await deleteRowFromIndexDB(INDEXED_DB_SAVE_TABLE, id);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
export function downloadGameSave(data: GameSaveData =
|
|
76
|
+
export function downloadGameSave(data: GameSaveData = createGameSave()) {
|
|
77
77
|
const jsonString = JSON.stringify(data);
|
|
78
78
|
// download the save data as a JSON file
|
|
79
79
|
const blob = new Blob([jsonString], { type: "application/json" });
|
|
@@ -114,7 +114,7 @@ export function loadGameSaveFromFile(navigate: NavigateFunction, afterLoad?: ()
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
export async function addRefreshSave() {
|
|
117
|
-
const data =
|
|
117
|
+
const data = createGameSave();
|
|
118
118
|
let jsonString = JSON.stringify(data);
|
|
119
119
|
if (jsonString) {
|
|
120
120
|
localStorage.setItem(REFRESH_SAVE_LOCAL_STORAGE_KEY, jsonString);
|
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
"editor.formatOnSave": true,
|
|
26
26
|
"prettier.tabWidth": 2,
|
|
27
27
|
},
|
|
28
|
+
"[json]": {
|
|
29
|
+
"editor.defaultFormatter": "vscode.json-language-features",
|
|
30
|
+
"editor.formatOnSave": true
|
|
31
|
+
},
|
|
28
32
|
"prettier.jsxSingleQuote": true,
|
|
29
33
|
"prettier.printWidth": 120,
|
|
30
34
|
"prettier.useTabs": false,
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@drincs/nqtr": "^0.5.7",
|
|
15
|
-
"@drincs/pixi-vn": "^1.3.
|
|
16
|
-
"@drincs/pixi-vn-ink": "^0.
|
|
15
|
+
"@drincs/pixi-vn": "^1.3.19",
|
|
16
|
+
"@drincs/pixi-vn-ink": "^0.9.6",
|
|
17
17
|
"@emotion/react": "^11.14.0",
|
|
18
18
|
"@emotion/styled": "^11.14.1",
|
|
19
19
|
"@mui/icons-material": "^7.3.1",
|
|
@@ -71,4 +71,4 @@
|
|
|
71
71
|
"visual-novel",
|
|
72
72
|
"vn"
|
|
73
73
|
]
|
|
74
|
-
}
|
|
74
|
+
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
|
+
import { useTranslation } from "react-i18next";
|
|
2
3
|
import { initializeInk } from "../utils/ink-utility";
|
|
3
4
|
|
|
4
5
|
export default function useInkInitialization() {
|
|
6
|
+
const { t } = useTranslation(["narration"]);
|
|
5
7
|
useEffect(() => {
|
|
6
|
-
initializeInk();
|
|
8
|
+
initializeInk({ t });
|
|
7
9
|
}, []);
|
|
8
10
|
|
|
9
11
|
return null;
|
|
@@ -4,7 +4,7 @@ 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 {
|
|
7
|
+
import { saveGameToIndexDB } from "../utils/save-utility";
|
|
8
8
|
import useEventListener from "./useKeyDetector";
|
|
9
9
|
import useQueryLastSave, { LAST_SAVE_USE_QUEY_KEY } from "./useQueryLastSave";
|
|
10
10
|
import { SAVES_USE_QUEY_KEY } from "./useQuerySaves";
|
|
@@ -26,7 +26,7 @@ export default function useKeyboardDetector() {
|
|
|
26
26
|
console.log("Can't save on home page");
|
|
27
27
|
break;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
saveGameToIndexDB()
|
|
30
30
|
.then((save) => {
|
|
31
31
|
queryClient.setQueryData([SAVES_USE_QUEY_KEY, save.id], save);
|
|
32
32
|
queryClient.setQueryData([LAST_SAVE_USE_QUEY_KEY], save);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { canvas, Layer
|
|
1
|
+
import { canvas, Layer } from "@drincs/pixi-vn";
|
|
2
|
+
import { Container } from "@drincs/pixi-vn/pixi.js";
|
|
2
3
|
import { useEffect, useRef } from "react";
|
|
3
4
|
import { CANVAS_MINIGAME_LAYER_NAME } from "../constans";
|
|
4
5
|
|
|
@@ -27,7 +28,7 @@ export default function useMinigame(
|
|
|
27
28
|
useEffect(() => {
|
|
28
29
|
// Create the layer and start the game once
|
|
29
30
|
loading.current = true;
|
|
30
|
-
const layer = canvas.addLayer(CANVAS_MINIGAME_LAYER_NAME, new
|
|
31
|
+
const layer = canvas.addLayer(CANVAS_MINIGAME_LAYER_NAME, new Container());
|
|
31
32
|
if (!layer) {
|
|
32
33
|
console.error("Failed to create UI layer for minigame");
|
|
33
34
|
return;
|
|
@@ -1,13 +1,51 @@
|
|
|
1
1
|
import { RegisteredCharacters } from "@drincs/pixi-vn";
|
|
2
|
+
import { generateJsonInkTranslation } from "@drincs/pixi-vn-ink";
|
|
2
3
|
import i18n from "i18next";
|
|
3
4
|
import Backend from "i18next-chained-backend";
|
|
4
5
|
import resourcesToBackend from "i18next-resources-to-backend";
|
|
5
6
|
import { initReactI18next } from "react-i18next";
|
|
7
|
+
import { convertInkToJson } from "./utils/ink-utility";
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
function getUserLang(): string {
|
|
8
10
|
let userLang: string = navigator.language || "en";
|
|
9
11
|
return userLang?.toLocaleLowerCase()?.split("-")[0];
|
|
10
|
-
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getLocalesResource(lng: string): Promise<any> {
|
|
15
|
+
return import(`./locales/strings_${lng}.json`);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async function generateResourceToTranslate(lng: string): Promise<any> {
|
|
19
|
+
let res = await getLocalesResource(lng);
|
|
20
|
+
res = { ...res };
|
|
21
|
+
if (!res) {
|
|
22
|
+
res = {};
|
|
23
|
+
}
|
|
24
|
+
if (!res.narration) {
|
|
25
|
+
res.narration = {};
|
|
26
|
+
}
|
|
27
|
+
if (res.default) {
|
|
28
|
+
delete res.default;
|
|
29
|
+
}
|
|
30
|
+
(await convertInkToJson()).forEach((element) => {
|
|
31
|
+
element && generateJsonInkTranslation(element, res.narration);
|
|
32
|
+
});
|
|
33
|
+
return res;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export async function downloadResourceToTranslate() {
|
|
37
|
+
const lng = i18n.options.fallbackLng?.toString() || "en";
|
|
38
|
+
const data = await generateResourceToTranslate(lng);
|
|
39
|
+
const jsonString = JSON.stringify(data);
|
|
40
|
+
// download the save data as a JSON file
|
|
41
|
+
const blob = new Blob([jsonString], { type: "application/json" });
|
|
42
|
+
// download the file
|
|
43
|
+
const url = URL.createObjectURL(blob);
|
|
44
|
+
const a = document.createElement("a");
|
|
45
|
+
a.href = url;
|
|
46
|
+
a.download = `strings_${lng}.json`;
|
|
47
|
+
a.click();
|
|
48
|
+
}
|
|
11
49
|
|
|
12
50
|
export const useI18n = () => {
|
|
13
51
|
if (!i18n.isInitialized) {
|
|
@@ -24,7 +62,7 @@ export const useI18n = () => {
|
|
|
24
62
|
backend: {
|
|
25
63
|
backends: [
|
|
26
64
|
resourcesToBackend(async (lng: string, ns: string) => {
|
|
27
|
-
let object = await
|
|
65
|
+
let object = await getLocalesResource(lng);
|
|
28
66
|
return object[ns];
|
|
29
67
|
}),
|
|
30
68
|
],
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"narration": {},
|
|
2
3
|
"ui": {
|
|
3
4
|
"allert_error_occurred": "An error occurred, please report it to the developer",
|
|
4
5
|
"attention": "Attention",
|
|
@@ -55,36 +56,36 @@
|
|
|
55
56
|
"you_sure_to_delete_save": "Are you sure you want to delete this save file?",
|
|
56
57
|
"you_sure_to_load_save": "Are you sure you want to load this save file?",
|
|
57
58
|
"you_sure_to_return_main_menu": "Are you sure you want to return to the main menu? All unsaved progress will be lost.",
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
59
|
+
"download_locale": "Download File to Translate",
|
|
60
|
+
"morning": "Morning",
|
|
61
|
+
"afternoon": "Afternoon",
|
|
62
|
+
"evening": "Evening",
|
|
63
|
+
"night": "Night",
|
|
64
|
+
"monday": "Monday",
|
|
65
|
+
"tuesday": "Tuesday",
|
|
66
|
+
"wednesday": "Wednesday",
|
|
67
|
+
"thursday": "Thursday",
|
|
68
|
+
"friday": "Friday",
|
|
69
|
+
"saturday": "Saturday",
|
|
70
|
+
"sunday": "Sunday",
|
|
71
|
+
"nap": "Nap",
|
|
72
|
+
"sleep": "Sleep",
|
|
73
|
+
"allarm_menu_item": "{{hour}} 00",
|
|
74
|
+
"nap_menu_item": "{{hour}} hours",
|
|
75
|
+
"wait": "Wait",
|
|
76
|
+
"quests": "Quests",
|
|
77
|
+
"completed": "Completed",
|
|
78
|
+
"failed": "Failed",
|
|
79
|
+
"memo": "Memo",
|
|
80
|
+
"map": "Map",
|
|
81
|
+
"quest_completed_description": "This quest has been completed.",
|
|
82
|
+
"quest_is_in_development": "That is all for the moment. The quest is in development.",
|
|
83
|
+
"notify_quest_is_started": "The \"{{quest}}\" quest has started.",
|
|
84
|
+
"notify_quest_is_updated": "The \"{{quest}}\" quest has been updated.",
|
|
83
85
|
"bed": "Bed",
|
|
84
86
|
"order_product": "Order Products",
|
|
85
87
|
"take_product": "Take Product",
|
|
86
88
|
"cant_sleep_now": "You can't sleep now",
|
|
87
89
|
"cant_wait_now": "You can't wait anymore, you should sleep now"
|
|
88
|
-
}
|
|
89
|
-
"narration": {}
|
|
90
|
+
}
|
|
90
91
|
}
|