create-pixi-vn 1.6.1 → 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.
Files changed (291) hide show
  1. package/package.json +1 -1
  2. package/template-nqtr-react-vite-muijoy/README.md +1 -0
  3. package/template-nqtr-react-vite-muijoy/package.json +28 -25
  4. package/template-nqtr-react-vite-muijoy/src/App.tsx +9 -1
  5. package/template-nqtr-react-vite-muijoy/src/AppRoutes.tsx +5 -2
  6. package/template-nqtr-react-vite-muijoy/src/Home.tsx +3 -3
  7. package/template-nqtr-react-vite-muijoy/src/assets/manifest.ts +18 -15
  8. package/template-nqtr-react-vite-muijoy/src/components/MenuButton.tsx +11 -1
  9. package/template-nqtr-react-vite-muijoy/src/components/ModalDialog.tsx +20 -23
  10. package/template-nqtr-react-vite-muijoy/src/components/NqtrRoundIconButton.tsx +18 -17
  11. package/template-nqtr-react-vite-muijoy/src/components/RoundIconButton.tsx +5 -0
  12. package/template-nqtr-react-vite-muijoy/src/components/VisibilityButton.tsx +46 -0
  13. package/template-nqtr-react-vite-muijoy/src/hooks/useGameProps.ts +10 -0
  14. package/template-nqtr-react-vite-muijoy/src/hooks/useKeyboardDetector.ts +1 -15
  15. package/template-nqtr-react-vite-muijoy/src/hooks/useNQTRDetector.tsx +39 -36
  16. package/template-nqtr-react-vite-muijoy/src/hooks/useNarrationFunctions.ts +6 -0
  17. package/template-nqtr-react-vite-muijoy/src/hooks/useQueryNQTR.ts +13 -48
  18. package/template-nqtr-react-vite-muijoy/src/hooks/useTimeTracker.ts +48 -0
  19. package/template-nqtr-react-vite-muijoy/src/index.css +1 -0
  20. package/template-nqtr-react-vite-muijoy/src/labels/index.ts +5 -0
  21. package/template-nqtr-react-vite-muijoy/src/labels/sleepNapLabels.ts +33 -17
  22. package/template-nqtr-react-vite-muijoy/src/labels/startLabel.ts +2 -2
  23. package/template-nqtr-react-vite-muijoy/src/labels/variousActionsLabels.ts +26 -20
  24. package/template-nqtr-react-vite-muijoy/src/locales/strings_en.json +3 -1
  25. package/template-nqtr-react-vite-muijoy/src/main.tsx +2 -24
  26. package/template-nqtr-react-vite-muijoy/src/models/MultiTypeSprite.ts +11 -0
  27. package/template-nqtr-react-vite-muijoy/src/models/{ImageTimeSlots.ts → TimeSlotsImage.ts} +1 -1
  28. package/template-nqtr-react-vite-muijoy/src/models/nqtr/Activity.ts +22 -16
  29. package/template-nqtr-react-vite-muijoy/src/models/nqtr/Commitment.ts +33 -25
  30. package/template-nqtr-react-vite-muijoy/src/models/nqtr/Location.ts +23 -15
  31. package/template-nqtr-react-vite-muijoy/src/models/nqtr/Map.ts +12 -5
  32. package/template-nqtr-react-vite-muijoy/src/models/nqtr/Quest.ts +4 -7
  33. package/template-nqtr-react-vite-muijoy/src/models/nqtr/Room.ts +18 -11
  34. package/template-nqtr-react-vite-muijoy/src/models/nqtr/Stage.ts +9 -10
  35. package/template-nqtr-react-vite-muijoy/src/nqtr.d.ts +26 -18
  36. package/template-nqtr-react-vite-muijoy/src/pixi-vn.d.ts +19 -0
  37. package/template-nqtr-react-vite-muijoy/src/{Imports.tsx → providers/RootProvider.tsx} +25 -25
  38. package/template-nqtr-react-vite-muijoy/src/screens/NarrationScreen.tsx +3 -1
  39. package/template-nqtr-react-vite-muijoy/src/screens/QuickTools.tsx +71 -91
  40. package/template-nqtr-react-vite-muijoy/src/screens/nqtr/MapScreen.tsx +24 -9
  41. package/template-nqtr-react-vite-muijoy/src/screens/nqtr/MemoScreen.tsx +3 -4
  42. package/template-nqtr-react-vite-muijoy/src/screens/nqtr/NqtrQuickTools.tsx +0 -3
  43. package/template-nqtr-react-vite-muijoy/src/screens/nqtr/QuickActivities.tsx +57 -53
  44. package/template-nqtr-react-vite-muijoy/src/screens/nqtr/QuickRooms.tsx +7 -10
  45. package/template-nqtr-react-vite-muijoy/src/screens/nqtr/TimeScreen.tsx +10 -7
  46. package/template-nqtr-react-vite-muijoy/src/stores/useInterfaceStore.ts +7 -12
  47. package/template-nqtr-react-vite-muijoy/src/utils/assets-utility.ts +30 -19
  48. package/template-nqtr-react-vite-muijoy/src/utils/image-utility.ts +13 -0
  49. package/template-nqtr-react-vite-muijoy/src/utils/nqtr-utility.ts +25 -0
  50. package/template-nqtr-react-vite-muijoy/src/values/{activity.tsx → activities.tsx} +12 -7
  51. package/template-nqtr-react-vite-muijoy/src/values/characters.ts +2 -3
  52. package/template-nqtr-react-vite-muijoy/src/values/index.ts +6 -0
  53. package/template-nqtr-react-vite-muijoy/src/values/locations.tsx +3 -3
  54. package/template-nqtr-react-vite-muijoy/src/values/maps.tsx +3 -3
  55. 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
  56. package/template-nqtr-react-vite-muijoy/src/values/quests/index.ts +1 -0
  57. package/template-nqtr-react-vite-muijoy/src/values/rooms.tsx +10 -10
  58. package/template-nqtr-react-vite-muijoy/src/values/routine.tsx +17 -11
  59. package/template-nqtr-react-vite-muijoy-ink/README.md +1 -0
  60. package/template-nqtr-react-vite-muijoy-ink/package.json +27 -25
  61. package/template-nqtr-react-vite-muijoy-ink/src/App.tsx +10 -1
  62. package/template-nqtr-react-vite-muijoy-ink/src/AppRoutes.tsx +5 -2
  63. package/template-nqtr-react-vite-muijoy-ink/src/Home.tsx +3 -3
  64. package/template-nqtr-react-vite-muijoy-ink/src/assets/manifest.ts +18 -15
  65. package/template-nqtr-react-vite-muijoy-ink/src/components/NqtrRoundIconButton.tsx +18 -17
  66. package/template-nqtr-react-vite-muijoy-ink/src/components/RoundIconButton.tsx +5 -0
  67. package/template-nqtr-react-vite-muijoy-ink/src/components/VisibilityButton.tsx +46 -0
  68. package/template-nqtr-react-vite-muijoy-ink/src/hooks/useGameProps.ts +4 -0
  69. package/template-nqtr-react-vite-muijoy-ink/src/hooks/useKeyboardDetector.ts +1 -15
  70. package/template-nqtr-react-vite-muijoy-ink/src/hooks/useNQTRDetector.tsx +39 -36
  71. package/template-nqtr-react-vite-muijoy-ink/src/hooks/useNarrationFunctions.ts +6 -0
  72. package/template-nqtr-react-vite-muijoy-ink/src/hooks/useQueryNQTR.ts +13 -48
  73. package/template-nqtr-react-vite-muijoy-ink/src/hooks/useTimeTracker.ts +48 -0
  74. package/template-nqtr-react-vite-muijoy-ink/src/labels/index.ts +4 -1
  75. package/template-nqtr-react-vite-muijoy-ink/src/labels/sleepNapLabels.ts +33 -17
  76. package/template-nqtr-react-vite-muijoy-ink/src/labels/startLabel.ts +2 -2
  77. package/template-nqtr-react-vite-muijoy-ink/src/labels/variousActionsLabels.ts +1 -1
  78. package/template-nqtr-react-vite-muijoy-ink/src/locales/strings_en.json +3 -1
  79. package/template-nqtr-react-vite-muijoy-ink/src/main.tsx +1 -22
  80. package/template-nqtr-react-vite-muijoy-ink/src/models/MultiTypeSprite.ts +11 -0
  81. package/{template-nqtr-react-vite-muijoy-tauri/src/models/ImageTimeSlots.ts → template-nqtr-react-vite-muijoy-ink/src/models/TimeSlotsImage.ts} +1 -1
  82. package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Activity.ts +22 -16
  83. package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Commitment.ts +33 -25
  84. package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Location.ts +23 -15
  85. package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Map.ts +12 -5
  86. package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Quest.ts +4 -7
  87. package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Room.ts +18 -11
  88. package/template-nqtr-react-vite-muijoy-ink/src/models/nqtr/Stage.ts +9 -10
  89. package/template-nqtr-react-vite-muijoy-ink/src/nqtr.d.ts +26 -18
  90. package/template-nqtr-react-vite-muijoy-ink/src/pixi-vn.d.ts +14 -0
  91. package/{template-nqtr-react-vite-muijoy-tauri/src/Imports.tsx → template-nqtr-react-vite-muijoy-ink/src/providers/RootProvider.tsx} +25 -25
  92. package/template-nqtr-react-vite-muijoy-ink/src/screens/QuickTools.tsx +71 -91
  93. package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/MapScreen.tsx +24 -9
  94. package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/MemoScreen.tsx +3 -4
  95. package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/NqtrQuickTools.tsx +0 -3
  96. package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/QuickActivities.tsx +57 -60
  97. package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/QuickRooms.tsx +7 -10
  98. package/template-nqtr-react-vite-muijoy-ink/src/screens/nqtr/TimeScreen.tsx +10 -7
  99. package/template-nqtr-react-vite-muijoy-ink/src/stores/useInterfaceStore.ts +7 -12
  100. package/template-nqtr-react-vite-muijoy-ink/src/utils/assets-utility.ts +30 -19
  101. package/template-nqtr-react-vite-muijoy-ink/src/utils/image-utility.ts +13 -0
  102. package/template-nqtr-react-vite-muijoy-ink/src/utils/nqtr-utility.ts +25 -0
  103. package/{template-nqtr-react-vite-muijoy-tauri/src/values/activity.tsx → template-nqtr-react-vite-muijoy-ink/src/values/activities.tsx} +1 -1
  104. package/template-nqtr-react-vite-muijoy-ink/src/values/index.ts +6 -0
  105. package/template-nqtr-react-vite-muijoy-ink/src/values/locations.tsx +3 -3
  106. package/template-nqtr-react-vite-muijoy-ink/src/values/maps.tsx +3 -3
  107. 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
  108. package/template-nqtr-react-vite-muijoy-ink/src/values/quests/index.ts +1 -0
  109. package/template-nqtr-react-vite-muijoy-ink/src/values/rooms.tsx +10 -10
  110. package/template-nqtr-react-vite-muijoy-ink/src/values/routine.tsx +14 -9
  111. package/template-nqtr-react-vite-muijoy-ink-tauri/README.md +1 -0
  112. package/template-nqtr-react-vite-muijoy-ink-tauri/package.json +27 -25
  113. package/template-nqtr-react-vite-muijoy-ink-tauri/src/App.tsx +10 -1
  114. package/template-nqtr-react-vite-muijoy-ink-tauri/src/AppRoutes.tsx +5 -2
  115. package/template-nqtr-react-vite-muijoy-ink-tauri/src/Home.tsx +3 -3
  116. package/template-nqtr-react-vite-muijoy-ink-tauri/src/assets/manifest.ts +18 -15
  117. package/template-nqtr-react-vite-muijoy-ink-tauri/src/components/NqtrRoundIconButton.tsx +18 -17
  118. package/template-nqtr-react-vite-muijoy-ink-tauri/src/components/RoundIconButton.tsx +5 -0
  119. package/template-nqtr-react-vite-muijoy-ink-tauri/src/components/VisibilityButton.tsx +46 -0
  120. package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useGameProps.ts +4 -0
  121. package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useKeyboardDetector.ts +1 -15
  122. package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useNQTRDetector.tsx +39 -36
  123. package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useNarrationFunctions.ts +6 -0
  124. package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useQueryNQTR.ts +13 -48
  125. package/template-nqtr-react-vite-muijoy-ink-tauri/src/hooks/useTimeTracker.ts +48 -0
  126. package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/index.ts +4 -1
  127. package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/sleepNapLabels.ts +33 -17
  128. package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/startLabel.ts +2 -2
  129. package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/variousActionsLabels.ts +1 -1
  130. package/template-nqtr-react-vite-muijoy-ink-tauri/src/locales/strings_en.json +3 -1
  131. package/template-nqtr-react-vite-muijoy-ink-tauri/src/main.tsx +1 -22
  132. package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/MultiTypeSprite.ts +11 -0
  133. package/{template-nqtr-react-vite-muijoy-ink/src/models/ImageTimeSlots.ts → template-nqtr-react-vite-muijoy-ink-tauri/src/models/TimeSlotsImage.ts} +1 -1
  134. package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Activity.ts +22 -16
  135. package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Commitment.ts +33 -25
  136. package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Location.ts +23 -15
  137. package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Map.ts +12 -5
  138. package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Quest.ts +4 -7
  139. package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Room.ts +18 -11
  140. package/template-nqtr-react-vite-muijoy-ink-tauri/src/models/nqtr/Stage.ts +9 -10
  141. package/template-nqtr-react-vite-muijoy-ink-tauri/src/nqtr.d.ts +26 -18
  142. package/template-nqtr-react-vite-muijoy-ink-tauri/src/pixi-vn.d.ts +14 -0
  143. package/template-nqtr-react-vite-muijoy-ink-tauri/src/{Imports.tsx → providers/RootProvider.tsx} +25 -25
  144. package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/QuickTools.tsx +71 -91
  145. package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/MapScreen.tsx +24 -9
  146. package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/MemoScreen.tsx +3 -4
  147. package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/NqtrQuickTools.tsx +0 -3
  148. package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/QuickActivities.tsx +57 -60
  149. package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/QuickRooms.tsx +7 -10
  150. package/template-nqtr-react-vite-muijoy-ink-tauri/src/screens/nqtr/TimeScreen.tsx +10 -7
  151. package/template-nqtr-react-vite-muijoy-ink-tauri/src/stores/useInterfaceStore.ts +7 -12
  152. package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/assets-utility.ts +30 -19
  153. package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/image-utility.ts +13 -0
  154. package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/nqtr-utility.ts +25 -0
  155. package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/{activity.tsx → activities.tsx} +1 -1
  156. package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/index.ts +6 -0
  157. package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/locations.tsx +3 -3
  158. package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/maps.tsx +3 -3
  159. 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
  160. package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/quests/index.ts +1 -0
  161. package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/rooms.tsx +10 -10
  162. package/template-nqtr-react-vite-muijoy-ink-tauri/src/values/routine.tsx +14 -9
  163. package/template-nqtr-react-vite-muijoy-tauri/README.md +1 -0
  164. package/template-nqtr-react-vite-muijoy-tauri/package.json +27 -25
  165. package/template-nqtr-react-vite-muijoy-tauri/src/App.tsx +9 -1
  166. package/template-nqtr-react-vite-muijoy-tauri/src/AppRoutes.tsx +5 -2
  167. package/template-nqtr-react-vite-muijoy-tauri/src/Home.tsx +3 -3
  168. package/template-nqtr-react-vite-muijoy-tauri/src/assets/manifest.ts +10 -16
  169. package/template-nqtr-react-vite-muijoy-tauri/src/components/NqtrRoundIconButton.tsx +18 -17
  170. package/template-nqtr-react-vite-muijoy-tauri/src/components/RoundIconButton.tsx +5 -0
  171. package/template-nqtr-react-vite-muijoy-tauri/src/components/VisibilityButton.tsx +46 -0
  172. package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useGameProps.ts +4 -0
  173. package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useKeyboardDetector.ts +1 -15
  174. package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useNQTRDetector.tsx +39 -36
  175. package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useNarrationFunctions.ts +6 -0
  176. package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useQueryNQTR.ts +13 -48
  177. package/template-nqtr-react-vite-muijoy-tauri/src/hooks/useTimeTracker.ts +48 -0
  178. package/template-nqtr-react-vite-muijoy-tauri/src/labels/index.ts +5 -0
  179. package/template-nqtr-react-vite-muijoy-tauri/src/labels/sleepNapLabels.ts +33 -17
  180. package/template-nqtr-react-vite-muijoy-tauri/src/labels/startLabel.ts +2 -2
  181. package/template-nqtr-react-vite-muijoy-tauri/src/labels/variousActionsLabels.ts +2 -2
  182. package/template-nqtr-react-vite-muijoy-tauri/src/locales/strings_en.json +3 -1
  183. package/template-nqtr-react-vite-muijoy-tauri/src/main.tsx +1 -21
  184. package/template-nqtr-react-vite-muijoy-tauri/src/models/MultiTypeSprite.ts +11 -0
  185. package/{template-nqtr-react-vite-muijoy-ink-tauri/src/models/ImageTimeSlots.ts → template-nqtr-react-vite-muijoy-tauri/src/models/TimeSlotsImage.ts} +1 -1
  186. package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Activity.ts +22 -16
  187. package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Commitment.ts +33 -25
  188. package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Location.ts +23 -15
  189. package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Map.ts +12 -5
  190. package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Quest.ts +4 -7
  191. package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Room.ts +18 -11
  192. package/template-nqtr-react-vite-muijoy-tauri/src/models/nqtr/Stage.ts +9 -10
  193. package/template-nqtr-react-vite-muijoy-tauri/src/nqtr.d.ts +26 -18
  194. package/template-nqtr-react-vite-muijoy-tauri/src/pixi-vn.d.ts +14 -0
  195. package/{template-nqtr-react-vite-muijoy-ink/src/Imports.tsx → template-nqtr-react-vite-muijoy-tauri/src/providers/RootProvider.tsx} +25 -25
  196. package/template-nqtr-react-vite-muijoy-tauri/src/screens/QuickTools.tsx +71 -91
  197. package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/MapScreen.tsx +21 -6
  198. package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/MemoScreen.tsx +3 -4
  199. package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/NqtrQuickTools.tsx +0 -3
  200. package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/QuickActivities.tsx +57 -60
  201. package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/QuickRooms.tsx +7 -10
  202. package/template-nqtr-react-vite-muijoy-tauri/src/screens/nqtr/TimeScreen.tsx +10 -7
  203. package/template-nqtr-react-vite-muijoy-tauri/src/stores/useInterfaceStore.ts +7 -12
  204. package/template-nqtr-react-vite-muijoy-tauri/src/utils/assets-utility.ts +30 -19
  205. package/template-nqtr-react-vite-muijoy-tauri/src/utils/image-utility.ts +13 -0
  206. package/template-nqtr-react-vite-muijoy-tauri/src/utils/nqtr-utility.ts +25 -0
  207. package/{template-nqtr-react-vite-muijoy-ink/src/values/activity.tsx → template-nqtr-react-vite-muijoy-tauri/src/values/activities.tsx} +1 -1
  208. package/template-nqtr-react-vite-muijoy-tauri/src/values/index.ts +6 -0
  209. package/template-nqtr-react-vite-muijoy-tauri/src/values/locations.tsx +3 -3
  210. package/template-nqtr-react-vite-muijoy-tauri/src/values/maps.tsx +3 -3
  211. 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
  212. package/template-nqtr-react-vite-muijoy-tauri/src/values/quests/index.ts +1 -0
  213. package/template-nqtr-react-vite-muijoy-tauri/src/values/rooms.tsx +10 -10
  214. package/template-nqtr-react-vite-muijoy-tauri/src/values/routine.tsx +14 -9
  215. package/template-react-vite-muijoy/package.json +24 -24
  216. package/template-react-vite-muijoy/src/App.tsx +1 -1
  217. package/template-react-vite-muijoy/src/AppRoutes.tsx +4 -2
  218. package/template-react-vite-muijoy/src/Home.tsx +3 -3
  219. package/template-react-vite-muijoy/src/components/VisibilityButton.tsx +46 -0
  220. package/template-react-vite-muijoy/src/hooks/useKeyboardDetector.ts +1 -15
  221. package/template-react-vite-muijoy/src/hooks/useNarrationFunctions.ts +6 -0
  222. package/template-react-vite-muijoy/src/labels/index.ts +2 -0
  223. package/template-react-vite-muijoy/src/main.tsx +0 -1
  224. package/template-react-vite-muijoy/src/providers/RootProvider.tsx +25 -0
  225. package/template-react-vite-muijoy/src/screens/QuickTools.tsx +71 -91
  226. package/template-react-vite-muijoy/src/stores/useInterfaceStore.ts +7 -12
  227. package/template-react-vite-muijoy/src/utils/assets-utility.ts +11 -0
  228. package/template-react-vite-muijoy/src/values/index.ts +1 -0
  229. package/template-react-vite-muijoy-ink/README.md +1 -0
  230. package/template-react-vite-muijoy-ink/package.json +25 -25
  231. package/template-react-vite-muijoy-ink/src/App.tsx +8 -1
  232. package/template-react-vite-muijoy-ink/src/AppRoutes.tsx +4 -2
  233. package/template-react-vite-muijoy-ink/src/Home.tsx +3 -3
  234. package/template-react-vite-muijoy-ink/src/components/VisibilityButton.tsx +46 -0
  235. package/template-react-vite-muijoy-ink/src/hooks/useKeyboardDetector.ts +1 -15
  236. package/template-react-vite-muijoy-ink/src/hooks/useNarrationFunctions.ts +6 -0
  237. package/template-react-vite-muijoy-ink/src/main.tsx +0 -2
  238. package/template-react-vite-muijoy-ink/src/providers/RootProvider.tsx +25 -0
  239. package/template-react-vite-muijoy-ink/src/screens/QuickTools.tsx +71 -91
  240. package/template-react-vite-muijoy-ink/src/stores/useInterfaceStore.ts +7 -12
  241. package/template-react-vite-muijoy-ink/src/utils/assets-utility.ts +11 -0
  242. package/template-react-vite-muijoy-ink/src/values/index.ts +1 -0
  243. package/template-react-vite-muijoy-ink-tauri/README.md +1 -0
  244. package/template-react-vite-muijoy-ink-tauri/package.json +25 -25
  245. package/template-react-vite-muijoy-ink-tauri/src/App.tsx +8 -1
  246. package/template-react-vite-muijoy-ink-tauri/src/AppRoutes.tsx +4 -2
  247. package/template-react-vite-muijoy-ink-tauri/src/Home.tsx +3 -3
  248. package/template-react-vite-muijoy-ink-tauri/src/components/VisibilityButton.tsx +46 -0
  249. package/template-react-vite-muijoy-ink-tauri/src/hooks/useKeyboardDetector.ts +1 -15
  250. package/template-react-vite-muijoy-ink-tauri/src/hooks/useNarrationFunctions.ts +6 -0
  251. package/template-react-vite-muijoy-ink-tauri/src/main.tsx +0 -2
  252. package/template-react-vite-muijoy-ink-tauri/src/providers/RootProvider.tsx +25 -0
  253. package/template-react-vite-muijoy-ink-tauri/src/screens/QuickTools.tsx +71 -91
  254. package/template-react-vite-muijoy-ink-tauri/src/stores/useInterfaceStore.ts +7 -12
  255. package/template-react-vite-muijoy-ink-tauri/src/utils/assets-utility.ts +11 -0
  256. package/template-react-vite-muijoy-ink-tauri/src/values/index.ts +1 -0
  257. package/template-react-vite-muijoy-tauri/README.md +1 -0
  258. package/template-react-vite-muijoy-tauri/package.json +24 -24
  259. package/template-react-vite-muijoy-tauri/src/App.tsx +1 -1
  260. package/template-react-vite-muijoy-tauri/src/AppRoutes.tsx +4 -2
  261. package/template-react-vite-muijoy-tauri/src/Home.tsx +3 -3
  262. package/template-react-vite-muijoy-tauri/src/components/VisibilityButton.tsx +46 -0
  263. package/template-react-vite-muijoy-tauri/src/hooks/useKeyboardDetector.ts +1 -15
  264. package/template-react-vite-muijoy-tauri/src/hooks/useNarrationFunctions.ts +6 -0
  265. package/template-react-vite-muijoy-tauri/src/labels/index.ts +2 -0
  266. package/template-react-vite-muijoy-tauri/src/main.tsx +0 -1
  267. package/template-react-vite-muijoy-tauri/src/providers/RootProvider.tsx +25 -0
  268. package/template-react-vite-muijoy-tauri/src/screens/QuickTools.tsx +71 -91
  269. package/template-react-vite-muijoy-tauri/src/stores/useInterfaceStore.ts +7 -12
  270. package/template-react-vite-muijoy-tauri/src/utils/assets-utility.ts +11 -0
  271. package/template-react-vite-muijoy-tauri/src/values/index.ts +1 -0
  272. package/template-nqtr-react-vite-muijoy/src/utils/component-utility.ts +0 -29
  273. package/template-nqtr-react-vite-muijoy/src/utils/time-utility.ts +0 -29
  274. package/template-nqtr-react-vite-muijoy-ink/src/utils/component-utility.ts +0 -29
  275. package/template-nqtr-react-vite-muijoy-ink/src/utils/time-utility.ts +0 -29
  276. package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/component-utility.ts +0 -29
  277. package/template-nqtr-react-vite-muijoy-ink-tauri/src/utils/time-utility.ts +0 -29
  278. package/template-nqtr-react-vite-muijoy-tauri/src/utils/component-utility.ts +0 -29
  279. package/template-nqtr-react-vite-muijoy-tauri/src/utils/time-utility.ts +0 -29
  280. package/template-react-vite-muijoy/src/Imports.tsx +0 -25
  281. package/template-react-vite-muijoy/src/utils/component-utility.ts +0 -29
  282. package/template-react-vite-muijoy-ink/src/Imports.tsx +0 -25
  283. package/template-react-vite-muijoy-ink/src/utils/component-utility.ts +0 -29
  284. package/template-react-vite-muijoy-ink-tauri/src/Imports.tsx +0 -25
  285. package/template-react-vite-muijoy-ink-tauri/src/utils/component-utility.ts +0 -29
  286. package/template-react-vite-muijoy-tauri/src/Imports.tsx +0 -25
  287. package/template-react-vite-muijoy-tauri/src/utils/component-utility.ts +0 -29
  288. /package/template-nqtr-react-vite-muijoy/src/labels/{utility-labels.ts → label-utility.ts} +0 -0
  289. /package/template-nqtr-react-vite-muijoy-ink/src/labels/{utility-labels.ts → label-utility.ts} +0 -0
  290. /package/template-nqtr-react-vite-muijoy-ink-tauri/src/labels/{utility-labels.ts → label-utility.ts} +0 -0
  291. /package/template-nqtr-react-vite-muijoy-tauri/src/labels/{utility-labels.ts → label-utility.ts} +0 -0
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.6.1",
4
+ "version": "1.6.2",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0",
7
7
  "author": "DRincs-Productions",
