webtalekit-alpha 0.2.13 → 0.2.14

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 (398) hide show
  1. package/README.md +145 -70
  2. package/package.json +10 -2
  3. package/parser/checker.js +184 -0
  4. package/parser/checker.test.ts +491 -0
  5. package/parser/cli.js +34 -2
  6. package/parser/parser.js +25 -18
  7. package/src/core/defaultUIHandler.js +309 -0
  8. package/src/core/defaultUIHandler.js.map +1 -0
  9. package/{dist/src → src}/core/drawer.js +65 -40
  10. package/src/core/drawer.js.map +1 -0
  11. package/{dist/src → src}/core/index.js +188 -257
  12. package/{dist/src → src}/core/scenarioManager.js +29 -7
  13. package/src/core/scenarioManager.js.map +1 -0
  14. package/src/utils/eventBus.js +88 -0
  15. package/src/utils/eventBus.js.map +1 -0
  16. package/{dist/src → src}/utils/logger.js +45 -1
  17. package/src/utils/logger.js.map +1 -0
  18. package/{dist/src → src}/utils/store.js +5 -0
  19. package/src/utils/store.js.map +1 -0
  20. package/.claude/settings.local.json +0 -12
  21. package/.clinerules +0 -65
  22. package/.history/README_20240812174230.md +0 -193
  23. package/.history/README_20240812175424.md +0 -185
  24. package/.history/README_20240812191012.md +0 -185
  25. package/.history/README_20240812191155.md +0 -185
  26. package/.history/README_20240812191211.md +0 -185
  27. package/.history/README_20240812192035.md +0 -185
  28. package/.history/dist/src/core/index_20240815021552.js +0 -474
  29. package/.history/dist/src/core/index_20240815022042.js +0 -476
  30. package/.history/dist/src/core/index_20240815022206.js +0 -476
  31. package/.history/dist/src/core/index_20240815023104.js +0 -478
  32. package/.history/dist/src/core/index_20240817022019.js +0 -494
  33. package/.history/dist/src/core/index_20240818013827.js +0 -493
  34. package/.history/dist/src/core/index_20240820001418.js +0 -502
  35. package/.history/package_20240812174230.json +0 -45
  36. package/.history/package_20240825011731.json +0 -45
  37. package/.history/package_20240825011739.json +0 -44
  38. package/.history/parser/parser_20240812174230.js +0 -50
  39. package/.history/parser/parser_20240825012739.js +0 -47
  40. package/.history/parser/parser_20240825012835.js +0 -52
  41. package/.history/src/core/drawer_20240813091343.ts +0 -262
  42. package/.history/src/core/drawer_20240815232345.ts +0 -262
  43. package/.history/src/core/drawer_20240815232350.ts +0 -262
  44. package/.history/src/core/drawer_20240816025257.ts +0 -357
  45. package/.history/src/core/drawer_20240816025358.ts +0 -357
  46. package/.history/src/core/drawer_20240816030148.ts +0 -365
  47. package/.history/src/core/drawer_20240816231033.ts +0 -294
  48. package/.history/src/core/drawer_20240816231107.ts +0 -262
  49. package/.history/src/core/drawer_20240816231234.ts +0 -268
  50. package/.history/src/core/drawer_20240817013836.ts +0 -290
  51. package/.history/src/core/drawer_20240817015150.ts +0 -289
  52. package/.history/src/core/drawer_20240817015353.ts +0 -290
  53. package/.history/src/core/drawer_20240817021254.ts +0 -291
  54. package/.history/src/core/drawer_20240817023440.ts +0 -295
  55. package/.history/src/core/drawer_20240817023445.ts +0 -295
  56. package/.history/src/core/drawer_20240818015327.ts +0 -295
  57. package/.history/src/core/drawer_20240819231006.ts +0 -318
  58. package/.history/src/core/drawer_20240820002829.ts +0 -317
  59. package/.history/src/core/drawer_20240820003141.ts +0 -295
  60. package/.history/src/core/drawer_20240824010043.ts +0 -295
  61. package/.history/src/core/drawer_20240825013311.ts +0 -293
  62. package/.history/src/core/drawer_20240902235257.ts +0 -295
  63. package/.history/src/core/drawer_20240904002038.ts +0 -262
  64. package/.history/src/core/drawer_20240904004020.ts +0 -262
  65. package/.history/src/core/drawer_20240904004238.ts +0 -262
  66. package/.history/src/core/drawer_20240904005648.ts +0 -262
  67. package/.history/src/core/drawer_20240904005808.ts +0 -262
  68. package/.history/src/core/drawer_20240904010523.ts +0 -262
  69. package/.history/src/core/drawer_20240904011611.ts +0 -262
  70. package/.history/src/core/drawer_20240904011740.ts +0 -262
  71. package/.history/src/core/index_20240812190102.js +0 -443
  72. package/.history/src/core/index_20240812190105.js +0 -443
  73. package/.history/src/core/index_20240812205421.js +0 -452
  74. package/.history/src/core/index_20240812213441.js +0 -452
  75. package/.history/src/core/index_20240812214203.js +0 -453
  76. package/.history/src/core/index_20240813090823.js +0 -453
  77. package/.history/src/core/index_20240813230449.js +0 -452
  78. package/.history/src/core/index_20240813230539.js +0 -452
  79. package/.history/src/core/index_20240813231447.js +0 -453
  80. package/.history/src/core/index_20240813231449.js +0 -453
  81. package/.history/src/core/index_20240813231511.js +0 -453
  82. package/.history/src/core/index_20240813231531.js +0 -453
  83. package/.history/src/core/index_20240813231913.js +0 -453
  84. package/.history/src/core/index_20240813232356.js +0 -453
  85. package/.history/src/core/index_20240813232640.js +0 -453
  86. package/.history/src/core/index_20240813232900.js +0 -453
  87. package/.history/src/core/index_20240814221127.js +0 -454
  88. package/.history/src/core/index_20240814221322.js +0 -454
  89. package/.history/src/core/index_20240814221526.js +0 -454
  90. package/.history/src/core/index_20240814222048.js +0 -454
  91. package/.history/src/core/index_20240814222918.js +0 -459
  92. package/.history/src/core/index_20240814223136.js +0 -459
  93. package/.history/src/core/index_20240814223501.js +0 -464
  94. package/.history/src/core/index_20240814224347.js +0 -468
  95. package/.history/src/core/index_20240815013712.js +0 -474
  96. package/.history/src/core/index_20240815021534.js +0 -474
  97. package/.history/src/core/index_20240815023143.js +0 -477
  98. package/.history/src/core/index_20240815023207.js +0 -479
  99. package/.history/src/core/index_20240815023344.js +0 -481
  100. package/.history/src/core/index_20240815035600.js +0 -479
  101. package/.history/src/core/index_20240815041549.js +0 -480
  102. package/.history/src/core/index_20240815185515.js +0 -481
  103. package/.history/src/core/index_20240815192158.js +0 -481
  104. package/.history/src/core/index_20240815222912.js +0 -482
  105. package/.history/src/core/index_20240815224052.js +0 -483
  106. package/.history/src/core/index_20240815224843.js +0 -484
  107. package/.history/src/core/index_20240815224850.js +0 -483
  108. package/.history/src/core/index_20240815231706.js +0 -479
  109. package/.history/src/core/index_20240816025748.js +0 -483
  110. package/.history/src/core/index_20240816030102.js +0 -484
  111. package/.history/src/core/index_20240817013329.js +0 -485
  112. package/.history/src/core/index_20240817013526.js +0 -485
  113. package/.history/src/core/index_20240817013819.js +0 -488
  114. package/.history/src/core/index_20240817013829.js +0 -488
  115. package/.history/src/core/index_20240817014921.js +0 -494
  116. package/.history/src/core/index_20240817022057.js +0 -494
  117. package/.history/src/core/index_20240817023316.js +0 -493
  118. package/.history/src/core/index_20240818005637.js +0 -493
  119. package/.history/src/core/index_20240818005721.js +0 -493
  120. package/.history/src/core/index_20240818011804.js +0 -493
  121. package/.history/src/core/index_20240818013835.js +0 -493
  122. package/.history/src/core/index_20240818014310.js +0 -493
  123. package/.history/src/core/index_20240818014323.js +0 -493
  124. package/.history/src/core/index_20240818014333.js +0 -493
  125. package/.history/src/core/index_20240818020725.js +0 -496
  126. package/.history/src/core/index_20240819195504.js +0 -497
  127. package/.history/src/core/index_20240819202012.js +0 -495
  128. package/.history/src/core/index_20240819231228.js +0 -501
  129. package/.history/src/core/index_20240819232555.js +0 -502
  130. package/.history/src/core/index_20240819233404.js +0 -502
  131. package/.history/src/core/index_20240820003114.js +0 -495
  132. package/.history/src/core/index_20240820003120.js +0 -495
  133. package/.history/src/core/index_20240820003331.js +0 -495
  134. package/.history/src/core/index_20240820004126.js +0 -498
  135. package/.history/src/core/index_20240820004357.js +0 -497
  136. package/.history/src/core/index_20240820005103.js +0 -498
  137. package/.history/src/core/index_20240820005110.js +0 -499
  138. package/.history/src/core/index_20240820005206.js +0 -497
  139. package/.history/src/core/index_20240820005352.js +0 -497
  140. package/.history/src/core/index_20240823224904.ts +0 -505
  141. package/.history/src/core/index_20240823224905.js +0 -505
  142. package/.history/src/core/index_20240823231631.ts +0 -530
  143. package/.history/src/core/index_20240823231735.ts +0 -530
  144. package/.history/src/core/index_20240823232123.ts +0 -539
  145. package/.history/src/core/index_20240823232329.ts +0 -539
  146. package/.history/src/core/index_20240823233058.ts +0 -539
  147. package/.history/src/core/index_20240823234946.ts +0 -539
  148. package/.history/src/core/index_20240824005956.ts +0 -534
  149. package/.history/src/core/index_20240824010113.ts +0 -534
  150. package/.history/src/core/index_20240824010124.ts +0 -534
  151. package/.history/src/core/index_20240824010212.ts +0 -534
  152. package/.history/src/core/index_20240824010218.ts +0 -534
  153. package/.history/src/core/index_20240824010407.ts +0 -534
  154. package/.history/src/core/index_20240824010611.ts +0 -534
  155. package/.history/src/core/index_20240824010623.ts +0 -534
  156. package/.history/src/core/index_20240824010652.ts +0 -534
  157. package/.history/src/core/index_20240824011007.ts +0 -534
  158. package/.history/src/core/index_20240824210450.ts +0 -534
  159. package/.history/src/core/index_20240824210703.ts +0 -534
  160. package/.history/src/core/index_20240824210708.ts +0 -534
  161. package/.history/src/core/index_20240824211001.ts +0 -537
  162. package/.history/src/core/index_20240824211258.ts +0 -537
  163. package/.history/src/core/index_20240824211654.ts +0 -537
  164. package/.history/src/core/index_20240824211723.ts +0 -537
  165. package/.history/src/core/index_20240824211808.ts +0 -538
  166. package/.history/src/core/index_20240824214041.js +0 -538
  167. package/.history/src/core/index_20240824215312.ts +0 -538
  168. package/.history/src/core/index_20240824215341.ts +0 -538
  169. package/.history/src/core/index_20240824220703.ts +0 -538
  170. package/.history/src/core/index_20240824220709.ts +0 -538
  171. package/.history/src/core/index_20240825012244.ts +0 -536
  172. package/.history/src/core/index_20240825012435.ts +0 -539
  173. package/.history/src/core/index_20240825012440.ts +0 -539
  174. package/.history/src/core/index_20240826005054.ts +0 -539
  175. package/.history/src/core/index_20240826005321.ts +0 -540
  176. package/.history/src/core/index_20240826005410.ts +0 -539
  177. package/.history/src/core/index_20240826005418.ts +0 -539
  178. package/.history/src/core/index_20240830231825.ts +0 -539
  179. package/.history/src/core/index_20240831022416.ts +0 -539
  180. package/.history/src/core/index_20240901222314.js +0 -459
  181. package/.history/src/core/index_20240901222951.js +0 -459
  182. package/.history/src/core/index_20240901223824.js +0 -471
  183. package/.history/src/core/index_20240901223833.js +0 -468
  184. package/.history/src/core/index_20240902223954.js +0 -447
  185. package/.history/src/core/index_20240902224000.js +0 -446
  186. package/.history/src/core/index_20240902230345.js +0 -448
  187. package/.history/src/core/index_20240902231130.js +0 -449
  188. package/.history/src/core/index_20240902231559.js +0 -449
  189. package/.history/src/core/index_20240902232135.js +0 -449
  190. package/.history/src/core/index_20240902232809.js +0 -452
  191. package/.history/src/core/index_20240902232815.js +0 -452
  192. package/.history/src/core/index_20240903000104.js +0 -467
  193. package/.history/src/core/index_20240904001731.js +0 -444
  194. package/.history/src/core/index_20240904002038.ts +0 -539
  195. package/.history/src/core/index_20240904011848.js +0 -444
  196. package/.history/src/core/index_20240904012138.js +0 -444
  197. package/.history/src/core/index_20240904012743.js +0 -444
  198. package/.history/src/core/index_20240904013051.js +0 -444
  199. package/.history/src/core/resourceManager_20240403231531.ts +0 -16
  200. package/.history/src/core/resourceManager_20240823232627.ts +0 -17
  201. package/.history/src/core/resourceManager_20240824214014.js +0 -16
  202. package/.history/src/core/resourceManager_20240824214620.js +0 -17
  203. package/.history/src/core/scenarioManager_20240812203410.ts +0 -86
  204. package/.history/src/core/scenarioManager_20240812203839.ts +0 -94
  205. package/.history/src/core/scenarioManager_20240812213437.ts +0 -85
  206. package/.history/src/core/scenarioManager_20240813225852.ts +0 -85
  207. package/.history/src/core/scenarioManager_20240823235010.ts +0 -85
  208. package/.history/src/core/scenarioManager_20240904002038.ts +0 -94
  209. package/.history/src/core/scenarioManager_20240904012411.ts +0 -94
  210. package/.history/src/core/scenarioManager_20240904012519.ts +0 -94
  211. package/.history/src/index_20240403231531.js +0 -6
  212. package/.history/src/index_20240429233436.js +0 -8
  213. package/.history/src/index_20240429233926.js +0 -8
  214. package/.history/src/index_20240429234401.js +0 -7
  215. package/.history/src/index_20240429234404.js +0 -6
  216. package/.history/src/resource/soundObject_20240419004314.ts +0 -71
  217. package/.history/src/resource/soundObject_20240815034420.ts +0 -66
  218. package/.history/src/resource/soundObject_20240815034836.ts +0 -79
  219. package/.history/src/resource/soundObject_20240815034919.ts +0 -87
  220. package/.history/src/resource/soundObject_20240815040724.ts +0 -81
  221. package/.history/src/resource/soundObject_20240815041022.ts +0 -87
  222. package/.history/src/resource/soundObject_20240815042103.ts +0 -87
  223. package/.history/src/resource/soundObject_20240823235929.ts +0 -91
  224. package/.history/src/resource/soundObject_20240824213129.ts +0 -99
  225. package/.history/src/resource/soundObject_20240824213611.ts +0 -101
  226. package/.history/src/resource/soundObject_20240824215734.ts +0 -101
  227. package/.history/src/resource/soundObject_20240825004926.ts +0 -101
  228. package/.history/src/resource/soundObject_20240825004947.ts +0 -101
  229. package/.history/src/utils/logger_20240812174230.ts +0 -13
  230. package/.history/src/utils/logger_20240823232736.ts +0 -14
  231. package/.history/src/utils/logger_20240824214930.js +0 -14
  232. package/.history/src/utils/store_20240812174230.ts +0 -17
  233. package/.history/src/utils/store_20240823232948.ts +0 -29
  234. package/.history/src/utils/store_20240824214020.js +0 -17
  235. package/.history/src/utils/store_20240824214955.js +0 -29
  236. package/.history/src/utils/waitUtil_20240812174230.ts +0 -4
  237. package/.history/src/utils/waitUtil_20240823232739.ts +0 -4
  238. package/.history/src/utils/waitUtil_20240824214024.js +0 -4
  239. package/.history/src/utils/waitUtil_20240824215009.js +0 -4
  240. package/.history/test/js/title_20240428215305.js +0 -254
  241. package/.history/test/js/title_20240429221911.js +0 -227
  242. package/.history/test/js/title_20240429222806.js +0 -243
  243. package/.history/test/js/title_20240429222854.js +0 -263
  244. package/.history/test/js/title_20240429222906.js +0 -263
  245. package/.history/test/js/title_20240429235639.js +0 -263
  246. package/.history/test/js/title_20240429235840.js +0 -263
  247. package/.history/test/js/title_20240430014721.js +0 -262
  248. package/.history/test/js/title_20240430014759.js +0 -254
  249. package/.history/test/js/title_20240430134612.js +0 -285
  250. package/.history/test/js/title_20240430141051.js +0 -285
  251. package/.history/test/js/title_20240430173745.js +0 -245
  252. package/.history/tsconfig_20240812174230.json +0 -22
  253. package/.history/tsconfig_20240824010157.json +0 -19
  254. package/.history/tsconfig_20240824220700.json +0 -20
  255. package/.history/tsconfig_20240825011301.json +0 -20
  256. package/.history/webpack.config_20240423002825.js +0 -37
  257. package/.history/webpack.config_20240430001157.js +0 -38
  258. package/.history/webpack.config_20240430001309.js +0 -37
  259. package/.history/webpack.config_20240430002112.js +0 -37
  260. package/CLAUDE.md +0 -96
  261. package/LICENSE +0 -21
  262. package/coverage/lcov-report/base.css +0 -224
  263. package/coverage/lcov-report/block-navigation.js +0 -87
  264. package/coverage/lcov-report/core/drawer.ts.html +0 -1264
  265. package/coverage/lcov-report/core/index.html +0 -146
  266. package/coverage/lcov-report/core/resourceManager.ts.html +0 -136
  267. package/coverage/lcov-report/core/scenarioManager.ts.html +0 -373
  268. package/coverage/lcov-report/favicon.png +0 -0
  269. package/coverage/lcov-report/index.html +0 -146
  270. package/coverage/lcov-report/prettify.css +0 -1
  271. package/coverage/lcov-report/prettify.js +0 -2
  272. package/coverage/lcov-report/resource/ImageObject.ts.html +0 -433
  273. package/coverage/lcov-report/resource/index.html +0 -131
  274. package/coverage/lcov-report/resource/soundObject.ts.html +0 -346
  275. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  276. package/coverage/lcov-report/sorter.js +0 -196
  277. package/coverage/lcov-report/utils/TextMeasurer.ts.html +0 -520
  278. package/coverage/lcov-report/utils/index.html +0 -161
  279. package/coverage/lcov-report/utils/logger.ts.html +0 -142
  280. package/coverage/lcov-report/utils/store.ts.html +0 -151
  281. package/coverage/lcov-report/utils/waitUtil.ts.html +0 -97
  282. package/coverage/lcov.info +0 -882
  283. package/dist/README.md +0 -294
  284. package/dist/engineConfig.json +0 -10
  285. package/dist/package.json +0 -51
  286. package/dist/parser/cli.js +0 -61
  287. package/dist/parser/parser.js +0 -53
  288. package/dist/src/core/drawer.js.map +0 -1
  289. package/dist/src/core/scenarioManager.js.map +0 -1
  290. package/dist/src/utils/logger.js.map +0 -1
  291. package/dist/src/utils/store.js.map +0 -1
  292. package/dist/webtalekit-alpha-0.2.13.tgz +0 -0
  293. package/docs/event-system-specification.md +0 -493
  294. package/docs/glossary.html +0 -833
  295. package/docs/index.html +0 -296
  296. package/docs/tag-reference.html +0 -1317
  297. package/docs/ui-template-guide.html +0 -1068
  298. package/example/README.md +0 -29
  299. package/example/engineConfig.json +0 -10
  300. package/example/package-lock.json +0 -5145
  301. package/example/package.json +0 -26
  302. package/example/src/index.js +0 -13
  303. package/example/src/resource/background/beach.jpg +0 -0
  304. package/example/src/resource/background/city.jpg +0 -0
  305. package/example/src/resource/background/crossroad.jpg +0 -0
  306. package/example/src/resource/background/forest.jpg +0 -0
  307. package/example/src/resource/background/laboratory.jpg +0 -0
  308. package/example/src/resource/background/library.jpg +0 -0
  309. package/example/src/resource/background/living_room.jpg +0 -0
  310. package/example/src/resource/background/music_room.jpg +0 -0
  311. package/example/src/resource/background/stage.jpg +0 -0
  312. package/example/src/resource/background/sunset.jpg +0 -0
  313. package/example/src/resource/background/title_bg.png +0 -0
  314. package/example/src/resource/bgm/calm_music.wav +0 -0
  315. package/example/src/resource/bgm/doorbell.mp3 +0 -0
  316. package/example/src/resource/bgm/nc366476_Virtual_Voyage.mp3 +0 -0
  317. package/example/src/resource/bgm/title_theme.mp3 +0 -0
  318. package/example/src/resource/chara/dancer.png +0 -0
  319. package/example/src/resource/chara/guest.png +0 -0
  320. package/example/src/resource/chara/guide.png +0 -0
  321. package/example/src/resource/chara/scientist.png +0 -0
  322. package/example/src/resource/config.js +0 -0
  323. package/example/src/resource/se/doorbell.mp3 +0 -0
  324. package/example/src/resource/system/systemPicture/01_message/message.png +0 -0
  325. package/example/src/resource/system/systemPicture/02_button/button.png +0 -0
  326. package/example/src/resource/system/systemPicture/02_button/button2.png +0 -0
  327. package/example/src/resource/system/systemPicture/02_button/button3.png +0 -0
  328. package/example/src/resource/system/systemPicture/03_system_button/auto.png +0 -0
  329. package/example/src/resource/system/systemPicture/03_system_button/auto2.png +0 -0
  330. package/example/src/resource/system/systemPicture/03_system_button/close.png +0 -0
  331. package/example/src/resource/system/systemPicture/03_system_button/close2.png +0 -0
  332. package/example/src/resource/system/systemPicture/03_system_button/config.png +0 -0
  333. package/example/src/resource/system/systemPicture/03_system_button/config2.png +0 -0
  334. package/example/src/resource/system/systemPicture/03_system_button/load.png +0 -0
  335. package/example/src/resource/system/systemPicture/03_system_button/load2.png +0 -0
  336. package/example/src/resource/system/systemPicture/03_system_button/log.png +0 -0
  337. package/example/src/resource/system/systemPicture/03_system_button/log2.png +0 -0
  338. package/example/src/resource/system/systemPicture/03_system_button/menu.png +0 -0
  339. package/example/src/resource/system/systemPicture/03_system_button/menu2.png +0 -0
  340. package/example/src/resource/system/systemPicture/03_system_button/qload.png +0 -0
  341. package/example/src/resource/system/systemPicture/03_system_button/qload2.png +0 -0
  342. package/example/src/resource/system/systemPicture/03_system_button/qsave.png +0 -0
  343. package/example/src/resource/system/systemPicture/03_system_button/qsave2.png +0 -0
  344. package/example/src/resource/system/systemPicture/03_system_button/save.png +0 -0
  345. package/example/src/resource/system/systemPicture/03_system_button/save2.png +0 -0
  346. package/example/src/resource/system/systemPicture/03_system_button/screen.png +0 -0
  347. package/example/src/resource/system/systemPicture/03_system_button/screen2.png +0 -0
  348. package/example/src/resource/system/systemPicture/03_system_button/skip.png +0 -0
  349. package/example/src/resource/system/systemPicture/03_system_button/skip2.png +0 -0
  350. package/example/src/resource/system/systemPicture/03_system_button/title.png +0 -0
  351. package/example/src/resource/system/systemPicture/03_system_button/title2.png +0 -0
  352. package/example/src/resource/system/systemPicture//345/210/251/347/224/250/350/246/217/347/264/204.txt +0 -0
  353. package/example/src/resource/system/wait.gif +0 -0
  354. package/example/src/scene/animation.scene +0 -28
  355. package/example/src/scene/background.scene +0 -29
  356. package/example/src/scene/character.scene +0 -26
  357. package/example/src/scene/choice.scene +0 -97
  358. package/example/src/scene/dialog.scene +0 -105
  359. package/example/src/scene/effects.scene +0 -38
  360. package/example/src/scene/en/animation.scene +0 -28
  361. package/example/src/scene/en/background.scene +0 -26
  362. package/example/src/scene/en/character.scene +0 -26
  363. package/example/src/scene/en/choice.scene +0 -32
  364. package/example/src/scene/en/effects.scene +0 -37
  365. package/example/src/scene/en/sound.scene +0 -26
  366. package/example/src/scene/en/text.scene +0 -26
  367. package/example/src/scene/en/title.scene +0 -39
  368. package/example/src/scene/if_test.scene +0 -37
  369. package/example/src/scene/resource-error-test.scene +0 -15
  370. package/example/src/scene/save-load-test.scene +0 -48
  371. package/example/src/scene/sound.scene +0 -26
  372. package/example/src/scene/test_error.scene +0 -21
  373. package/example/src/scene/text.scene +0 -34
  374. package/example/src/scene/title.scene +0 -51
  375. package/example/src/screen/incoming.html +0 -474
  376. package/example/src/screen/title.html +0 -135
  377. package/example/src/template.html +0 -16
  378. package/example/test-results/.last-run.json +0 -4
  379. package/example/webpack.config.js +0 -69
  380. package/image.png +0 -0
  381. package/playwright-report/index.html +0 -71
  382. package/s-plan1-5Light-s-1.jpg +0 -0
  383. package/test-results/.last-run.json +0 -6
  384. package/tests/e2e/if-global-attribute.spec.js +0 -90
  385. package/tests/e2e/resource-error-handling.spec.js +0 -58
  386. package/tests/e2e/screenshots/before-error-check.png +0 -0
  387. package/tests/e2e/screenshots/choices.png +0 -0
  388. package/tests/e2e/screenshots/message-window-click-wait.png +0 -0
  389. /package/{dist/src → src}/core/resourceManager.js +0 -0
  390. /package/{dist/src → src}/core/resourceManager.js.map +0 -0
  391. /package/{dist/src → src}/resource/ImageObject.js +0 -0
  392. /package/{dist/src → src}/resource/ImageObject.js.map +0 -0
  393. /package/{dist/src → src}/resource/soundObject.js +0 -0
  394. /package/{dist/src → src}/resource/soundObject.js.map +0 -0
  395. /package/{dist/src → src}/utils/fallbackTemplate.js +0 -0
  396. /package/{dist/src → src}/utils/fallbackTemplate.js.map +0 -0
  397. /package/{dist/src → src}/utils/waitUtil.js +0 -0
  398. /package/{dist/src → src}/utils/waitUtil.js.map +0 -0
