create-pixi-vn 2.0.9 → 2.0.11

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.
Files changed (144) hide show
  1. package/package.json +1 -1
  2. package/template-react-vite-muijoy/.vscode/launch.json +9 -2
  3. package/template-react-vite-muijoy/.vscode/tasks.json +20 -4
  4. package/template-react-vite-muijoy/package-lock.json +100 -81
  5. package/template-react-vite-muijoy/package.json +3 -2
  6. package/template-react-vite-muijoy/src/components/loading.tsx +5 -44
  7. package/template-react-vite-muijoy/src/components/menus/settings/about.tsx +1 -1
  8. package/template-react-vite-muijoy/src/components/quick-tools.tsx +1 -1
  9. package/template-react-vite-muijoy/src/components/screens/narration/narration-cards.tsx +2 -3
  10. package/template-react-vite-muijoy/src/lib/query/narration-query.ts +5 -1
  11. package/template-react-vite-muijoy/src/lib/utils/assets-utility.ts +1 -1
  12. package/template-react-vite-muijoy-ink/.vscode/extensions.json +1 -2
  13. package/template-react-vite-muijoy-ink/.vscode/launch.json +9 -2
  14. package/template-react-vite-muijoy-ink/.vscode/settings.json +1 -6
  15. package/template-react-vite-muijoy-ink/.vscode/tasks.json +20 -4
  16. package/template-react-vite-muijoy-ink/_gitignore +0 -1
  17. package/template-react-vite-muijoy-ink/package-lock.json +104 -311
  18. package/template-react-vite-muijoy-ink/package.json +4 -5
  19. package/template-react-vite-muijoy-ink/src/App.tsx +25 -25
  20. package/template-react-vite-muijoy-ink/src/assets/index.ts +4 -2
  21. package/template-react-vite-muijoy-ink/src/assets/ink-manifest.gen.json +1 -4
  22. package/template-react-vite-muijoy-ink/src/components/loading.tsx +5 -44
  23. package/template-react-vite-muijoy-ink/src/components/menus/settings/about.tsx +1 -1
  24. package/template-react-vite-muijoy-ink/src/components/quick-tools.tsx +1 -1
  25. package/template-react-vite-muijoy-ink/src/components/screens/narration/narration-cards.tsx +2 -3
  26. package/template-react-vite-muijoy-ink/src/content/labels/second.label.ts +1207 -0
  27. package/template-react-vite-muijoy-ink/src/content/labels/start.label.ts +566 -0
  28. package/template-react-vite-muijoy-ink/src/lib/i18n.ts +1 -22
  29. package/template-react-vite-muijoy-ink/src/lib/query/narration-query.ts +5 -1
  30. package/template-react-vite-muijoy-ink/src/lib/utils/assets-utility.ts +1 -1
  31. package/template-react-vite-muijoy-ink/src/pixi-vn-keys.gen.d.ts +0 -2
  32. package/template-react-vite-muijoy-ink/src/routes/__root.tsx +0 -4
  33. package/template-react-vite-muijoy-ink/vite.config.ts +0 -6
  34. package/template-react-vite-muijoy-ink-tauri/.assetpack.ts +0 -9
  35. package/template-react-vite-muijoy-ink-tauri/.vscode/extensions.json +1 -5
  36. package/template-react-vite-muijoy-ink-tauri/.vscode/launch.json +6 -10
  37. package/template-react-vite-muijoy-ink-tauri/.vscode/settings.json +1 -6
  38. package/template-react-vite-muijoy-ink-tauri/.vscode/tasks.json +17 -48
  39. package/template-react-vite-muijoy-ink-tauri/README.md +3 -3
  40. package/template-react-vite-muijoy-ink-tauri/_gitignore +0 -11
  41. package/template-react-vite-muijoy-ink-tauri/package-lock.json +100 -557
  42. package/template-react-vite-muijoy-ink-tauri/package.json +5 -15
  43. package/template-react-vite-muijoy-ink-tauri/src/App.tsx +25 -25
  44. package/template-react-vite-muijoy-ink-tauri/src/assets/index.ts +4 -2
  45. package/template-react-vite-muijoy-ink-tauri/src/assets/ink-manifest.gen.json +1 -4
  46. package/template-react-vite-muijoy-ink-tauri/src/components/loading.tsx +5 -44
  47. package/template-react-vite-muijoy-ink-tauri/src/components/menus/main-menu.tsx +1 -16
  48. package/template-react-vite-muijoy-ink-tauri/src/components/menus/settings/about.tsx +1 -1
  49. package/template-react-vite-muijoy-ink-tauri/src/components/menus/settings/quick-menus.tsx +1 -17
  50. package/template-react-vite-muijoy-ink-tauri/src/components/menus/settings/system-controls.tsx +1 -11
  51. package/template-react-vite-muijoy-ink-tauri/src/components/quick-tools.tsx +1 -1
  52. package/template-react-vite-muijoy-ink-tauri/src/components/screens/narration/narration-cards.tsx +2 -3
  53. package/template-react-vite-muijoy-ink-tauri/src/content/labels/second.label.ts +1207 -0
  54. package/template-react-vite-muijoy-ink-tauri/src/content/labels/start.label.ts +566 -0
  55. package/template-react-vite-muijoy-ink-tauri/src/lib/i18n.ts +1 -22
  56. package/template-react-vite-muijoy-ink-tauri/src/lib/query/narration-query.ts +5 -1
  57. package/template-react-vite-muijoy-ink-tauri/src/lib/query/settings-query.ts +1 -7
  58. package/template-react-vite-muijoy-ink-tauri/src/lib/utils/assets-utility.ts +1 -1
  59. package/template-react-vite-muijoy-ink-tauri/src/pixi-vn-keys.gen.d.ts +0 -2
  60. package/template-react-vite-muijoy-ink-tauri/src/routes/__root.tsx +0 -4
  61. package/template-react-vite-muijoy-ink-tauri/vite.config.ts +0 -30
  62. package/template-react-vite-muijoy-tauri/.assetpack.ts +0 -9
  63. package/template-react-vite-muijoy-tauri/.vscode/extensions.json +1 -4
  64. package/template-react-vite-muijoy-tauri/.vscode/launch.json +6 -10
  65. package/template-react-vite-muijoy-tauri/.vscode/tasks.json +17 -48
  66. package/template-react-vite-muijoy-tauri/README.md +3 -3
  67. package/template-react-vite-muijoy-tauri/_gitignore +0 -10
  68. package/template-react-vite-muijoy-tauri/package-lock.json +100 -331
  69. package/template-react-vite-muijoy-tauri/package.json +4 -12
  70. package/template-react-vite-muijoy-tauri/src/components/loading.tsx +5 -44
  71. package/template-react-vite-muijoy-tauri/src/components/menus/main-menu.tsx +1 -16
  72. package/template-react-vite-muijoy-tauri/src/components/menus/settings/about.tsx +1 -1
  73. package/template-react-vite-muijoy-tauri/src/components/menus/settings/quick-menus.tsx +1 -17
  74. package/template-react-vite-muijoy-tauri/src/components/menus/settings/system-controls.tsx +1 -11
  75. package/template-react-vite-muijoy-tauri/src/components/quick-tools.tsx +1 -1
  76. package/template-react-vite-muijoy-tauri/src/components/screens/narration/narration-cards.tsx +2 -3
  77. package/template-react-vite-muijoy-tauri/src/lib/query/narration-query.ts +5 -1
  78. package/template-react-vite-muijoy-tauri/src/lib/query/settings-query.ts +1 -7
  79. package/template-react-vite-muijoy-tauri/src/lib/utils/assets-utility.ts +1 -1
  80. package/template-react-vite-muijoy-tauri/vite.config.ts +0 -24
  81. package/template-react-vite-muijoy-ink/ink/second_part.ink +0 -571
  82. package/template-react-vite-muijoy-ink/ink/start.ink +0 -214
  83. package/template-react-vite-muijoy-ink/src/content/ink/hashtag-commands.ts +0 -38
  84. package/template-react-vite-muijoy-ink/src/content/ink/text-replaces.ts +0 -19
  85. package/template-react-vite-muijoy-ink/src/lib/hooks/ink-hooks.tsx +0 -12
  86. package/template-react-vite-muijoy-ink-tauri/_github/workflows/desktop.yml +0 -188
  87. package/template-react-vite-muijoy-ink-tauri/_github/workflows/mobile.yml +0 -270
  88. package/template-react-vite-muijoy-ink-tauri/ink/second_part.ink +0 -571
  89. package/template-react-vite-muijoy-ink-tauri/ink/start.ink +0 -214
  90. package/template-react-vite-muijoy-ink-tauri/src/content/ink/hashtag-commands.ts +0 -55
  91. package/template-react-vite-muijoy-ink-tauri/src/content/ink/text-replaces.ts +0 -19
  92. package/template-react-vite-muijoy-ink-tauri/src/lib/hooks/ink-hooks.tsx +0 -12
  93. package/template-react-vite-muijoy-ink-tauri/src/lib/hooks/quit-hooks.ts +0 -24
  94. package/template-react-vite-muijoy-ink-tauri/src/lib/steam.ts +0 -143
  95. package/template-react-vite-muijoy-ink-tauri/src-tauri/Cargo.toml +0 -50
  96. package/template-react-vite-muijoy-ink-tauri/src-tauri/build.rs +0 -46
  97. package/template-react-vite-muijoy-ink-tauri/src-tauri/capabilities/default.json +0 -21
  98. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/128x128.png +0 -0
  99. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/128x128@2x.png +0 -0
  100. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/32x32.png +0 -0
  101. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square107x107Logo.png +0 -0
  102. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square142x142Logo.png +0 -0
  103. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square150x150Logo.png +0 -0
  104. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square284x284Logo.png +0 -0
  105. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square30x30Logo.png +0 -0
  106. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square310x310Logo.png +0 -0
  107. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square44x44Logo.png +0 -0
  108. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square71x71Logo.png +0 -0
  109. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/Square89x89Logo.png +0 -0
  110. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/StoreLogo.png +0 -0
  111. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/icon.icns +0 -0
  112. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/icon.ico +0 -0
  113. package/template-react-vite-muijoy-ink-tauri/src-tauri/icons/icon.png +0 -0
  114. package/template-react-vite-muijoy-ink-tauri/src-tauri/src/lib.rs +0 -64
  115. package/template-react-vite-muijoy-ink-tauri/src-tauri/src/main.rs +0 -6
  116. package/template-react-vite-muijoy-ink-tauri/src-tauri/src/steam.rs +0 -238
  117. package/template-react-vite-muijoy-ink-tauri/src-tauri/tauri.conf.json +0 -50
  118. package/template-react-vite-muijoy-tauri/_github/workflows/desktop.yml +0 -188
  119. package/template-react-vite-muijoy-tauri/_github/workflows/mobile.yml +0 -270
  120. package/template-react-vite-muijoy-tauri/src/lib/hooks/quit-hooks.ts +0 -24
  121. package/template-react-vite-muijoy-tauri/src/lib/steam.ts +0 -143
  122. package/template-react-vite-muijoy-tauri/src-tauri/Cargo.toml +0 -50
  123. package/template-react-vite-muijoy-tauri/src-tauri/build.rs +0 -46
  124. package/template-react-vite-muijoy-tauri/src-tauri/capabilities/default.json +0 -21
  125. package/template-react-vite-muijoy-tauri/src-tauri/icons/128x128.png +0 -0
  126. package/template-react-vite-muijoy-tauri/src-tauri/icons/128x128@2x.png +0 -0
  127. package/template-react-vite-muijoy-tauri/src-tauri/icons/32x32.png +0 -0
  128. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square107x107Logo.png +0 -0
  129. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square142x142Logo.png +0 -0
  130. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square150x150Logo.png +0 -0
  131. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square284x284Logo.png +0 -0
  132. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square30x30Logo.png +0 -0
  133. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square310x310Logo.png +0 -0
  134. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square44x44Logo.png +0 -0
  135. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square71x71Logo.png +0 -0
  136. package/template-react-vite-muijoy-tauri/src-tauri/icons/Square89x89Logo.png +0 -0
  137. package/template-react-vite-muijoy-tauri/src-tauri/icons/StoreLogo.png +0 -0
  138. package/template-react-vite-muijoy-tauri/src-tauri/icons/icon.icns +0 -0
  139. package/template-react-vite-muijoy-tauri/src-tauri/icons/icon.ico +0 -0
  140. package/template-react-vite-muijoy-tauri/src-tauri/icons/icon.png +0 -0
  141. package/template-react-vite-muijoy-tauri/src-tauri/src/lib.rs +0 -64
  142. package/template-react-vite-muijoy-tauri/src-tauri/src/main.rs +0 -6
  143. package/template-react-vite-muijoy-tauri/src-tauri/src/steam.rs +0 -238
  144. package/template-react-vite-muijoy-tauri/src-tauri/tauri.conf.json +0 -50