@@ -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.4.2",
15
- "@drincs/pixi-vn": "^1.2.15",
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.0",
18
- "@mui/icons-material": "^7.1.0",
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.1.0",
21
- "@tailwindcss/vite": "^4.1.6",
22
- "@tanstack/react-query": "^5.75.7",
23
- "i18next": "^25.1.2",
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.10.5",
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.5.1",
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.0",
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.6",
40
- "vite-plugin-checker": "^0.9.3",
41
- "zustand": "^5.0.4"
40
+ "tailwindcss": "^4.1.11",
41
+ "vite-plugin-checker": "^0.10.0",
42
+ "zustand": "^5.0.6"
42
43
  },
43
44
  "devDependencies": {
44
- "@tanstack/react-query-devtools": "^5.75.7",
45
- "@types/node": "^22.15.17",
46
- "@types/react": "^19.1.3",
47
- "@types/react-dom": "^19.1.3",
48
- "@typescript-eslint/eslint-plugin": "^8.32.0",
49
- "@typescript-eslint/parser": "^8.32.0",
50
- "@vitejs/plugin-react": "^4.4.1",
51
- "eslint": "^9.26.0",
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.0",
57
+ "tailwindcss-motion": "^1.1.1",
55
58
  "typescript": "^5.8.3",
56
- "vite": "^6.3.5",
57
- "vite-plugin-pwa": "^1.0.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([initializeIndexedDB(), defineAssets(), useI18n()]);
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
- <Detectors />
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 Detectors() {
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 Imports from "./Imports";
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
- <Imports>
44
+ <RootProvider>
45
45
  <HomeChild />
46
- </Imports>
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
- className='motion-preset-pop'
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
- <AnimatePresence>
45
- <Modal
46
- keepMounted
47
- open={internalOpen}
48
- onClose={() => canBeIgnored && setOpen(false)}
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={modalVarians}
57
+ className={modalDialogVarians}
58
+ {...rest}
53
59
  >
54
- <ModalDialogJoy
55
- sx={{
56
- pointerEvents: open ? "auto" : "none",
57
- ...sx,
58
- }}
59
- className={modalDialogVarians}
60
- {...rest}
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 ImageTimeSlots from "../models/ImageTimeSlots";
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 | ImageTimeSlots | ReactElement | ((props: OnRunProps) => ReactElement);
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 ImageTimeSlots) {
50
+ if (image instanceof TimeSlotsImage) {
51
51
  image = image.src;
52
52
  }
53
53
 
54
54
  if (typeof image == "string") {
55
55
  try {
56
- // check if the image is a PixiAsset
57
- image = Assets.resolver.resolve(image).src || image;
56
+ image = getPixiJSAsset(image);
58
57
  } catch {}
59
58
  return (
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
- />
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, hideInterface, lastSave, queryClient, t]
51
+ [location, lastSave, queryClient, t]
66
52
  );
67
53
 
68
54
  useEventListener({ type: "keydown", listener: onkeydown });
@@ -5,6 +5,7 @@ import { useEffect } from "react";
5
5
  import { CANVAS_UI_LAYER_NAME } from "../constans";
6
6
  import { useQueryCurrentRoomId, useQueryRoom, useQueryTime } from "../hooks/useQueryNQTR";
7
7
  import useNqtrScreenStore from "../stores/useNqtrScreenStore";
8
+ import { convertMultiTypeSprite } from "../utils/image-utility";
8
9
  import useGameProps from "./useGameProps";
9
10
  import { INTERFACE_DATA_USE_QUEY_KEY } from "./useQueryInterface";
10
11
 
@@ -17,44 +18,46 @@ export default function useNQTRDetector() {
17
18
  const setDisable = useNqtrScreenStore((state) => state.setDisabled);
18
19
 
19
20
  useEffect(() => {
20
- const { image } = currentRoom || {};
21
- if (image) {
22
- canvas.clear();
23
- let component = new ImageSprite({}, image.src);
24
- component.load();
25
- canvas.getLayer(CANVAS_UI_LAYER_NAME)?.addChild(component);
26
- }
27
-
28
- // currentRoom.activities.forEach((activity) => {
29
- // if (!activity.renderIcon) {
30
- // return;
31
- // }
32
- // let icon = activity.renderIcon({
33
- // navigate: navigate,
34
- // t: t,
35
- // notify: (t(message), variant) => enqueueSnackbar(message, { variant }),
36
- // });
37
- // if (icon instanceof CanvasBase) {
38
- // container.addChild(icon);
39
- // }
40
- // });
21
+ const { background } = currentRoom || {};
22
+ if (background) {
23
+ let image = convertMultiTypeSprite(background, gameProps);
24
+ let layer = canvas.getLayer(CANVAS_UI_LAYER_NAME);
25
+ if (layer) {
26
+ if (typeof image === "string") {
27
+ let sprite = new ImageSprite({}, image);
28
+ sprite.load();
29
+ image = sprite;
30
+ }
31
+ layer.addChild(image);
41
32
 
42
- // currentCommitments.forEach((commitment) => {
43
- // if (!commitment.renderIcon) {
44
- // return;
45
- // }
46
- // let icon = commitment.renderIcon({
47
- // navigate: navigate,
48
- // t: t,
49
- // notify: (t(message), variant) => enqueueSnackbar(message, { variant }),
50
- // });
51
- // if (icon instanceof CanvasBase) {
52
- // container.addChild(icon);
53
- // }
54
- // });
33
+ currentRoom?.activities.forEach(({ sprite }) => {
34
+ if (sprite) {
35
+ let icon = convertMultiTypeSprite(sprite, gameProps);
36
+ if (typeof icon === "string") {
37
+ let sprite = new ImageSprite({}, icon);
38
+ sprite.load();
39
+ icon = sprite;
40
+ }
41
+ layer.addChild(icon);
42
+ }
43
+ });
44
+ currentRoom?.routine.forEach(({ sprite }) => {
45
+ if (sprite) {
46
+ let icon = convertMultiTypeSprite(sprite, gameProps);
47
+ if (typeof icon === "string") {
48
+ let sprite = new ImageSprite({}, icon);
49
+ sprite.load();
50
+ icon = sprite;
51
+ }
52
+ layer.addChild(icon);
53
+ }
54
+ });
55
+ }
56
+ }
55
57
 
56
- let automaticFunction = navigator.currentRoom?.automaticFunction;
57
- if (automaticFunction) {
58
+ let automaticFunctions = navigator.currentRoom?.automaticFunctions || [];
59
+ if (automaticFunctions.length > 0) {
60
+ let automaticFunction = automaticFunctions[0];
58
61
  setDisable(true);
59
62
  automaticFunction(gameProps).finally(() => {
60
63
  queryClient.invalidateQueries({ queryKey: [INTERFACE_DATA_USE_QUEY_KEY] });
@@ -2,6 +2,7 @@ import { narration, stepHistory, StoredIndexedChoiceInterface } from "@drincs/pi
2
2
  import { useQueryClient } from "@tanstack/react-query";
3
3
  import { useCallback } from "react";
4
4
  import { useShallow } from "zustand/react/shallow";
5
+ import useInterfaceStore from "../stores/useInterfaceStore";
5
6
  import useStepStore from "../stores/useStepStore";
6
7
  import useGameProps from "./useGameProps";
7
8
  import { INTERFACE_DATA_USE_QUEY_KEY } from "./useQueryInterface";
@@ -9,12 +10,17 @@ import { INTERFACE_DATA_USE_QUEY_KEY } from "./useQueryInterface";
9
10
  export default function useNarrationFunctions() {
10
11
  const setNextStepLoading = useStepStore(useShallow((state) => state.setLoading));
11
12
  const setBackLoading = useStepStore((state) => state.setBackLoading);
13
+ const hidden = useInterfaceStore(useShallow((state) => state.hidden));
14
+ const setHideInterface = useInterfaceStore((state) => state.setHidden);
12
15
  const queryClient = useQueryClient();
13
16
  const gameProps = useGameProps();
14
17
 
15
18
  const goNext = useCallback(async () => {
16
19
  setNextStepLoading(true);
17
20
  try {
21
+ if (hidden) {
22
+ setHideInterface(false);
23
+ }
18
24
  if (!narration.canGoNext) {
19
25
  setNextStepLoading(false);
20
26
  return;