@@ -1,365 +0,0 @@
1
- import { ImageObject } from '../resource/ImageObject'
2
- import { outputLog } from '../utils/logger'
3
- import { sleep } from '../utils/waitUtil'
4
-
5
- /*
6
- drawerの目的
7
- UIのHTMLとcanvasを描画する。
8
- */
9
- export class Drawer {
10
- private gameScreen: HTMLElement
11
- private nameView!: HTMLElement
12
- private messageText!: HTMLElement
13
- private interactiveView!: HTMLElement
14
- private ctx!: CanvasRenderingContext2D
15
- private screenHtml!: HTMLElement
16
- private config: any
17
- isSkip: boolean = false
18
- readySkip: boolean = false
19
-
20
- constructor(gameContainer: HTMLElement) {
21
- this.gameScreen = gameContainer
22
- // ウィンドウのリサイズ時にスケールを調整
23
- window.addEventListener('resize', () => this.adjustScale(this.gameScreen))
24
- // 初期ロード時にもスケールを調整
25
- this.adjustScale(this.gameScreen)
26
- }
27
-
28
- setScreen(screenHtml: HTMLElement, resolution: { width: number; height: number }) {
29
- this.screenHtml = screenHtml
30
- this.nameView = screenHtml.querySelector('#nameView') as HTMLElement
31
- this.messageText = screenHtml.querySelector('#messageView') as HTMLElement
32
- this.interactiveView = screenHtml.querySelector(
33
- '#interactiveView',
34
- ) as HTMLElement
35
-
36
- // canvasをDOMに追加する
37
- const canvas = document.createElement('canvas')
38
- canvas.width = (resolution.width || 1280) * devicePixelRatio;
39
- canvas.height = (resolution.height || 720) * devicePixelRatio;
40
- // canvasのコンテキストを取得する
41
- this.gameScreen.appendChild(canvas)
42
- this.ctx = canvas.getContext('2d') as CanvasRenderingContext2D
43
- // 黒で塗りつぶす
44
- this.ctx.fillStyle = 'black'
45
- this.ctx.fillRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height)
46
- // 初期ロード時にもスケールを調整
47
- this.adjustScale(this.gameScreen)
48
- }
49
-
50
- drawName(name: string) {
51
- this.nameView.innerHTML = name
52
- }
53
-
54
-
55
-
56
- async drawText(text: string, speed: number = 50) {
57
- const fragments = this.parseText(text);
58
- await this.renderFragments(fragments, speed);
59
- }
60
-
61
- clearText() {
62
- if (this.messageText) {
63
- this.messageText.innerHTML = '';
64
- }
65
- }
66
-
67
- private async renderFragments(fragments: (string | HTMLElement)[], speed: number) {
68
- for (const fragment of fragments) {
69
- if (typeof fragment === 'string') {
70
- await this.typeText(fragment, speed);
71
- } else {
72
- const element = fragment;
73
- this.messageText.appendChild(element);
74
- if (element.childNodes.length > 0) {
75
- await this.renderFragments(Array.from(element.childNodes) as (string | HTMLElement)[], speed);
76
- }
77
- }
78
- }
79
- }
80
-
81
- private async typeText(text: string, speed: number) {
82
- for (const char of text) {
83
- this.messageText.appendChild(document.createTextNode(char));
84
- await sleep(speed);
85
- }
86
- }
87
-
88
- private createElementFromTag(tag: string): HTMLElement | null {
89
- const colorMatch = tag.match(/<color\s+value="(.*?)">/);
90
- if (colorMatch) {
91
- const span = document.createElement('span');
92
- span.style.color = colorMatch[1];
93
- return span;
94
- }
95
-
96
- const rubyMatch = tag.match(/<ruby\s+text="(.*?)">/);
97
- if (rubyMatch) {
98
- const ruby = document.createElement('ruby');
99
- const rt = document.createElement('rt');
100
- rt.textContent = rubyMatch[1];
101
- ruby.appendChild(rt);
102
- return ruby;
103
- }
104
-
105
- switch (tag) {
106
- case '<b>':
107
- return document.createElement('strong');
108
- case '<i>':
109
- return document.createElement('em');
110
- default:
111
- return null;
112
- }
113
- }
114
-
115
- private parseText(text: string): (string | HTMLElement)[] {
116
- const fragments: (string | HTMLElement)[] = [];
117
- let currentElement: HTMLElement | null = null;
118
- let currentText = '';
119
-
120
- const pushCurrentText = () => {
121
- if (currentText) {
122
- if (currentElement) {
123
- if (currentElement.tagName.toLowerCase() === 'ruby') {
124
- currentElement.insertBefore(document.createTextNode(currentText), currentElement.firstChild);
125
- } else {
126
- currentElement.appendChild(document.createTextNode(currentText));
127
- }
128
- } else {
129
- fragments.push(currentText);
130
- }
131
- currentText = '';
132
- }
133
- };
134
-
135
- for (let i = 0; i < text.length; i++) {
136
- if (text[i] === '<') {
137
- const tagEnd = text.indexOf('>', i);
138
- if (tagEnd === -1) {
139
- currentText += text[i];
140
- continue;
141
- }
142
-
143
- const tag = text.slice(i, tagEnd + 1);
144
- if (tag.startsWith('</')) {
145
- // 閉じタグの処理
146
- pushCurrentText();
147
- if (currentElement && currentElement.parentElement) {
148
- currentElement = currentElement.parentElement;
149
- } else {
150
- currentElement = null;
151
- }
152
- } else {
153
- // 開始タグの処理
154
- pushCurrentText();
155
- const newElement = this.createElementFromTag(tag);
156
- if (newElement) {
157
- if (currentElement) {
158
- currentElement.appendChild(newElement);
159
- } else {
160
- fragments.push(newElement);
161
- }
162
- currentElement = newElement;
163
- } else {
164
- currentText += tag;
165
- }
166
- }
167
- i = tagEnd;
168
- } else {
169
- currentText += text[i];
170
- }
171
- }
172
-
173
- pushCurrentText();
174
- return fragments;
175
- }
176
-
177
- async drawChoices(choices: any) {
178
- let isSelect = false
179
- let selectId = 0
180
- let onSelect = 0
181
-
182
- // 選択肢ボタンの配置を設定する
183
- const interactiveView = document.querySelector(
184
- '#interactiveView',
185
- ) as HTMLElement
186
- if (choices.position == 'auto' || choices.position === undefined) {
187
- interactiveView.className = 'auto'
188
- } else {
189
- interactiveView.className = 'manual'
190
- }
191
- // 選択肢を表示
192
- for (const choice of choices.content) {
193
- const defaultImage =
194
- choice.default !== undefined
195
- ? choice.default
196
- : './src/resource/system/systemPicture/02_button/button.png'
197
- const hoverImage =
198
- choice.hover !== undefined
199
- ? choice.hover
200
- : './src/resource/system/systemPicture/02_button/button2.png'
201
- const selectImage =
202
- choice.select !== undefined
203
- ? choice.select
204
- : './src/resource/system/systemPicture/02_button/button3.png'
205
- const button = document.createElement('div')
206
- button.className = 'choice'
207
- if (interactiveView.className == 'manual') {
208
- button.style.position = 'absolute'
209
- button.style.top = choice.position?.y || 0
210
- button.style.left = choice.position?.x || 0
211
- }
212
- button.style.color =
213
- choice.color !== undefined ? choice.color.default : 'black'
214
- button.style.width = '100%'
215
- button.style.height = '50px'
216
- button.style.backgroundImage = `url(${defaultImage})`
217
- button.style.textAlign = 'center'
218
- button.style.backgroundRepeat = 'no-repeat'
219
- button.style.backgroundPosition = 'center'
220
- button.style.paddingTop = '20px'
221
- button.addEventListener('mouseenter', function () {
222
- // マウスが要素の上にあるときの背景色
223
- this.style.backgroundImage = `url(${hoverImage})`
224
- this.style.color =
225
- choice.color !== undefined ? choice.color.hover : 'black'
226
- })
227
- button.addEventListener('mouseleave', function () {
228
- // マウスが要素から離れたときの背景色
229
- this.style.backgroundImage = `url(${defaultImage})`
230
- this.style.color =
231
- choice.color !== undefined ? choice.color.default : 'black'
232
- })
233
- button.addEventListener('mousedown', function () {
234
- // マウスが要素を選択したときの背景色
235
- this.style.backgroundImage = `url(${selectImage})`
236
- this.style.color =
237
- choice.color !== undefined ? choice.color.select : 'black'
238
- })
239
- button.innerHTML = choice.label
240
- button.onclick = () => {
241
- outputLog('click', 'debug', choice)
242
- this.interactiveView.querySelectorAll('.choice').forEach((element) => {
243
- element.parentNode?.removeChild(element)
244
- })
245
- selectId = choice.id
246
- onSelect = choice.content
247
- isSelect = true
248
- }
249
- this.interactiveView.appendChild(button)
250
- }
251
-
252
- // 選択待ち
253
- return new Promise((resolve) => {
254
- const intervalId = setInterval(() => {
255
- if (isSelect) {
256
- clearInterval(intervalId)
257
- resolve({ selectId, onSelect })
258
- }
259
- }, 100)
260
- })
261
- }
262
-
263
- clear() {
264
- this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height)
265
- }
266
-
267
- show(displayedImages: any) {
268
- this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height)
269
- for (let key in displayedImages) {
270
- const img: ImageObject = displayedImages[key].image
271
- const pos: { x: number; y: number } = displayedImages[key].pos || {
272
- x: 0,
273
- y: 0,
274
- }
275
- const size: { width: number; height: number } = displayedImages[key].size
276
- const reverse: boolean = displayedImages[key].look || false
277
- const entry: { time: number; wait: boolean } = displayedImages[key]
278
- .entry || { time: 1, wait: false }
279
- if (entry.wait) {
280
- // 表示開始までの遅延処理
281
- setTimeout(() => {
282
- this.drawCanvas(img, pos, size, reverse)
283
- }, entry.time * 1000)
284
- } else {
285
- this.drawCanvas(img, pos, size, reverse)
286
- }
287
- }
288
- }
289
-
290
- moveTo(name: string, displayedImages: any, pos: { x: number; y: number }, durning: number) {
291
- return new Promise((resolve) => {
292
- const target = displayedImages[name];
293
- const startPos = { x: target.pos.x, y: target.pos.y };
294
- const dest = { x: startPos.x + Number(pos.x), y: startPos.y + Number(pos.y) };
295
- const startTime = performance.now();
296
-
297
- const move = (currentTime:any) => {
298
- const elapsedTime = (currentTime - startTime) / 1000; // 秒単位の経過時間
299
- const progress = Math.min(elapsedTime / durning, 1); // 0から1の進捗
300
-
301
- target.pos.x = startPos.x + (dest.x - startPos.x) * progress;
302
- target.pos.y = startPos.y + (dest.y - startPos.y) * progress;
303
-
304
- this.show(displayedImages);
305
-
306
- if (progress < 1) {
307
- window.requestAnimationFrame(move);
308
- } else {
309
- // 最終位置を正確に設定
310
- target.pos.x = dest.x;
311
- target.pos.y = dest.y;
312
- this.show(displayedImages);
313
- resolve(null);
314
- }
315
- };
316
-
317
- window.requestAnimationFrame(move);
318
- });
319
- }
320
- drawCanvas(img: ImageObject, pos: any, size: any, reverse: any) {
321
- outputLog('drawCanvas', 'debug', {img, pos, size, reverse})
322
- const canvas = img.draw(reverse).getCanvas()
323
- // canvasから画像を取得して、this.ctxに描画
324
- const imageWidth = size !== undefined ? size.width : canvas.width
325
- const imageHeight = size !== undefined ? size.height : canvas.height
326
- this.ctx.drawImage(
327
- canvas,
328
- 0,
329
- 0,
330
- canvas.width,
331
- canvas.height,
332
- pos.x,
333
- pos.y,
334
- imageWidth,
335
- imageHeight,
336
- ) //CanvasRenderingContext2D.drawImage: Passed-in canvas is empty
337
- }
338
-
339
- adjustScale(targetElement: HTMLElement) {
340
- // ターゲット要素の元の幅と高さ
341
- const originalWidth = targetElement.scrollWidth // 例: 1280px
342
- const originalHeight = targetElement.scrollHeight // 例: 720px
343
-
344
- // ビューポートの幅と高さを取得
345
- const viewportWidth = window.innerWidth
346
- const viewportHeight = window.innerHeight
347
-
348
- // 幅と高さのスケールを計算
349
- const scaleX = viewportWidth / originalWidth
350
- const scaleY = viewportHeight / originalHeight
351
-
352
- // 幅と高さのうち、小さい方のスケールを選択(アスペクト比を維持)
353
- const scale = Math.min(scaleX, scaleY)
354
-
355
- // ターゲット要素にスケールを適用
356
- targetElement.style.transform = `scale(${scale})`
357
- }
358
-
359
- setVisibility(name: string, isVisible: boolean) {
360
- const target = this.screenHtml.querySelector(name) as HTMLElement
361
- if (target) {
362
- target.style.visibility = isVisible ? 'visible' : 'hidden'
363
- }
364
- }
365
- }
@@ -1,294 +0,0 @@
1
- import { ImageObject } from '../resource/ImageObject'
2
- import { outputLog } from '../utils/logger'
3
- import { sleep } from '../utils/waitUtil'
4
-
5
- /*
6
- drawerの目的
7
- UIのHTMLとcanvasを描画する。
8
- */
9
- export class Drawer {
10
- private gameScreen: HTMLElement
11
- private nameView!: HTMLElement
12
- private messageText!: HTMLElement
13
- private interactiveView!: HTMLElement
14
- private ctx!: CanvasRenderingContext2D
15
- private screenHtml!: HTMLElement
16
- private config: any
17
- isSkip: boolean = false
18
- readySkip: boolean = false
19
-
20
- constructor(gameContainer: HTMLElement) {
21
- this.gameScreen = gameContainer
22
- // ウィンドウのリサイズ時にスケールを調整
23
- window.addEventListener('resize', () => this.adjustScale(this.gameScreen))
24
- // 初期ロード時にもスケールを調整
25
- this.adjustScale(this.gameScreen)
26
- }
27
-
28
- setScreen(screenHtml: HTMLElement, resolution: { width: number; height: number }) {
29
- this.screenHtml = screenHtml
30
- this.nameView = screenHtml.querySelector('#nameView') as HTMLElement
31
- this.messageText = screenHtml.querySelector('#messageView') as HTMLElement
32
- this.interactiveView = screenHtml.querySelector(
33
- '#interactiveView',
34
- ) as HTMLElement
35
-
36
- // canvasをDOMに追加する
37
- const canvas = document.createElement('canvas')
38
- canvas.width = (resolution.width || 1280) * devicePixelRatio;
39
- canvas.height = (resolution.height || 720) * devicePixelRatio;
40
- // canvasのコンテキストを取得する
41
- this.gameScreen.appendChild(canvas)
42
- this.ctx = canvas.getContext('2d') as CanvasRenderingContext2D
43
- // 黒で塗りつぶす
44
- this.ctx.fillStyle = 'black'
45
- this.ctx.fillRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height)
46
- // 初期ロード時にもスケールを調整
47
- this.adjustScale(this.gameScreen)
48
- }
49
-
50
- drawName(name: string) {
51
- this.nameView.innerHTML = name
52
- }
53
-
54
- async drawText(text: string, wait: number) {
55
- this.messageText.innerHTML = ''
56
- for (const char of text) {
57
- //prettier-ignore
58
- setTimeout(() => { this.readySkip = true, wait });
59
- // 100ミリ秒待ってから、スキップボタンが押されたら即座に表示
60
- if (!this.isSkip) {
61
- this.messageText.appendChild(document.createTextNode(char));
62
- await sleep(wait)
63
- } else {
64
- if (this.readySkip) {
65
- this.messageText.innerHTML = text
66
- this.readySkip = false
67
- this.isSkip = false
68
- break
69
- }
70
- }
71
- }
72
- }
73
-
74
- async drawTextContent(content, speed = 50) {
75
- for (const item of content) {
76
- if (typeof item === 'string') {
77
- await this.typeText(item, speed);
78
- } else {
79
- await this.drawDecoratedText(item, speed);
80
- }
81
- }
82
- }
83
-
84
- async drawDecoratedText(element, speed) {
85
- const container = this.createDecoratedElement(element);
86
- this.messageText.appendChild(container);
87
- await this.typeTextInElement(container, speed);
88
- }
89
-
90
- createDecoratedElement(element) {
91
- switch (element.type) {
92
- case 'color':
93
- const span = document.createElement('span');
94
- span.style.color = element.value;
95
- return span;
96
- case 'ruby':
97
- const ruby = document.createElement('ruby');
98
- const rt = document.createElement('rt');
99
- rt.textContent = element.text;
100
- ruby.appendChild(rt);
101
- return ruby;
102
- // 他の装飾タイプに対する処理を追加
103
- }
104
- }
105
-
106
- async drawChoices(choices: any) {
107
- let isSelect = false
108
- let selectId = 0
109
- let onSelect = 0
110
-
111
- // 選択肢ボタンの配置を設定する
112
- const interactiveView = document.querySelector(
113
- '#interactiveView',
114
- ) as HTMLElement
115
- if (choices.position == 'auto' || choices.position === undefined) {
116
- interactiveView.className = 'auto'
117
- } else {
118
- interactiveView.className = 'manual'
119
- }
120
- // 選択肢を表示
121
- for (const choice of choices.content) {
122
- const defaultImage =
123
- choice.default !== undefined
124
- ? choice.default
125
- : './src/resource/system/systemPicture/02_button/button.png'
126
- const hoverImage =
127
- choice.hover !== undefined
128
- ? choice.hover
129
- : './src/resource/system/systemPicture/02_button/button2.png'
130
- const selectImage =
131
- choice.select !== undefined
132
- ? choice.select
133
- : './src/resource/system/systemPicture/02_button/button3.png'
134
- const button = document.createElement('div')
135
- button.className = 'choice'
136
- if (interactiveView.className == 'manual') {
137
- button.style.position = 'absolute'
138
- button.style.top = choice.position?.y || 0
139
- button.style.left = choice.position?.x || 0
140
- }
141
- button.style.color =
142
- choice.color !== undefined ? choice.color.default : 'black'
143
- button.style.width = '100%'
144
- button.style.height = '50px'
145
- button.style.backgroundImage = `url(${defaultImage})`
146
- button.style.textAlign = 'center'
147
- button.style.backgroundRepeat = 'no-repeat'
148
- button.style.backgroundPosition = 'center'
149
- button.style.paddingTop = '20px'
150
- button.addEventListener('mouseenter', function () {
151
- // マウスが要素の上にあるときの背景色
152
- this.style.backgroundImage = `url(${hoverImage})`
153
- this.style.color =
154
- choice.color !== undefined ? choice.color.hover : 'black'
155
- })
156
- button.addEventListener('mouseleave', function () {
157
- // マウスが要素から離れたときの背景色
158
- this.style.backgroundImage = `url(${defaultImage})`
159
- this.style.color =
160
- choice.color !== undefined ? choice.color.default : 'black'
161
- })
162
- button.addEventListener('mousedown', function () {
163
- // マウスが要素を選択したときの背景色
164
- this.style.backgroundImage = `url(${selectImage})`
165
- this.style.color =
166
- choice.color !== undefined ? choice.color.select : 'black'
167
- })
168
- button.innerHTML = choice.label
169
- button.onclick = () => {
170
- outputLog('click', 'debug', choice)
171
- this.interactiveView.querySelectorAll('.choice').forEach((element) => {
172
- element.parentNode?.removeChild(element)
173
- })
174
- selectId = choice.id
175
- onSelect = choice.content
176
- isSelect = true
177
- }
178
- this.interactiveView.appendChild(button)
179
- }
180
-
181
- // 選択待ち
182
- return new Promise((resolve) => {
183
- const intervalId = setInterval(() => {
184
- if (isSelect) {
185
- clearInterval(intervalId)
186
- resolve({ selectId, onSelect })
187
- }
188
- }, 100)
189
- })
190
- }
191
-
192
- clear() {
193
- this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height)
194
- }
195
-
196
- show(displayedImages: any) {
197
- this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height)
198
- for (let key in displayedImages) {
199
- const img: ImageObject = displayedImages[key].image
200
- const pos: { x: number; y: number } = displayedImages[key].pos || {
201
- x: 0,
202
- y: 0,
203
- }
204
- const size: { width: number; height: number } = displayedImages[key].size
205
- const reverse: boolean = displayedImages[key].look || false
206
- const entry: { time: number; wait: boolean } = displayedImages[key]
207
- .entry || { time: 1, wait: false }
208
- if (entry.wait) {
209
- // 表示開始までの遅延処理
210
- setTimeout(() => {
211
- this.drawCanvas(img, pos, size, reverse)
212
- }, entry.time * 1000)
213
- } else {
214
- this.drawCanvas(img, pos, size, reverse)
215
- }
216
- }
217
- }
218
-
219
- moveTo(name: string, displayedImages: any, pos: { x: number; y: number }, durning: number) {
220
- return new Promise((resolve) => {
221
- const target = displayedImages[name];
222
- const startPos = { x: target.pos.x, y: target.pos.y };
223
- const dest = { x: startPos.x + Number(pos.x), y: startPos.y + Number(pos.y) };
224
- const startTime = performance.now();
225
-
226
- const move = (currentTime:any) => {
227
- const elapsedTime = (currentTime - startTime) / 1000; // 秒単位の経過時間
228
- const progress = Math.min(elapsedTime / durning, 1); // 0から1の進捗
229
-
230
- target.pos.x = startPos.x + (dest.x - startPos.x) * progress;
231
- target.pos.y = startPos.y + (dest.y - startPos.y) * progress;
232
-
233
- this.show(displayedImages);
234
-
235
- if (progress < 1) {
236
- window.requestAnimationFrame(move);
237
- } else {
238
- // 最終位置を正確に設定
239
- target.pos.x = dest.x;
240
- target.pos.y = dest.y;
241
- this.show(displayedImages);
242
- resolve(null);
243
- }
244
- };
245
-
246
- window.requestAnimationFrame(move);
247
- });
248
- }
249
- drawCanvas(img: ImageObject, pos: any, size: any, reverse: any) {
250
- outputLog('drawCanvas', 'debug', {img, pos, size, reverse})
251
- const canvas = img.draw(reverse).getCanvas()
252
- // canvasから画像を取得して、this.ctxに描画
253
- const imageWidth = size !== undefined ? size.width : canvas.width
254
- const imageHeight = size !== undefined ? size.height : canvas.height
255
- this.ctx.drawImage(
256
- canvas,
257
- 0,
258
- 0,
259
- canvas.width,
260
- canvas.height,
261
- pos.x,
262
- pos.y,
263
- imageWidth,
264
- imageHeight,
265
- ) //CanvasRenderingContext2D.drawImage: Passed-in canvas is empty
266
- }
267
-
268
- adjustScale(targetElement: HTMLElement) {
269
- // ターゲット要素の元の幅と高さ
270
- const originalWidth = targetElement.scrollWidth // 例: 1280px
271
- const originalHeight = targetElement.scrollHeight // 例: 720px
272
-
273
- // ビューポートの幅と高さを取得
274
- const viewportWidth = window.innerWidth
275
- const viewportHeight = window.innerHeight
276
-
277
- // 幅と高さのスケールを計算
278
- const scaleX = viewportWidth / originalWidth
279
- const scaleY = viewportHeight / originalHeight
280
-
281
- // 幅と高さのうち、小さい方のスケールを選択(アスペクト比を維持)
282
- const scale = Math.min(scaleX, scaleY)
283
-
284
- // ターゲット要素にスケールを適用
285
- targetElement.style.transform = `scale(${scale})`
286
- }
287
-
288
- setVisibility(name: string, isVisible: boolean) {
289
- const target = this.screenHtml.querySelector(name) as HTMLElement
290
- if (target) {
291
- target.style.visibility = isVisible ? 'visible' : 'hidden'
292
- }
293
- }
294
- }