@@ -0,0 +1,566 @@
1
+ import { BGM_CHANNEL_NAME } from "@/constants";
2
+ import { james, mc, sly, steph, steph_fullname } from "@/content/characters";
3
+ import {
4
+ Assets,
5
+ moveIn,
6
+ moveOut,
7
+ narration,
8
+ newChoiceOption,
9
+ newCloseChoiceOption,
10
+ newLabel,
11
+ showImage,
12
+ showImageContainer,
13
+ sound,
14
+ } from "@drincs/pixi-vn";
15
+
16
+ export const startLabel = newLabel(
17
+ "start",
18
+ [
19
+ async () => {
20
+ await showImage("bg", "bg01-hallway");
21
+ await sound.play("sfx_whoosh", { delay: 0.1 });
22
+ await moveIn(
23
+ "james",
24
+ {
25
+ value: ["m01-body", "m01-eyes-smile", "m01-mouth-neutral01"],
26
+ options: { xAlign: 0.5, yAlign: 1 },
27
+ },
28
+ { direction: "right", ease: "circInOut", type: "spring" },
29
+ );
30
+ narration.dialogue = {
31
+ character: james,
32
+ text: `You're my roommate's replacement, huh?`,
33
+ };
34
+ },
35
+ async () => {
36
+ await sound.play("bgm_cheerful", { channel: BGM_CHANNEL_NAME, loop: true });
37
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-smile01"]);
38
+ narration.dialogue = {
39
+ character: james,
40
+ text: `Don't worry, you don't have much to live up to. Just don't use heroin like the last guy, and you'll be fine!`,
41
+ };
42
+ },
43
+ async () => {
44
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-grin00"]);
45
+ narration.dialogue = { character: mc, text: `...` };
46
+ },
47
+ () => {
48
+ narration.dialogue = `He thrusts out his hand.`;
49
+ },
50
+ async () => {
51
+ narration.requestInput({ type: "string" }, "Peter");
52
+ narration.dialogue = `What is your name?`;
53
+ },
54
+ async () => {
55
+ mc.name = narration.inputValue as string;
56
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-smile01"]);
57
+ narration.dialogue = { character: james, text: `${james.name}!` };
58
+ },
59
+ async () => {
60
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
61
+ narration.dialogue = { character: mc, text: `...${mc.name}.` };
62
+ },
63
+ async () => {
64
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-grin00"]);
65
+ narration.dialogue = `I take his hand and shake.`;
66
+ },
67
+ async () => {
68
+ await showImageContainer("james", ["m01-body", "m01-eyes-wow", "m01-mouth-wow01"]);
69
+ narration.dialogue = {
70
+ character: james,
71
+ text: `Ooh, ${mc.name}! Nice, firm handshake!`,
72
+ };
73
+ },
74
+ async () => {
75
+ await showImageContainer("james", ["m01-body", "m01-eyes-annoy", "m01-mouth-annoy01"]);
76
+ narration.dialogGlue = true;
77
+ narration.dialogue = `The last guy always gave me the dead fish.`;
78
+ },
79
+ async () => {
80
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-smile01"]);
81
+ narration.dialogGlue = true;
82
+ narration.dialogue = `I already think we're gonna get along fine.`;
83
+ },
84
+ async () => {
85
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-smile01"]);
86
+ narration.dialogue = { character: james, text: `Come on in and...` };
87
+ },
88
+ async () => {
89
+ await showImageContainer("james", ["m01-body", "m01-eyes-annoy", "m01-mouth-smile01"]);
90
+ narration.dialogue = { character: james, text: `...` };
91
+ },
92
+ async () => {
93
+ await showImageContainer("james", ["m01-body", "m01-eyes-annoy", "m01-mouth-annoy01"]);
94
+ narration.dialogue = {
95
+ character: james,
96
+ text: `I know you're both watching, come on out already!`,
97
+ };
98
+ },
99
+ async () => {
100
+ await showImageContainer("james", ["m01-body", "m01-eyes-annoy", "m01-mouth-annoy00"]);
101
+ await sound.play("sfx_whoosh", { delay: 0.1 });
102
+ await moveIn(
103
+ "sly",
104
+ {
105
+ value: ["fm01-body", "fm01-eyes-wow", "fm01-mouth-soft01"],
106
+ options: { xAlign: 0.2, yAlign: 1 },
107
+ },
108
+ { direction: "right", ease: "anticipate" },
109
+ );
110
+ await moveIn(
111
+ "steph",
112
+ {
113
+ value: ["fm02-body", "fm02-eyes-nervous", "fm02-mouth-nervous00"],
114
+ options: { xAlign: 0.8, yAlign: 1 },
115
+ },
116
+ { direction: "left", ease: "easeInOut" },
117
+ );
118
+ narration.dialogue = {
119
+ character: sly,
120
+ text: `I just wanted to see what the new guy was like.`,
121
+ };
122
+ },
123
+ async () => {
124
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-smile01"]);
125
+ narration.dialogGlue = true;
126
+ narration.dialogue = `<span class="inline-block animate-bounce animate-duration-700">Hey</span>, you, ${mc.name}- be nice to our little brother,`;
127
+ },
128
+ async () => {
129
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-smile", "fm01-mouth-grin00"]);
130
+ narration.dialogGlue = true;
131
+ narration.dialogue = `or you'll have to deal with *us*.`;
132
+ },
133
+ async () => {
134
+ await showImageContainer("james", [
135
+ "m01-body",
136
+ "m01-eyes-smile",
137
+ "m01-mouth-neutral00",
138
+ ]);
139
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-grin", "fm01-mouth-grin00"]);
140
+ await showImageContainer("steph", [
141
+ "fm02-body",
142
+ "fm02-eyes-nervous",
143
+ "fm02-mouth-smile00",
144
+ ]);
145
+ narration.dialogue = { character: mc, text: `...` };
146
+ },
147
+ async () => {
148
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-smile01"]);
149
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-smile", "fm01-mouth-smile00"]);
150
+ narration.dialogue = { character: james, text: `${mc.name}, this is ${sly.name}.` };
151
+ },
152
+ async () => {
153
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-smile00"]);
154
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-joy", "fm02-mouth-smile00"]);
155
+ narration.dialogGlue = true;
156
+ narration.dialogue = `Yes, that is her real name.`;
157
+ },
158
+ async () => {
159
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-smile00"]);
160
+ narration.dialogue = `I put out my hand.`;
161
+ },
162
+ async () => {
163
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
164
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-upset01"]);
165
+ await showImageContainer("steph", [
166
+ "fm02-body",
167
+ "fm02-eyes-wow",
168
+ "fm02-mouth-nervous00",
169
+ ]);
170
+ narration.dialogue = {
171
+ character: sly,
172
+ text: `I'm not shakin' your hand until I decide you're an all-right dude.`,
173
+ };
174
+ },
175
+ async () => {
176
+ await showImageContainer("sly", [
177
+ "fm01-body",
178
+ "fm01-eyes-grin",
179
+ "fm01-mouth-serious01",
180
+ ]);
181
+ await showImageContainer("steph", [
182
+ "fm02-body",
183
+ "fm02-eyes-nervous",
184
+ "fm02-mouth-nervous00",
185
+ ]);
186
+ narration.dialogGlue = true;
187
+ narration.dialogue = `Sorry, policy.`;
188
+ },
189
+ async () => {
190
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
191
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-smile00"]);
192
+ narration.dialogue = {
193
+ character: mc,
194
+ text: `Fair enough, I'm a pretty scary guy, or so I've been told.`,
195
+ };
196
+ },
197
+ async () => {
198
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-smile01"]);
199
+ await showImageContainer("sly", [
200
+ "fm01-body",
201
+ "fm01-eyes-smile",
202
+ "fm01-mouth-serious01",
203
+ ]);
204
+ await showImageContainer("steph", [
205
+ "fm02-body",
206
+ "fm02-eyes-nervous",
207
+ "fm02-mouth-smile00",
208
+ ]);
209
+ narration.dialogue = {
210
+ character: james,
211
+ text: `The redhead behind her is ${steph_fullname}.`,
212
+ };
213
+ },
214
+ async () => {
215
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
216
+ await showImageContainer("sly", [
217
+ "fm01-body",
218
+ "fm01-eyes-smile",
219
+ "fm01-mouth-serious00",
220
+ ]);
221
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-joy", "fm02-mouth-smile01"]);
222
+ narration.dialogue = {
223
+ character: steph,
224
+ text: `Hey! Everyone calls me ${steph.name}. I'll shake your hand.`,
225
+ };
226
+ },
227
+ async () => {
228
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-smile00"]);
229
+ await showImageContainer("sly", [
230
+ "fm01-body",
231
+ "fm01-eyes-upset",
232
+ "fm01-mouth-serious00",
233
+ ]);
234
+ await showImageContainer("steph", [
235
+ "fm02-body",
236
+ "fm02-eyes-smile",
237
+ "fm02-mouth-smile00",
238
+ ]);
239
+ narration.dialogue = `She puts out her hand, and I take it.`;
240
+ },
241
+ async () => {
242
+ await showImageContainer("sly", [
243
+ "fm01-body",
244
+ "fm01-eyes-upset",
245
+ "fm01-mouth-serious00",
246
+ ]);
247
+ await showImageContainer("steph", [
248
+ "fm02-body",
249
+ "fm02-eyes-wow",
250
+ "fm02-mouth-nervous00",
251
+ ]);
252
+ narration.dialogue = {
253
+ character: mc,
254
+ text: `Thanks, good to meet you, ${steph_fullname}.`,
255
+ };
256
+ },
257
+ async () => {
258
+ await showImageContainer("james", ["m01-body", "m01-eyes-wow", "m01-mouth-smile00"]);
259
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-wow", "fm01-mouth-serious00"]);
260
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-wow", "fm02-mouth-wow01"]);
261
+ narration.dialogue = {
262
+ character: steph,
263
+ text: `WOW, that is, like, the most perfect handshake I've ever had! Firm, but also gentle.`,
264
+ };
265
+ },
266
+ async () => {
267
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-upset00"]);
268
+ narration.dialogGlue = true;
269
+ narration.dialogue = `${sly.name}, you *gotta* shake his hand!`;
270
+ },
271
+ async () => {
272
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
273
+ await showImageContainer("sly", [
274
+ "fm01-body",
275
+ "fm01-eyes-upset",
276
+ "fm01-mouth-serious01",
277
+ ]);
278
+ await showImageContainer("steph", [
279
+ "fm02-body",
280
+ "fm02-eyes-wow",
281
+ "fm02-mouth-nervous00",
282
+ ]);
283
+ narration.dialogue = { character: sly, text: `It's just a handshake...` };
284
+ },
285
+ async () => {
286
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-grin00"]);
287
+ await showImageContainer("sly", [
288
+ "fm01-body",
289
+ "fm01-eyes-upset",
290
+ "fm01-mouth-serious00",
291
+ ]);
292
+ await showImageContainer("steph", [
293
+ "fm02-body",
294
+ "fm02-eyes-upset",
295
+ "fm02-mouth-upset01",
296
+ ]);
297
+ narration.dialogue = {
298
+ character: steph,
299
+ text: `<span class="inline-block animate-wave">Then just give it to him!</span>`,
300
+ };
301
+ },
302
+ async () => {
303
+ await showImageContainer("james", [
304
+ "m01-body",
305
+ "m01-eyes-concern",
306
+ "m01-mouth-smile01",
307
+ ]);
308
+ await showImageContainer("sly", [
309
+ "fm01-body",
310
+ "fm01-eyes-smile",
311
+ "fm01-mouth-serious00",
312
+ ]);
313
+ await showImageContainer("steph", [
314
+ "fm02-body",
315
+ "fm02-eyes-upset",
316
+ "fm02-mouth-upset00",
317
+ ]);
318
+ narration.dialogue = {
319
+ character: james,
320
+ text: `Don't worry, ${mc.name}, she's just giving you the run-down. She's kinda like a father`,
321
+ };
322
+ },
323
+ async () => {
324
+ await showImageContainer("steph", [
325
+ "fm02-body",
326
+ "fm02-eyes-wow",
327
+ "fm02-mouth-nervous00",
328
+ ]);
329
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-wow", "fm01-mouth-wow01"]);
330
+ narration.dialogGlue = true;
331
+ narration.dialogue = `...`;
332
+ },
333
+ async () => {
334
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-upset00"]);
335
+ narration.dialogGlue = true;
336
+ narration.dialogue = `I mean a mother... to us.`;
337
+ },
338
+ async () => {
339
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-smile00"]);
340
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-upset00"]);
341
+ narration.dialogue = `${sly.name} thrusts her hand out to shake mine.`;
342
+ },
343
+ async () => {
344
+ await showImageContainer("james", ["m01-body", "m01-eyes-wow", "m01-mouth-wow01"]);
345
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-upset01"]);
346
+ await showImageContainer("steph", [
347
+ "fm02-body",
348
+ "fm02-eyes-nervous",
349
+ "fm02-mouth-smile00",
350
+ ]);
351
+ narration.dialogue = { character: sly, text: `Like a father?!?!` };
352
+ },
353
+ async () => {
354
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-grin00"]);
355
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-upset00"]);
356
+ narration.dialogue = `I'm afraid to take her hand when she's mad, but I do.`;
357
+ },
358
+ async () => {
359
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
360
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-wow", "fm01-mouth-wow01"]);
361
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-joy", "fm02-mouth-smile00"]);
362
+ narration.dialogue = { character: sly, text: `Wow, that was a good handshake...` };
363
+ },
364
+ async () => {
365
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-wow", "fm01-mouth-serious00"]);
366
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-smile01"]);
367
+ await showImageContainer("steph", [
368
+ "fm02-body",
369
+ "fm02-eyes-smile",
370
+ "fm02-mouth-smile00",
371
+ ]);
372
+ narration.dialogue = {
373
+ character: james,
374
+ text: `Well, I mean, you are *kinda* acting like a father.`,
375
+ };
376
+ },
377
+ async () => {
378
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-smile01"]);
379
+ await showImageContainer("sly", [
380
+ "fm01-body",
381
+ "fm01-eyes-soft",
382
+ "fm01-mouth-serious00",
383
+ ]);
384
+ narration.dialogGlue = true;
385
+ narration.dialogue = `Like, I can totally see it: I'm the daughter, and you as my father,`;
386
+ },
387
+ async () => {
388
+ await showImageContainer("steph", [
389
+ "fm02-body",
390
+ "fm02-eyes-wow",
391
+ "fm02-mouth-nervous00",
392
+ ]);
393
+ narration.dialogGlue = true;
394
+ narration.dialogue = `you want to make sure I'm going out with the right guy...`;
395
+ },
396
+ async () => {
397
+ await showImageContainer("james", [
398
+ "m01-body",
399
+ "m01-eyes-concern",
400
+ "m01-mouth-smile01",
401
+ ]);
402
+ await showImageContainer("sly", [
403
+ "fm01-body",
404
+ "fm01-eyes-upset",
405
+ "fm01-mouth-serious00",
406
+ ]);
407
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-wow", "fm02-mouth-upset00"]);
408
+ narration.dialogGlue = true;
409
+ narration.dialogue = `or something...`;
410
+ },
411
+ async () => {
412
+ await showImageContainer("james", ["m01-body", "m01-eyes-concern", "m01-mouth-grin00"]);
413
+ narration.dialogue = { character: mc, text: `...` };
414
+ },
415
+ async () => {
416
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-upset", "fm01-mouth-upset00"]);
417
+ narration.dialogue = { character: sly, text: `...` };
418
+ },
419
+ async () => {
420
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
421
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-wow", "fm01-mouth-wow01"]);
422
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-joy", "fm02-mouth-smile01"]);
423
+ narration.dialogue = { character: steph, text: `...BWAHAHA!!!!!` };
424
+ },
425
+ async () => {
426
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-wow", "fm01-mouth-serious00"]);
427
+ narration.dialogGlue = true;
428
+ narration.dialogue = `JAMES!!!! WHAAAAT?????? YOU'RE SO AWKWARD!!!!`;
429
+ },
430
+ async () => {
431
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-smile00"]);
432
+ await showImageContainer("sly", [
433
+ "fm01-body",
434
+ "fm01-eyes-smile",
435
+ "fm01-mouth-serious00",
436
+ ]);
437
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-joy", "fm02-mouth-smile00"]);
438
+ narration.dialogue = { character: mc, text: `O-*kay*, I'm gonna go get settled in-` };
439
+ },
440
+ async () => {
441
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-smile", "fm01-mouth-smile00"]);
442
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-wow", "fm02-mouth-wow01"]);
443
+ narration.dialogue = { character: steph, text: `Wait!` };
444
+ },
445
+ async () => {
446
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-joy", "fm02-mouth-smile01"]);
447
+ narration.dialogGlue = true;
448
+ narration.dialogue = `I've got a gift for you!`;
449
+ },
450
+ async () => {
451
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-joy", "fm02-mouth-smile00"]);
452
+ narration.dialogue = { character: mc, text: `...?` };
453
+ },
454
+ async () => {
455
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-grin", "fm01-mouth-smile01"]);
456
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-wow", "fm02-mouth-upset00"]);
457
+ narration.dialogue = { character: sly, text: `It's food.` };
458
+ },
459
+ async () => {
460
+ await showImageContainer("james", ["m01-body", "m01-eyes-concern", "m01-mouth-grin00"]);
461
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-grin", "fm01-mouth-grin00"]);
462
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-wow", "fm02-mouth-wow01"]);
463
+ narration.dialogue = { character: steph, text: `${sly.name}!` };
464
+ },
465
+ async () => {
466
+ await showImageContainer("steph", [
467
+ "fm02-body",
468
+ "fm02-eyes-upset",
469
+ "fm02-mouth-upset01",
470
+ ]);
471
+ narration.dialogGlue = true;
472
+ narration.dialogue = `SPOILERS!!!!`;
473
+ },
474
+ async () => {
475
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
476
+ await showImageContainer("sly", ["fm01-body", "fm01-eyes-smile", "fm01-mouth-smile00"]);
477
+ await showImageContainer("steph", [
478
+ "fm02-body",
479
+ "fm02-eyes-upset",
480
+ "fm02-mouth-nervous00",
481
+ ]);
482
+ await sound.play("sfx_whoosh", { delay: 0.1 });
483
+ moveOut("steph", { direction: "left", ease: "easeInOut" });
484
+ narration.dialogue = `${steph_fullname} goes through the opposite door,`;
485
+ },
486
+ async (props) => {
487
+ narration.dialogGlue = true;
488
+ narration.dialogue = `and returns with a HUGE tinfoil-covered platter.`;
489
+ await sound.play("sfx_whoosh", { delay: 0.1 });
490
+ await narration.call("animation_01", props);
491
+ },
492
+ async () => {
493
+ await showImageContainer("james", [
494
+ "m01-body",
495
+ "m01-eyes-concern",
496
+ "m01-mouth-smile01",
497
+ ]);
498
+ await showImageContainer("sly", [
499
+ "fm01-body",
500
+ "fm01-eyes-smile",
501
+ "fm01-mouth-serious00",
502
+ ]);
503
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-wow", "fm02-mouth-wow01"]);
504
+ narration.dialogue = {
505
+ character: james,
506
+ text: `Looks like you baked way too much again.`,
507
+ };
508
+ },
509
+ async () => {
510
+ await showImageContainer("james", ["m01-body", "m01-eyes-grin", "m01-mouth-grin00"]);
511
+ await showImageContainer("sly", [
512
+ "fm01-body",
513
+ "fm01-eyes-grin",
514
+ "fm01-mouth-serious00",
515
+ ]);
516
+ await showImageContainer("steph", [
517
+ "fm02-body",
518
+ "fm02-eyes-upset",
519
+ "fm02-mouth-upset01",
520
+ ]);
521
+ narration.dialogue = { character: steph, text: `He doesn't have to know that!!!` };
522
+ },
523
+ async () => {
524
+ await showImageContainer("james", ["m01-body", "m01-eyes-smile", "m01-mouth-smile00"]);
525
+ await showImageContainer("sly", [
526
+ "fm01-body",
527
+ "fm01-eyes-smile",
528
+ "fm01-mouth-serious00",
529
+ ]);
530
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-joy", "fm02-mouth-smile00"]);
531
+ narration.dialogue = { character: mc, text: `...thanks... um...` };
532
+ },
533
+ async () => {
534
+ await showImageContainer("steph", ["fm02-body", "fm02-eyes-wow", "fm02-mouth-wow01"]);
535
+ narration.dialogue = { character: steph, text: `Oh! You gotta take in your luggage!` };
536
+ },
537
+ async () => {
538
+ sound.pauseAll();
539
+ await showImageContainer("steph", [
540
+ "fm02-body",
541
+ "fm02-eyes-smile",
542
+ "fm02-mouth-smile00",
543
+ ]);
544
+ await sound.play("sfx_whoosh", { delay: 0.1 });
545
+ moveOut("james", {
546
+ direction: "right",
547
+ ease: "circInOut",
548
+ type: "spring",
549
+ duration: 0.5,
550
+ delay: 0.05,
551
+ });
552
+ moveOut("sly", { direction: "right", ease: "anticipate", duration: 0.5 });
553
+ moveOut("steph", { direction: "left", ease: "easeInOut", duration: 0.5, delay: 0.1 });
554
+ narration.dialogue = `You want continue to the next part?`;
555
+ narration.choices = [
556
+ newChoiceOption("Yes, I want to continue", "second_part", {}, { type: "jump" }),
557
+ newCloseChoiceOption("No, I want to stop here"),
558
+ ];
559
+ },
560
+ ],
561
+ {
562
+ onLoadingLabel: () => {
563
+ Assets.backgroundLoadBundle(["fm01", "fm02", "m01"]);
564
+ },
565
+ },
566
+ );
@@ -1,4 +1,3 @@
1
- import { generateJsonInkTranslation } from "@drincs/pixi-vn-ink";
2
1
  import i18n, { type ReadCallback } from "i18next";
3
2
  import LanguageDetector from "i18next-browser-languagedetector";
4
3
  import ChainedBackend from "i18next-chained-backend";
@@ -45,29 +44,9 @@ function getLocalesResource(lng: string): Promise<Record<string, Record<string,
45
44
  return import(`./../locales/${lng}.json`);
46
45
  }
47
46
 
48
- async function generateResourceToTranslate(lng: string): Promise<any> {
49
- let res = await getLocalesResource(lng);
50
- res = { ...res };
51
- if (!res) {
52
- res = {};
53
- }
54
- if (!res.narration) {
55
- res.narration = {};
56
- }
57
- if (res.default) {
58
- delete res.default;
59
- }
60
- const manifest = await import("@/assets/ink-manifest.gen.json");
61
- for (const path of manifest.default) {
62
- const element = await fetch(path).then((r) => r.json());
63
- element && (await generateJsonInkTranslation(element, res.narration));
64
- }
65
- return res;
66
- }
67
-
68
47
  export async function downloadResourceToTranslate() {
69
48
  const lng = i18n.options.fallbackLng?.toString() || "en";
70
- const data = await generateResourceToTranslate(lng);
49
+ const data = await getLocalesResource(lng);
71
50
  const jsonString = JSON.stringify(data);
72
51
  // download the save data as a JSON file
73
52
  const blob = new Blob([jsonString], { type: "application/json" });
@@ -1,6 +1,6 @@
1
1
  import { INTERFACE_DATA_USE_QUERY_KEY } from "@/constants";
2
2
  import { type CharacterInterface, narration, stepHistory } from "@drincs/pixi-vn";
3
- import { useQuery, useQueryClient } from "@tanstack/react-query";
3
+ import { keepPreviousData, useQuery, useQueryClient } from "@tanstack/react-query";
4
4
  import { useTranslation } from "react-i18next";
5
5
 
6
6
  const CAN_GO_BACK_USE_QUERY_KEY = "can_go_back_use_query_key";
@@ -24,6 +24,7 @@ export function useQueryChoiceMenuOptions() {
24
24
  ? t(option.text)
25
25
  : option.text.map((text) => t(text)).join(" "),
26
26
  })) || [],
27
+ placeholderData: keepPreviousData,
27
28
  });
28
29
  }
29
30
 
@@ -36,6 +37,7 @@ export function useQueryInputValue<T>() {
36
37
  type: narration.inputType,
37
38
  currentValue: narration.inputValue as T | undefined,
38
39
  }),
40
+ placeholderData: keepPreviousData,
39
41
  });
40
42
  }
41
43
 
@@ -86,6 +88,7 @@ export function useQueryDialogue() {
86
88
  character: character,
87
89
  };
88
90
  },
91
+ placeholderData: keepPreviousData,
89
92
  });
90
93
  }
91
94
 
@@ -144,5 +147,6 @@ export function useQueryNarrativeHistory({ searchString }: { searchString?: stri
144
147
  );
145
148
  });
146
149
  },
150
+ placeholderData: keepPreviousData,
147
151
  });
148
152
  }
@@ -8,7 +8,7 @@ let assetsInitialized = false;
8
8
  /**
9
9
  * Define all the assets that will be used in the game.
10
10
  * This function will be called before the game starts.
11
- * You can read more about assets management in the documentation: https://pixi-vn.web.app/start/assets-management.html
11
+ * You can read more about assets management in the documentation: https://pixi-vn.com/start/assets-management.html
12
12
  */
13
13
  export async function defineAssets() {
14
14
  if (!assetsInitialized) {
@@ -15,8 +15,6 @@ declare module "@drincs/pixi-vn/narration" {
15
15
  "animation_01": never;
16
16
  "second_part": never;
17
17
  "start": never;
18
- "start_|_c-0": never;
19
- "start_|_c-1": never;
20
18
  }
21
19
  }
22
20
  export {};