@caperjs/core 0.1.0

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 (600) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +62 -0
  3. package/cli/add.mjs +197 -0
  4. package/cli/audio/cc.mjs +128 -0
  5. package/cli/audio/index.mjs +42 -0
  6. package/cli/audio/utils.mjs +56 -0
  7. package/cli/create-caper.mjs +8 -0
  8. package/cli/create.mjs +351 -0
  9. package/cli/install-peerdeps.mjs +57 -0
  10. package/cli/update.mjs +9 -0
  11. package/cli/utils.mjs +81 -0
  12. package/cli/vite.mjs +55 -0
  13. package/cli/voiceover/generateVoiceoverCSV.mjs +158 -0
  14. package/cli/voiceover/index.mjs +1 -0
  15. package/cli.mjs +157 -0
  16. package/client.d.ts +7 -0
  17. package/config/assetpack.mjs +212 -0
  18. package/config/tsconfig.base.json +28 -0
  19. package/config/vite.mjs +2464 -0
  20. package/extras/css/accessibility.css +9 -0
  21. package/extras/css/fullscreen.css +28 -0
  22. package/extras/css/loader.css +67 -0
  23. package/extras/llms.txt +1602 -0
  24. package/lib/CaptionsPlugin-Dc8fIrjy.js +277 -0
  25. package/lib/CaptionsPlugin-Dc8fIrjy.js.map +1 -0
  26. package/lib/DataAdapter-BY2114sp.js +84 -0
  27. package/lib/DataAdapter-BY2114sp.js.map +1 -0
  28. package/lib/DebugRenderer-BJMLILqI.js +1385 -0
  29. package/lib/DebugRenderer-BJMLILqI.js.map +1 -0
  30. package/lib/DevToolsPlugin-wQ5rOkn0.js +31 -0
  31. package/lib/DevToolsPlugin-wQ5rOkn0.js.map +1 -0
  32. package/lib/GSAPPlugin-DHhSZKv8.js +350 -0
  33. package/lib/GSAPPlugin-DHhSZKv8.js.map +1 -0
  34. package/lib/LayoutPlugin-B-DF9SYM.js +1271 -0
  35. package/lib/LayoutPlugin-B-DF9SYM.js.map +1 -0
  36. package/lib/SpinePlugin-Dz_3dljz.js +6077 -0
  37. package/lib/SpinePlugin-Dz_3dljz.js.map +1 -0
  38. package/lib/StatsPlugin-Cg82JMBD.js +70 -0
  39. package/lib/StatsPlugin-Cg82JMBD.js.map +1 -0
  40. package/lib/VoiceOverPlugin-BR3ImT8C.js +114 -0
  41. package/lib/VoiceOverPlugin-BR3ImT8C.js.map +1 -0
  42. package/lib/caper.mjs +1233 -0
  43. package/lib/caper.mjs.map +1 -0
  44. package/lib/core/Application.d.ts +268 -0
  45. package/lib/core/Application.d.ts.map +1 -0
  46. package/lib/core/config.d.ts +39 -0
  47. package/lib/core/config.d.ts.map +1 -0
  48. package/lib/core/create.d.ts +41 -0
  49. package/lib/core/create.d.ts.map +1 -0
  50. package/lib/core/globals.d.ts +51 -0
  51. package/lib/core/globals.d.ts.map +1 -0
  52. package/lib/core/index.d.ts +7 -0
  53. package/lib/core/index.d.ts.map +1 -0
  54. package/lib/core/interfaces/IApplication.d.ts +566 -0
  55. package/lib/core/interfaces/IApplication.d.ts.map +1 -0
  56. package/lib/core/interfaces/IApplicationOptions.d.ts +65 -0
  57. package/lib/core/interfaces/IApplicationOptions.d.ts.map +1 -0
  58. package/lib/core/interfaces/ICoreFunctions.d.ts +49 -0
  59. package/lib/core/interfaces/ICoreFunctions.d.ts.map +1 -0
  60. package/lib/core/interfaces/ICoreSignals.d.ts +57 -0
  61. package/lib/core/interfaces/ICoreSignals.d.ts.map +1 -0
  62. package/lib/core/interfaces/IStorageCapability.d.ts +20 -0
  63. package/lib/core/interfaces/IStorageCapability.d.ts.map +1 -0
  64. package/lib/core/interfaces/IStorageCapability.test.d.ts +2 -0
  65. package/lib/core/interfaces/IStorageCapability.test.d.ts.map +1 -0
  66. package/lib/core/interfaces/index.d.ts +7 -0
  67. package/lib/core/interfaces/index.d.ts.map +1 -0
  68. package/lib/core/registries.d.ts +8 -0
  69. package/lib/core/registries.d.ts.map +1 -0
  70. package/lib/core/types.d.ts +12 -0
  71. package/lib/core/types.d.ts.map +1 -0
  72. package/lib/display/AnimatedSprite.d.ts +40 -0
  73. package/lib/display/AnimatedSprite.d.ts.map +1 -0
  74. package/lib/display/Camera.d.ts +102 -0
  75. package/lib/display/Camera.d.ts.map +1 -0
  76. package/lib/display/Container.d.ts +115 -0
  77. package/lib/display/Container.d.ts.map +1 -0
  78. package/lib/display/Entity.d.ts +46 -0
  79. package/lib/display/Entity.d.ts.map +1 -0
  80. package/lib/display/ParticleContainer.d.ts +58 -0
  81. package/lib/display/ParticleContainer.d.ts.map +1 -0
  82. package/lib/display/Scene.d.ts +250 -0
  83. package/lib/display/Scene.d.ts.map +1 -0
  84. package/lib/display/SceneTransition.d.ts +41 -0
  85. package/lib/display/SceneTransition.d.ts.map +1 -0
  86. package/lib/display/SpineAnimation.d.ts +76 -0
  87. package/lib/display/SpineAnimation.d.ts.map +1 -0
  88. package/lib/display/Svg.d.ts +5 -0
  89. package/lib/display/Svg.d.ts.map +1 -0
  90. package/lib/display/index.d.ts +10 -0
  91. package/lib/display/index.d.ts.map +1 -0
  92. package/lib/env.d.ts +6 -0
  93. package/lib/hello.d.ts +2 -0
  94. package/lib/hello.d.ts.map +1 -0
  95. package/lib/index.d.ts +15 -0
  96. package/lib/index.d.ts.map +1 -0
  97. package/lib/mixins/animated.d.ts +53 -0
  98. package/lib/mixins/animated.d.ts.map +1 -0
  99. package/lib/mixins/factory/Factory.d.ts +8 -0
  100. package/lib/mixins/factory/Factory.d.ts.map +1 -0
  101. package/lib/mixins/factory/const.d.ts +67 -0
  102. package/lib/mixins/factory/const.d.ts.map +1 -0
  103. package/lib/mixins/factory/index.d.ts +8 -0
  104. package/lib/mixins/factory/index.d.ts.map +1 -0
  105. package/lib/mixins/factory/methods.d.ts +3 -0
  106. package/lib/mixins/factory/methods.d.ts.map +1 -0
  107. package/lib/mixins/factory/props.d.ts +160 -0
  108. package/lib/mixins/factory/props.d.ts.map +1 -0
  109. package/lib/mixins/factory/registry.d.ts +27 -0
  110. package/lib/mixins/factory/registry.d.ts.map +1 -0
  111. package/lib/mixins/factory/registry.test.d.ts +2 -0
  112. package/lib/mixins/factory/registry.test.d.ts.map +1 -0
  113. package/lib/mixins/factory/schema.d.ts +71 -0
  114. package/lib/mixins/factory/schema.d.ts.map +1 -0
  115. package/lib/mixins/factory/ui-registry.d.ts +20 -0
  116. package/lib/mixins/factory/ui-registry.d.ts.map +1 -0
  117. package/lib/mixins/factory/utils.d.ts +11 -0
  118. package/lib/mixins/factory/utils.d.ts.map +1 -0
  119. package/lib/mixins/focus.d.ts +15 -0
  120. package/lib/mixins/focus.d.ts.map +1 -0
  121. package/lib/mixins/index.d.ts +6 -0
  122. package/lib/mixins/index.d.ts.map +1 -0
  123. package/lib/mixins/interaction.d.ts +20 -0
  124. package/lib/mixins/interaction.d.ts.map +1 -0
  125. package/lib/mixins/signals.d.ts +15 -0
  126. package/lib/mixins/signals.d.ts.map +1 -0
  127. package/lib/plugins/AssetsPlugin.d.ts +79 -0
  128. package/lib/plugins/AssetsPlugin.d.ts.map +1 -0
  129. package/lib/plugins/DataAdapter.d.ts +95 -0
  130. package/lib/plugins/DataAdapter.d.ts.map +1 -0
  131. package/lib/plugins/DevToolsPlugin.d.ts +97 -0
  132. package/lib/plugins/DevToolsPlugin.d.ts.map +1 -0
  133. package/lib/plugins/FullScreenPlugin.d.ts +240 -0
  134. package/lib/plugins/FullScreenPlugin.d.ts.map +1 -0
  135. package/lib/plugins/GSAPPlugin.d.ts +634 -0
  136. package/lib/plugins/GSAPPlugin.d.ts.map +1 -0
  137. package/lib/plugins/KeyboardPlugin.d.ts +53 -0
  138. package/lib/plugins/KeyboardPlugin.d.ts.map +1 -0
  139. package/lib/plugins/LayoutPlugin.d.ts +100 -0
  140. package/lib/plugins/LayoutPlugin.d.ts.map +1 -0
  141. package/lib/plugins/LookupPlugin.d.ts +223 -0
  142. package/lib/plugins/LookupPlugin.d.ts.map +1 -0
  143. package/lib/plugins/Plugin.d.ts +132 -0
  144. package/lib/plugins/Plugin.d.ts.map +1 -0
  145. package/lib/plugins/Plugin.test.d.ts +2 -0
  146. package/lib/plugins/Plugin.test.d.ts.map +1 -0
  147. package/lib/plugins/PopupManagerPlugin.d.ts +108 -0
  148. package/lib/plugins/PopupManagerPlugin.d.ts.map +1 -0
  149. package/lib/plugins/ResizerPlugin.d.ts +62 -0
  150. package/lib/plugins/ResizerPlugin.d.ts.map +1 -0
  151. package/lib/plugins/SceneManagerPlugin.d.ts +122 -0
  152. package/lib/plugins/SceneManagerPlugin.d.ts.map +1 -0
  153. package/lib/plugins/StatsPlugin.d.ts +8 -0
  154. package/lib/plugins/StatsPlugin.d.ts.map +1 -0
  155. package/lib/plugins/TimerPlugin.d.ts +401 -0
  156. package/lib/plugins/TimerPlugin.d.ts.map +1 -0
  157. package/lib/plugins/WebEventsPlugin.d.ts +60 -0
  158. package/lib/plugins/WebEventsPlugin.d.ts.map +1 -0
  159. package/lib/plugins/actions/ActionsPlugin.d.ts +39 -0
  160. package/lib/plugins/actions/ActionsPlugin.d.ts.map +1 -0
  161. package/lib/plugins/actions/constants.d.ts +52 -0
  162. package/lib/plugins/actions/constants.d.ts.map +1 -0
  163. package/lib/plugins/actions/index.d.ts +5 -0
  164. package/lib/plugins/actions/index.d.ts.map +1 -0
  165. package/lib/plugins/actions/methods.d.ts +11 -0
  166. package/lib/plugins/actions/methods.d.ts.map +1 -0
  167. package/lib/plugins/actions/types.d.ts +25 -0
  168. package/lib/plugins/actions/types.d.ts.map +1 -0
  169. package/lib/plugins/audio/AudioChannel.d.ts +46 -0
  170. package/lib/plugins/audio/AudioChannel.d.ts.map +1 -0
  171. package/lib/plugins/audio/AudioChannel.test.d.ts +2 -0
  172. package/lib/plugins/audio/AudioChannel.test.d.ts.map +1 -0
  173. package/lib/plugins/audio/AudioInstance.d.ts +79 -0
  174. package/lib/plugins/audio/AudioInstance.d.ts.map +1 -0
  175. package/lib/plugins/audio/AudioManagerPlugin.d.ts +323 -0
  176. package/lib/plugins/audio/AudioManagerPlugin.d.ts.map +1 -0
  177. package/lib/plugins/audio/VoiceOverPlugin.d.ts +69 -0
  178. package/lib/plugins/audio/VoiceOverPlugin.d.ts.map +1 -0
  179. package/lib/plugins/audio/index.d.ts +4 -0
  180. package/lib/plugins/audio/index.d.ts.map +1 -0
  181. package/lib/plugins/breakpoints/BreakpointPlugin.d.ts +109 -0
  182. package/lib/plugins/breakpoints/BreakpointPlugin.d.ts.map +1 -0
  183. package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts +2 -0
  184. package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts.map +1 -0
  185. package/lib/plugins/breakpoints/evaluate.d.ts +53 -0
  186. package/lib/plugins/breakpoints/evaluate.d.ts.map +1 -0
  187. package/lib/plugins/breakpoints/evaluate.test.d.ts +2 -0
  188. package/lib/plugins/breakpoints/evaluate.test.d.ts.map +1 -0
  189. package/lib/plugins/breakpoints/index.d.ts +4 -0
  190. package/lib/plugins/breakpoints/index.d.ts.map +1 -0
  191. package/lib/plugins/breakpoints/methods.d.ts +23 -0
  192. package/lib/plugins/breakpoints/methods.d.ts.map +1 -0
  193. package/lib/plugins/breakpoints/types.d.ts +70 -0
  194. package/lib/plugins/breakpoints/types.d.ts.map +1 -0
  195. package/lib/plugins/captions/CaptionsPlugin.d.ts +150 -0
  196. package/lib/plugins/captions/CaptionsPlugin.d.ts.map +1 -0
  197. package/lib/plugins/captions/CaptionsRenderer.d.ts +37 -0
  198. package/lib/plugins/captions/CaptionsRenderer.d.ts.map +1 -0
  199. package/lib/plugins/captions/index.d.ts +3 -0
  200. package/lib/plugins/captions/index.d.ts.map +1 -0
  201. package/lib/plugins/defaults.d.ts +4 -0
  202. package/lib/plugins/defaults.d.ts.map +1 -0
  203. package/lib/plugins/focus/FocusManagerPlugin.d.ts +148 -0
  204. package/lib/plugins/focus/FocusManagerPlugin.d.ts.map +1 -0
  205. package/lib/plugins/focus/FocusOutliner.d.ts +32 -0
  206. package/lib/plugins/focus/FocusOutliner.d.ts.map +1 -0
  207. package/lib/plugins/focus/index.d.ts +3 -0
  208. package/lib/plugins/focus/index.d.ts.map +1 -0
  209. package/lib/plugins/i18nPlugin.d.ts +128 -0
  210. package/lib/plugins/i18nPlugin.d.ts.map +1 -0
  211. package/lib/plugins/index.d.ts +18 -0
  212. package/lib/plugins/index.d.ts.map +1 -0
  213. package/lib/plugins/input/AbstractControls.d.ts +8 -0
  214. package/lib/plugins/input/AbstractControls.d.ts.map +1 -0
  215. package/lib/plugins/input/Controls.d.ts +16 -0
  216. package/lib/plugins/input/Controls.d.ts.map +1 -0
  217. package/lib/plugins/input/InputPlugin.d.ts +52 -0
  218. package/lib/plugins/input/InputPlugin.d.ts.map +1 -0
  219. package/lib/plugins/input/constants.d.ts +8 -0
  220. package/lib/plugins/input/constants.d.ts.map +1 -0
  221. package/lib/plugins/input/index.d.ts +10 -0
  222. package/lib/plugins/input/index.d.ts.map +1 -0
  223. package/lib/plugins/input/interfaces.d.ts +30 -0
  224. package/lib/plugins/input/interfaces.d.ts.map +1 -0
  225. package/lib/plugins/input/keyboard/KeyboardContols.d.ts +28 -0
  226. package/lib/plugins/input/keyboard/KeyboardContols.d.ts.map +1 -0
  227. package/lib/plugins/input/keyboard/index.d.ts +3 -0
  228. package/lib/plugins/input/keyboard/index.d.ts.map +1 -0
  229. package/lib/plugins/input/keyboard/interfaces.d.ts +18 -0
  230. package/lib/plugins/input/keyboard/interfaces.d.ts.map +1 -0
  231. package/lib/plugins/input/methods.d.ts +4 -0
  232. package/lib/plugins/input/methods.d.ts.map +1 -0
  233. package/lib/plugins/input/touch/TouchControls.d.ts +35 -0
  234. package/lib/plugins/input/touch/TouchControls.d.ts.map +1 -0
  235. package/lib/plugins/input/touch/constants.d.ts +14 -0
  236. package/lib/plugins/input/touch/constants.d.ts.map +1 -0
  237. package/lib/plugins/input/touch/index.d.ts +4 -0
  238. package/lib/plugins/input/touch/index.d.ts.map +1 -0
  239. package/lib/plugins/input/touch/interfaces.d.ts +15 -0
  240. package/lib/plugins/input/touch/interfaces.d.ts.map +1 -0
  241. package/lib/plugins/input/types.d.ts +32 -0
  242. package/lib/plugins/input/types.d.ts.map +1 -0
  243. package/lib/plugins/input/utils.d.ts +23 -0
  244. package/lib/plugins/input/utils.d.ts.map +1 -0
  245. package/lib/plugins/spine/SpinePlugin.d.ts +6 -0
  246. package/lib/plugins/spine/SpinePlugin.d.ts.map +1 -0
  247. package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts +31 -0
  248. package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts.map +1 -0
  249. package/lib/plugins/spine/pixi-spine/Spine.d.ts +211 -0
  250. package/lib/plugins/spine/pixi-spine/Spine.d.ts.map +1 -0
  251. package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts +81 -0
  252. package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts.map +1 -0
  253. package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts +21 -0
  254. package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts.map +1 -0
  255. package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts +16 -0
  256. package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts.map +1 -0
  257. package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts +10 -0
  258. package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts.map +1 -0
  259. package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts +6 -0
  260. package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts.map +1 -0
  261. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts +5 -0
  262. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts.map +1 -0
  263. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts +22 -0
  264. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts.map +1 -0
  265. package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts +5 -0
  266. package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts.map +1 -0
  267. package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts +51 -0
  268. package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts.map +1 -0
  269. package/lib/plugins/spine/pixi-spine/index.d.ts +9 -0
  270. package/lib/plugins/spine/pixi-spine/index.d.ts.map +1 -0
  271. package/lib/plugins/spine/pixi-spine/require-shim.d.ts +34 -0
  272. package/lib/plugins/spine/pixi-spine/require-shim.d.ts.map +1 -0
  273. package/lib/registries-CYCaYKZI.js +6885 -0
  274. package/lib/registries-CYCaYKZI.js.map +1 -0
  275. package/lib/signals/Signal.d.ts +16 -0
  276. package/lib/signals/Signal.d.ts.map +1 -0
  277. package/lib/signals/Signal.test.d.ts +2 -0
  278. package/lib/signals/Signal.test.d.ts.map +1 -0
  279. package/lib/signals/index.d.ts +3 -0
  280. package/lib/signals/index.d.ts.map +1 -0
  281. package/lib/store/Store.d.ts +56 -0
  282. package/lib/store/Store.d.ts.map +1 -0
  283. package/lib/store/Store.test.d.ts +2 -0
  284. package/lib/store/Store.test.d.ts.map +1 -0
  285. package/lib/store/index.d.ts +2 -0
  286. package/lib/store/index.d.ts.map +1 -0
  287. package/lib/types/framework.d.ts +46 -0
  288. package/lib/types/gsap.d.ts +23 -0
  289. package/lib/ui/Button.d.ts +162 -0
  290. package/lib/ui/Button.d.ts.map +1 -0
  291. package/lib/ui/FlexContainer.d.ts +109 -0
  292. package/lib/ui/FlexContainer.d.ts.map +1 -0
  293. package/lib/ui/Input.d.ts +384 -0
  294. package/lib/ui/Input.d.ts.map +1 -0
  295. package/lib/ui/Joystick.d.ts +61 -0
  296. package/lib/ui/Joystick.d.ts.map +1 -0
  297. package/lib/ui/Popup.d.ts +109 -0
  298. package/lib/ui/Popup.d.ts.map +1 -0
  299. package/lib/ui/Toast.d.ts +131 -0
  300. package/lib/ui/Toast.d.ts.map +1 -0
  301. package/lib/ui/Toaster.d.ts +188 -0
  302. package/lib/ui/Toaster.d.ts.map +1 -0
  303. package/lib/ui/UICanvas.d.ts +155 -0
  304. package/lib/ui/UICanvas.d.ts.map +1 -0
  305. package/lib/ui/index.d.ts +9 -0
  306. package/lib/ui/index.d.ts.map +1 -0
  307. package/lib/utils/array.d.ts +11 -0
  308. package/lib/utils/array.d.ts.map +1 -0
  309. package/lib/utils/bind.d.ts +21 -0
  310. package/lib/utils/bind.d.ts.map +1 -0
  311. package/lib/utils/canvas.d.ts +2 -0
  312. package/lib/utils/canvas.d.ts.map +1 -0
  313. package/lib/utils/color.d.ts +66 -0
  314. package/lib/utils/color.d.ts.map +1 -0
  315. package/lib/utils/console/Logger.d.ts +15 -0
  316. package/lib/utils/console/Logger.d.ts.map +1 -0
  317. package/lib/utils/console/index.d.ts +2 -0
  318. package/lib/utils/console/index.d.ts.map +1 -0
  319. package/lib/utils/debug.d.ts +34 -0
  320. package/lib/utils/debug.d.ts.map +1 -0
  321. package/lib/utils/define.d.ts +100 -0
  322. package/lib/utils/define.d.ts.map +1 -0
  323. package/lib/utils/env.d.ts +4 -0
  324. package/lib/utils/env.d.ts.map +1 -0
  325. package/lib/utils/events.d.ts +12 -0
  326. package/lib/utils/events.d.ts.map +1 -0
  327. package/lib/utils/framework.d.ts +12 -0
  328. package/lib/utils/framework.d.ts.map +1 -0
  329. package/lib/utils/index.d.ts +28 -0
  330. package/lib/utils/index.d.ts.map +1 -0
  331. package/lib/utils/map.d.ts +31 -0
  332. package/lib/utils/map.d.ts.map +1 -0
  333. package/lib/utils/math.d.ts +15 -0
  334. package/lib/utils/math.d.ts.map +1 -0
  335. package/lib/utils/misc.d.ts +13 -0
  336. package/lib/utils/misc.d.ts.map +1 -0
  337. package/lib/utils/number.d.ts +2 -0
  338. package/lib/utils/number.d.ts.map +1 -0
  339. package/lib/utils/object.d.ts +21 -0
  340. package/lib/utils/object.d.ts.map +1 -0
  341. package/lib/utils/padding.d.ts +4 -0
  342. package/lib/utils/padding.d.ts.map +1 -0
  343. package/lib/utils/pixi.d.ts +42 -0
  344. package/lib/utils/pixi.d.ts.map +1 -0
  345. package/lib/utils/platform.d.ts +20 -0
  346. package/lib/utils/platform.d.ts.map +1 -0
  347. package/lib/utils/point.d.ts +66 -0
  348. package/lib/utils/point.d.ts.map +1 -0
  349. package/lib/utils/promise/Queue.d.ts +60 -0
  350. package/lib/utils/promise/Queue.d.ts.map +1 -0
  351. package/lib/utils/promise/functions.d.ts +14 -0
  352. package/lib/utils/promise/functions.d.ts.map +1 -0
  353. package/lib/utils/promise/index.d.ts +3 -0
  354. package/lib/utils/promise/index.d.ts.map +1 -0
  355. package/lib/utils/random.d.ts +42 -0
  356. package/lib/utils/random.d.ts.map +1 -0
  357. package/lib/utils/rect.d.ts +26 -0
  358. package/lib/utils/rect.d.ts.map +1 -0
  359. package/lib/utils/set.d.ts +15 -0
  360. package/lib/utils/set.d.ts.map +1 -0
  361. package/lib/utils/string.d.ts +3 -0
  362. package/lib/utils/string.d.ts.map +1 -0
  363. package/lib/utils/text.d.ts +3 -0
  364. package/lib/utils/text.d.ts.map +1 -0
  365. package/lib/utils/typefilters.d.ts +4 -0
  366. package/lib/utils/typefilters.d.ts.map +1 -0
  367. package/lib/utils/types.d.ts +209 -0
  368. package/lib/utils/types.d.ts.map +1 -0
  369. package/lib/utils/vite.d.ts +25 -0
  370. package/lib/utils/vite.d.ts.map +1 -0
  371. package/lib/utils/web.d.ts +3 -0
  372. package/lib/utils/web.d.ts.map +1 -0
  373. package/lib/version.d.ts +3 -0
  374. package/lib/version.d.ts.map +1 -0
  375. package/lib/webgl-check.d.ts +2 -0
  376. package/lib/webgl-check.d.ts.map +1 -0
  377. package/package.json +138 -0
  378. package/src/core/Application.ts +1091 -0
  379. package/src/core/config.ts +168 -0
  380. package/src/core/create.ts +186 -0
  381. package/src/core/globals.ts +299 -0
  382. package/src/core/index.ts +6 -0
  383. package/src/core/interfaces/IApplication.ts +628 -0
  384. package/src/core/interfaces/IApplicationOptions.ts +81 -0
  385. package/src/core/interfaces/ICoreFunctions.ts +86 -0
  386. package/src/core/interfaces/ICoreSignals.ts +77 -0
  387. package/src/core/interfaces/IStorageCapability.test.ts +27 -0
  388. package/src/core/interfaces/IStorageCapability.ts +26 -0
  389. package/src/core/interfaces/index.ts +6 -0
  390. package/src/core/registries.ts +7 -0
  391. package/src/core/types.ts +13 -0
  392. package/src/display/AnimatedSprite.ts +227 -0
  393. package/src/display/Camera.ts +371 -0
  394. package/src/display/Container.ts +240 -0
  395. package/src/display/Entity.ts +50 -0
  396. package/src/display/ParticleContainer.ts +107 -0
  397. package/src/display/Scene.ts +305 -0
  398. package/src/display/SceneTransition.ts +108 -0
  399. package/src/display/SpineAnimation.ts +170 -0
  400. package/src/display/Svg.ts +9 -0
  401. package/src/display/index.ts +11 -0
  402. package/src/env.d.ts +6 -0
  403. package/src/hello.ts +20 -0
  404. package/src/index.ts +17 -0
  405. package/src/mixins/animated.ts +340 -0
  406. package/src/mixins/factory/Factory.ts +24 -0
  407. package/src/mixins/factory/const.ts +363 -0
  408. package/src/mixins/factory/index.ts +7 -0
  409. package/src/mixins/factory/methods.ts +21 -0
  410. package/src/mixins/factory/props.ts +207 -0
  411. package/src/mixins/factory/registry.test.ts +83 -0
  412. package/src/mixins/factory/registry.ts +61 -0
  413. package/src/mixins/factory/schema.ts +153 -0
  414. package/src/mixins/factory/ui-registry.ts +54 -0
  415. package/src/mixins/factory/utils.ts +130 -0
  416. package/src/mixins/focus.ts +124 -0
  417. package/src/mixins/index.ts +5 -0
  418. package/src/mixins/interaction.ts +74 -0
  419. package/src/mixins/signals.ts +49 -0
  420. package/src/plugins/AssetsPlugin.ts +407 -0
  421. package/src/plugins/DataAdapter.ts +259 -0
  422. package/src/plugins/DevToolsPlugin.ts +103 -0
  423. package/src/plugins/FullScreenPlugin.ts +359 -0
  424. package/src/plugins/GSAPPlugin.ts +811 -0
  425. package/src/plugins/KeyboardPlugin.ts +160 -0
  426. package/src/plugins/LayoutPlugin.ts +127 -0
  427. package/src/plugins/LookupPlugin.ts +308 -0
  428. package/src/plugins/Plugin.test.ts +73 -0
  429. package/src/plugins/Plugin.ts +200 -0
  430. package/src/plugins/PopupManagerPlugin.ts +263 -0
  431. package/src/plugins/ResizerPlugin.ts +220 -0
  432. package/src/plugins/SceneManagerPlugin.ts +669 -0
  433. package/src/plugins/StatsPlugin.ts +24 -0
  434. package/src/plugins/TimerPlugin.ts +841 -0
  435. package/src/plugins/WebEventsPlugin.ts +132 -0
  436. package/src/plugins/actions/ActionsPlugin.ts +113 -0
  437. package/src/plugins/actions/constants.ts +45 -0
  438. package/src/plugins/actions/index.ts +4 -0
  439. package/src/plugins/actions/methods.ts +28 -0
  440. package/src/plugins/actions/types.ts +47 -0
  441. package/src/plugins/audio/AudioChannel.test.ts +101 -0
  442. package/src/plugins/audio/AudioChannel.ts +164 -0
  443. package/src/plugins/audio/AudioInstance.ts +228 -0
  444. package/src/plugins/audio/AudioManagerPlugin.ts +903 -0
  445. package/src/plugins/audio/VoiceOverPlugin.ts +354 -0
  446. package/src/plugins/audio/index.ts +3 -0
  447. package/src/plugins/breakpoints/BreakpointPlugin.test.ts +228 -0
  448. package/src/plugins/breakpoints/BreakpointPlugin.ts +293 -0
  449. package/src/plugins/breakpoints/evaluate.test.ts +239 -0
  450. package/src/plugins/breakpoints/evaluate.ts +201 -0
  451. package/src/plugins/breakpoints/index.ts +3 -0
  452. package/src/plugins/breakpoints/methods.ts +22 -0
  453. package/src/plugins/breakpoints/types.ts +86 -0
  454. package/src/plugins/captions/CaptionsPlugin.ts +468 -0
  455. package/src/plugins/captions/CaptionsRenderer.ts +184 -0
  456. package/src/plugins/captions/font/Sans.fnt +116 -0
  457. package/src/plugins/captions/font/Sans.png +0 -0
  458. package/src/plugins/captions/index.ts +2 -0
  459. package/src/plugins/defaults.ts +95 -0
  460. package/src/plugins/focus/FocusManagerPlugin.ts +773 -0
  461. package/src/plugins/focus/FocusOutliner.ts +111 -0
  462. package/src/plugins/focus/index.ts +2 -0
  463. package/src/plugins/i18nPlugin.ts +284 -0
  464. package/src/plugins/index.ts +17 -0
  465. package/src/plugins/input/AbstractControls.ts +15 -0
  466. package/src/plugins/input/Controls.ts +55 -0
  467. package/src/plugins/input/InputPlugin.ts +168 -0
  468. package/src/plugins/input/constants.ts +12 -0
  469. package/src/plugins/input/index.ts +9 -0
  470. package/src/plugins/input/interfaces.ts +37 -0
  471. package/src/plugins/input/keyboard/KeyboardContols.ts +182 -0
  472. package/src/plugins/input/keyboard/index.ts +2 -0
  473. package/src/plugins/input/keyboard/interfaces.ts +21 -0
  474. package/src/plugins/input/methods.ts +9 -0
  475. package/src/plugins/input/touch/TouchControls.ts +237 -0
  476. package/src/plugins/input/touch/constants.ts +34 -0
  477. package/src/plugins/input/touch/index.ts +3 -0
  478. package/src/plugins/input/touch/interfaces.ts +15 -0
  479. package/src/plugins/input/types.ts +41 -0
  480. package/src/plugins/input/utils.ts +10 -0
  481. package/src/plugins/spine/SpinePlugin.ts +14 -0
  482. package/src/plugins/spine/pixi-spine/BatchableSpineSlot.ts +138 -0
  483. package/src/plugins/spine/pixi-spine/Spine.ts +897 -0
  484. package/src/plugins/spine/pixi-spine/SpineDebugRenderer.ts +615 -0
  485. package/src/plugins/spine/pixi-spine/SpinePipe.ts +197 -0
  486. package/src/plugins/spine/pixi-spine/SpineTexture.ts +143 -0
  487. package/src/plugins/spine/pixi-spine/assets/atlasLoader.ts +156 -0
  488. package/src/plugins/spine/pixi-spine/assets/skeletonLoader.ts +80 -0
  489. package/src/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.ts +92 -0
  490. package/src/plugins/spine/pixi-spine/darktint/DarkTintBatcher.ts +186 -0
  491. package/src/plugins/spine/pixi-spine/darktint/DarkTintShader.ts +74 -0
  492. package/src/plugins/spine/pixi-spine/darktint/darkTintBit.ts +77 -0
  493. package/src/plugins/spine/pixi-spine/index.ts +43 -0
  494. package/src/plugins/spine/pixi-spine/require-shim.ts +43 -0
  495. package/src/signals/Signal.test.ts +54 -0
  496. package/src/signals/Signal.ts +68 -0
  497. package/src/signals/index.ts +10 -0
  498. package/src/store/Store.test.ts +146 -0
  499. package/src/store/Store.ts +192 -0
  500. package/src/store/index.ts +1 -0
  501. package/src/types/framework.d.ts +47 -0
  502. package/src/types/gsap.d.ts +26 -0
  503. package/src/ui/Button.ts +454 -0
  504. package/src/ui/FlexContainer.ts +526 -0
  505. package/src/ui/Input.ts +1274 -0
  506. package/src/ui/Joystick.ts +288 -0
  507. package/src/ui/Popup.ts +242 -0
  508. package/src/ui/Toast.ts +399 -0
  509. package/src/ui/Toaster.ts +409 -0
  510. package/src/ui/UICanvas.ts +812 -0
  511. package/src/ui/index.ts +8 -0
  512. package/src/utils/array.ts +24 -0
  513. package/src/utils/bind.ts +79 -0
  514. package/src/utils/canvas.ts +26 -0
  515. package/src/utils/color.ts +126 -0
  516. package/src/utils/console/Logger.ts +86 -0
  517. package/src/utils/console/index.ts +1 -0
  518. package/src/utils/debug.ts +69 -0
  519. package/src/utils/define.ts +120 -0
  520. package/src/utils/env.ts +3 -0
  521. package/src/utils/events.ts +10 -0
  522. package/src/utils/framework.ts +45 -0
  523. package/src/utils/index.ts +27 -0
  524. package/src/utils/map.ts +59 -0
  525. package/src/utils/math.ts +19 -0
  526. package/src/utils/misc.ts +45 -0
  527. package/src/utils/number.ts +3 -0
  528. package/src/utils/object.ts +43 -0
  529. package/src/utils/padding.ts +43 -0
  530. package/src/utils/pixi.ts +116 -0
  531. package/src/utils/platform.ts +33 -0
  532. package/src/utils/point.ts +123 -0
  533. package/src/utils/promise/Queue.ts +125 -0
  534. package/src/utils/promise/functions.ts +16 -0
  535. package/src/utils/promise/index.ts +2 -0
  536. package/src/utils/random.ts +69 -0
  537. package/src/utils/rect.ts +50 -0
  538. package/src/utils/set.ts +32 -0
  539. package/src/utils/string.ts +9 -0
  540. package/src/utils/text.ts +30 -0
  541. package/src/utils/typefilters.ts +29 -0
  542. package/src/utils/types.ts +426 -0
  543. package/src/utils/vite.ts +41 -0
  544. package/src/utils/web.ts +7 -0
  545. package/src/version.ts +3 -0
  546. package/src/webgl-check.ts +12 -0
  547. package/templates/app/default/.eslintrc.json +21 -0
  548. package/templates/app/default/.meta.json +4 -0
  549. package/templates/app/default/.nvmrc +1 -0
  550. package/templates/app/default/.prettierrc.json +7 -0
  551. package/templates/app/default/README.md +8 -0
  552. package/templates/app/default/assets/audio{m}/music/Cheerful Annoyance.ogg +0 -0
  553. package/templates/app/default/assets/audio{m}/music/Drumming Sticks.ogg +0 -0
  554. package/templates/app/default/assets/audio{m}/music/Game Over.ogg +0 -0
  555. package/templates/app/default/assets/audio{m}/music/Mishief Stroll.ogg +0 -0
  556. package/templates/app/default/assets/audio{m}/music/Night at the Beach.ogg +0 -0
  557. package/templates/app/default/assets/audio{m}/sfx/click.ogg +0 -0
  558. package/templates/app/default/assets/audio{m}/sfx/hover.ogg +0 -0
  559. package/templates/app/default/assets/required{m}/caper.png +0 -0
  560. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Bold{family=Space Grotesk}{wf}.ttf +0 -0
  561. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Medium{family=Space Grotesk}{wf}.ttf +0 -0
  562. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Regular{family=Space Grotesk}{wf}.ttf +0 -0
  563. package/templates/app/default/assets/required{m}/fonts{fix}/Syncopate-Bold{family=Syncopate}{wf}.ttf +0 -0
  564. package/templates/app/default/assets/required{m}/ui{tps}/btn/blue.png +0 -0
  565. package/templates/app/default/assets/required{m}/ui{tps}/btn/green.png +0 -0
  566. package/templates/app/default/assets/required{m}/ui{tps}/btn/grey.png +0 -0
  567. package/templates/app/default/assets/required{m}/ui{tps}/btn/orange.png +0 -0
  568. package/templates/app/default/assets/required{m}/ui{tps}/btn/purple.png +0 -0
  569. package/templates/app/default/assets/required{m}/ui{tps}/btn/red.png +0 -0
  570. package/templates/app/default/assets/required{m}/ui{tps}/btn/yellow.png +0 -0
  571. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/down.png +0 -0
  572. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/over.png +0 -0
  573. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/up.png +0 -0
  574. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/down.png +0 -0
  575. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/over.png +0 -0
  576. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/up.png +0 -0
  577. package/templates/app/default/assets/required{m}/ui{tps}/joystick/base.png +0 -0
  578. package/templates/app/default/assets/required{m}/ui{tps}/joystick/handle.png +0 -0
  579. package/templates/app/default/assets/required{m}/wordmark.svg +1 -0
  580. package/templates/app/default/assets/spine{m}/spineboy-pro.png +0 -0
  581. package/templates/app/default/assets/spine{m}/spineboy-pro.skel +0 -0
  582. package/templates/app/default/assets/spine{m}/spineboy-pro{fix}.atlas +94 -0
  583. package/templates/app/default/caper.config.ts +60 -0
  584. package/templates/app/default/index.html +23 -0
  585. package/templates/app/default/package.template.json +17 -0
  586. package/templates/app/default/public/favicon.ico +0 -0
  587. package/templates/app/default/src/__APPLICATION_NAME__.ts +3 -0
  588. package/templates/app/default/src/main.ts +9 -0
  589. package/templates/app/default/src/scenes/Base.ts +39 -0
  590. package/templates/app/default/src/scenes/Game.ts +34 -0
  591. package/templates/app/default/src/scenes/Splash.ts +70 -0
  592. package/templates/app/default/src/scenes/Start.ts +90 -0
  593. package/templates/app/default/src/utils/Constants.ts +3 -0
  594. package/templates/app/default/tsconfig.json +1 -0
  595. package/templates/plugin/package.template.json +33 -0
  596. package/templates/plugin/src/Plugin.template.ts +24 -0
  597. package/templates/plugin/src/index.template.ts +3 -0
  598. package/templates/plugin/tsconfig.template.json +43 -0
  599. package/templates/plugin/vite-env.template.d.ts +16 -0
  600. package/templates/plugin/vite.config.template.ts +19 -0
@@ -0,0 +1,107 @@
1
+ import { DestroyOptions, ParticleContainerOptions, ParticleContainer as PIXIParticleContainer, Ticker } from 'pixi.js';
2
+
3
+ import { Application } from '../core/Application';
4
+ import { Signal } from '../signals';
5
+ import type { AppTypeOverrides, Size } from '../utils';
6
+ import { bindAllMethods } from '../utils';
7
+
8
+ /**
9
+ * Configuration for the Container class.
10
+ */
11
+ export interface ParticleContainerConfig extends ParticleContainerOptions {
12
+ autoUpdate: boolean;
13
+ priority: number;
14
+ }
15
+
16
+ export const ParticleContainerConfigKeys: (keyof ParticleContainerConfig)[] = ['autoUpdate', 'priority'];
17
+
18
+ const defaultConfig: ParticleContainerConfig = { autoUpdate: true, priority: 0 };
19
+
20
+ export interface IParticleContainer {
21
+ app: AppTypeOverrides['App'];
22
+
23
+ onDestroy: Signal<() => void>;
24
+
25
+ destroy(options?: DestroyOptions): void;
26
+
27
+ added(): Promise<void> | void;
28
+
29
+ update(ticker?: Ticker | number): void;
30
+ }
31
+
32
+ /**
33
+ * The Container class extends the _Container class (which includes the Animated and Factory mixins) and implements the IContainer interface.
34
+ * It represents a container for PIXI.js display objects.
35
+ */
36
+ export class ParticleContainer extends PIXIParticleContainer implements IParticleContainer {
37
+ onDestroy: Signal<() => void> = new Signal();
38
+ __caper_method_binding_root = true;
39
+ private __config: ParticleContainerConfig;
40
+
41
+ /**
42
+ * The constructor for the Container class.
43
+ * @param config - The configuration for the container.
44
+ */
45
+ constructor(config: Partial<ParticleContainerConfig> = {}) {
46
+ super(config);
47
+ this.__config = { ...defaultConfig, ...config };
48
+ // Bind all methods of this class to the current instance.
49
+ bindAllMethods(this);
50
+ // Add an event listener for the 'added' event.
51
+ this.on('added', this._added);
52
+ this.on('removed', this._removed);
53
+ }
54
+
55
+ /**
56
+ * Get the application instance.
57
+ */
58
+ public get app(): AppTypeOverrides['App'] {
59
+ return Application.getInstance() as AppTypeOverrides['App'];
60
+ }
61
+ /**
62
+ * Update the container. This method is meant to be overridden by subclasses.
63
+ * @param ticker
64
+ */
65
+ public update(ticker?: Ticker | number) {
66
+ void ticker;
67
+ }
68
+
69
+ /**
70
+ * Resize the container. This method is meant to be overridden by subclasses.
71
+ * @param size
72
+ */
73
+ public resize(size?: Size) {
74
+ void size;
75
+ }
76
+
77
+ /**
78
+ * This method is called when the container is added to the stage. It is meant to be overridden by subclasses.
79
+ */
80
+ public added() {}
81
+
82
+ destroy(options?: DestroyOptions): void {
83
+ if (this.__config.autoUpdate) {
84
+ this.app.ticker.remove(this.update, this);
85
+ }
86
+ this.onDestroy.emit();
87
+ super.destroy(options);
88
+ }
89
+
90
+ public removed() {}
91
+ /**
92
+ * This method is called when the container is added to the stage. It sets up auto-resizing and auto-updating if enabled.
93
+ */
94
+ private _added() {
95
+ if (this.__config.autoUpdate) {
96
+ this.app.ticker.add(this.update, this, this.__config.priority);
97
+ }
98
+ this.added();
99
+ }
100
+
101
+ private _removed() {
102
+ if (this.__config.autoUpdate) {
103
+ this.app.ticker.remove(this.update, this);
104
+ }
105
+ this.removed();
106
+ }
107
+ }
@@ -0,0 +1,305 @@
1
+ import { Ticker } from 'pixi.js';
2
+ import { PauseConfig } from '../core';
3
+ import { type AppTypeOverrides, type AssetTypeOverrides, Size } from '../utils';
4
+ import type { IContainer } from './Container';
5
+ import { Container } from './Container';
6
+
7
+ type AppScenes = AppTypeOverrides['Scenes'];
8
+
9
+ type SceneAssetsToLoad = {
10
+ assets?: (string | { alias: string; src: string | string[] })[];
11
+ bundles?: AssetTypeOverrides['Bundles'] | AssetTypeOverrides['Bundles'][];
12
+ };
13
+
14
+ export type SceneAssets = {
15
+ preload?: SceneAssetsToLoad;
16
+ background?: SceneAssetsToLoad;
17
+ autoUnload?: boolean;
18
+ };
19
+
20
+ export type ScenePlugins = AppTypeOverrides['Plugins'][];
21
+
22
+ export type SceneDebug = {
23
+ label?: string;
24
+ group?: string;
25
+ order?: number;
26
+ };
27
+
28
+ export type SceneConfig = {
29
+ id?: string;
30
+ dynamic?: boolean;
31
+ active?: boolean;
32
+ assets?: SceneAssets;
33
+ plugins?: ScenePlugins;
34
+ debug?: SceneDebug;
35
+ };
36
+
37
+ export interface IScene extends IContainer {
38
+ id: AppScenes;
39
+ label?: string;
40
+ assets?: SceneAssets;
41
+ autoUnloadAssets?: boolean;
42
+
43
+ enter(): Promise<any>;
44
+
45
+ exit(): Promise<any>;
46
+
47
+ initialize(): Promise<void> | void;
48
+
49
+ start(): Promise<void> | void;
50
+
51
+ onPause(config: PauseConfig): void;
52
+
53
+ onResume(config: PauseConfig): void;
54
+ }
55
+
56
+ export interface SceneListItem {
57
+ id: string;
58
+ path: string;
59
+ scene: () => Promise<new () => IScene> | IScene;
60
+ debug?: {
61
+ label?: string;
62
+ group?: string;
63
+ };
64
+ assets?: SceneAssets;
65
+ plugins?: ScenePlugins;
66
+ autoUnloadAssets: boolean;
67
+ }
68
+
69
+ /**
70
+ * Base class for all scenes in a Caper app. A scene is a self-contained
71
+ * unit of game state and display — start screen, level, menu, etc.
72
+ *
73
+ * **Lifecycle order** (per scene load):
74
+ *
75
+ * 1. `constructor` — instantiated by the SceneManager. Don't reference
76
+ * `this.app` here; it's not yet attached to the stage.
77
+ * 2. **Assets load** — anything declared in `assets.preload.bundles` is
78
+ * fetched before `initialize` runs. Background bundles are kicked
79
+ * off in parallel and may complete after.
80
+ * 3. `initialize()` — build the display tree. The scene is on the stage
81
+ * but not yet animated in. Safe to use `this.app`, `this.add.*`,
82
+ * and any preloaded asset.
83
+ * 4. `enter()` — animate the scene in. Override to return a promise /
84
+ * tween / timeline; the manager awaits it before calling `start`.
85
+ * 5. `start()` — fired after `enter` resolves. Begin per-frame work,
86
+ * timers, signal connections, gameplay loops.
87
+ * 6. `update(ticker)` — called every frame while the scene is active.
88
+ * Read `ticker.deltaMS` for frame timing.
89
+ * 7. `resize(size)` — called on viewport resize. Re-layout here.
90
+ * 8. `onPause(config)` / `onResume(config)` — called when the app pauses
91
+ * or resumes. Use to halt/restart non-display work (audio, network).
92
+ * 9. `exit()` — animate the scene out. Awaited before `destroy`.
93
+ * 10. `destroy()` — tear down. The base implementation removes the
94
+ * ticker callback and destroys all children — call `super.destroy()`.
95
+ *
96
+ * Scenes are **discovered automatically** by the Vite plugin walking
97
+ * `src/scenes/`. Annotate the file with `defineScene({ id, assets })`
98
+ * (or individual `export const id` / `export const assets`) to give the
99
+ * scene a stable id and declare its asset bundles.
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * import { defineScene, Scene } from '@caperjs/core';
104
+ *
105
+ * export const scene = defineScene({
106
+ * id: 'menu',
107
+ * assets: { preload: { bundles: ['ui'] } },
108
+ * });
109
+ *
110
+ * export default class MenuScene extends Scene {
111
+ * initialize() {
112
+ * this.add.text({ text: 'Play', anchor: 0.5 });
113
+ * }
114
+ * start() {
115
+ * // begin gameplay loop
116
+ * }
117
+ * destroy() {
118
+ * super.destroy();
119
+ * }
120
+ * }
121
+ * ```
122
+ */
123
+ export class Scene<Props = void> extends Container implements IScene {
124
+ public readonly id: string;
125
+ public autoUnloadAssets: boolean = false;
126
+
127
+ /**
128
+ * Runtime props passed via `app.scenes.load(id, props)`. Populated by
129
+ * `SceneManagerPlugin._createCurrentScene` after construction and before
130
+ * `initialize()` runs, so scene authors can read them safely from any
131
+ * lifecycle hook.
132
+ *
133
+ * Subclasses declare the shape via the generic parameter:
134
+ *
135
+ * @example
136
+ * ```ts
137
+ * class LevelScene extends Scene<{ levelId: number; difficulty: 'easy' | 'hard' }> {
138
+ * async start() {
139
+ * const { levelId } = this.props;
140
+ * }
141
+ * }
142
+ * ```
143
+ *
144
+ * For scenes that don't need props, use the default `Scene<void>` (no
145
+ * generic parameter) — `app.scenes.load('menu')` takes no second arg.
146
+ */
147
+ public props!: Props;
148
+
149
+ protected _animationContext: string;
150
+ public get animationContext(): string {
151
+ return this._animationContext ?? `__scene_${this.id}`;
152
+ }
153
+ public set animationContext(value: string) {
154
+ this._animationContext = value;
155
+ }
156
+
157
+ constructor() {
158
+ super({ autoResize: true, autoUpdate: true, priority: 'highest' });
159
+ }
160
+
161
+ /**
162
+ * The assets to load for the scene
163
+ * @private
164
+ * @type {AssetLoadingOptions}
165
+ * @example
166
+ * ```ts
167
+ * assets: {
168
+ * preload: {
169
+ * assets: ['path/to/asset.png'],
170
+ * bundles: ['bundle1', 'bundle2'],
171
+ * },
172
+ * background: {
173
+ * assets: ['path/to/asset.png'],
174
+ * bundles: ['bundle1', 'bundle2'],
175
+ * },
176
+ * }
177
+ * ```
178
+ */
179
+ private _assets: SceneAssets;
180
+
181
+ get assets(): SceneAssets {
182
+ return this._assets;
183
+ }
184
+
185
+ set assets(value: SceneAssets) {
186
+ this._assets = value;
187
+ }
188
+
189
+ /**
190
+ * Build the scene's display tree. Called once after preload assets
191
+ * have loaded and the scene has been added to the stage, but **before**
192
+ * `enter()` animates it in. Safe to use `this.app`, `this.add.*`, and
193
+ * any asset declared in `assets.preload`.
194
+ *
195
+ * Override to construct sprites, text, containers, layouts. Don't put
196
+ * gameplay loops here — that's `start()`.
197
+ *
198
+ * Can be sync or async; the manager awaits the return value before
199
+ * calling `enter`.
200
+ */
201
+ public initialize(): Promise<void> | void;
202
+
203
+ public async initialize(): Promise<void> {}
204
+
205
+ /**
206
+ * Animate the scene in. Called after `initialize()` resolves. The
207
+ * manager awaits the returned promise before calling `start()`, so
208
+ * return a tween / timeline / promise to gate the entry on it.
209
+ *
210
+ * Default implementation resolves immediately (no animation).
211
+ *
212
+ * @returns A promise that resolves when the entry animation completes.
213
+ */
214
+ public enter(): Promise<any> {
215
+ return Promise.resolve();
216
+ }
217
+
218
+ /**
219
+ * Animate the scene out. Called when the SceneManager is unloading
220
+ * this scene. Awaited before `destroy()` runs.
221
+ *
222
+ * Default implementation resolves immediately (no animation).
223
+ *
224
+ * @returns A promise that resolves when the exit animation completes.
225
+ */
226
+ public exit(): Promise<any> {
227
+ return Promise.resolve();
228
+ }
229
+
230
+ /**
231
+ * Begin per-frame work. Called once after `enter()` resolves; this is
232
+ * where gameplay loops, timers, signal connections, and any work that
233
+ * shouldn't start until the scene is fully visible should live.
234
+ *
235
+ * Override to start tickers, subscribe to input, kick off gameplay.
236
+ * Don't build the display tree here — that's `initialize()`.
237
+ *
238
+ * Can be sync or async.
239
+ */
240
+ public start(): Promise<void> | void;
241
+
242
+ public async start(): Promise<void> {}
243
+
244
+ /**
245
+ * Per-frame update hook. Called every tick while the scene is active,
246
+ * after `start()` has resolved. Use `ticker.deltaMS` for time-based
247
+ * motion that's framerate-independent.
248
+ *
249
+ * The base implementation is a no-op; override to drive game logic.
250
+ * The base `destroy()` removes this from the ticker — call
251
+ * `super.destroy()` if you override destroy.
252
+ *
253
+ * @param ticker The Pixi ticker; provides `deltaMS`, `deltaTime`, etc.
254
+ */
255
+ public update(ticker?: Ticker) {
256
+ void ticker;
257
+ }
258
+
259
+ /**
260
+ * Re-layout on viewport resize. Called whenever the host element /
261
+ * window size changes. Use to reposition or rescale display elements
262
+ * relative to the new viewport size.
263
+ *
264
+ * @param size New viewport dimensions.
265
+ * @override
266
+ */
267
+ public resize(size?: Size): void {
268
+ void size;
269
+ }
270
+
271
+ /**
272
+ * Tear down the scene. The base implementation removes this scene
273
+ * from the ticker (so `update` stops firing) and destroys all child
274
+ * display objects. **Always call `super.destroy()`** if you override
275
+ * — otherwise the ticker callback leaks.
276
+ *
277
+ * Override to clean up listeners, signal connections, timers, network
278
+ * subscriptions, or anything else not handled by Pixi's destroy.
279
+ */
280
+ public destroy() {
281
+ this.app.ticker.remove(this.update);
282
+ super.destroy({ children: true });
283
+ }
284
+
285
+ /**
286
+ * Called when the application is paused. Use to halt non-display
287
+ * work — audio, network polling, gameplay timers. Display state
288
+ * stays on screen; only logic should pause.
289
+ *
290
+ * @param config Pause options (e.g. which subsystems to pause).
291
+ */
292
+ public onPause(config: PauseConfig): void {
293
+ void config;
294
+ }
295
+
296
+ /**
297
+ * Called when the application resumes from a pause. Use to restart
298
+ * whatever was halted in `onPause`.
299
+ *
300
+ * @param config Resume options.
301
+ */
302
+ public onResume(config: PauseConfig): void {
303
+ void config;
304
+ }
305
+ }
@@ -0,0 +1,108 @@
1
+ import { Sprite, Ticker } from 'pixi.js';
2
+ import { type Size } from '../utils';
3
+ import { Container } from './Container';
4
+
5
+ export interface ISceneTransition extends Container {
6
+ initialized: boolean;
7
+ progress: number;
8
+ active: boolean;
9
+ destroy(): void;
10
+ enter(): Promise<any> | void;
11
+ exit(): Promise<any> | void;
12
+ initialize(): void;
13
+ }
14
+
15
+ export class SceneTransition extends Container {
16
+ public initialized: boolean = false;
17
+ protected __background: Sprite;
18
+
19
+ private _active: boolean = false;
20
+
21
+ get active(): boolean {
22
+ return this._active;
23
+ }
24
+
25
+ set active(value: boolean) {
26
+ this._active = value;
27
+ }
28
+
29
+ private _progress: number;
30
+
31
+ get progress(): number {
32
+ return this._progress;
33
+ }
34
+
35
+ set progress(value: number) {
36
+ this._progress = value;
37
+ }
38
+
39
+ constructor(autoUpdate: boolean = false) {
40
+ super({ autoResize: true, autoUpdate: false, priority: -9999 });
41
+
42
+ if (autoUpdate) {
43
+ this.app.ticker.add(this._update);
44
+ }
45
+
46
+ this.addSignalConnection(
47
+ this.app.assets.onLoadStart.connect(this.handleLoadStart),
48
+ this.app.assets.onLoadProgress.connect(this.handleLoadProgress),
49
+ this.app.assets.onLoadProgress.connect(this.handleLoadComplete),
50
+ );
51
+ }
52
+
53
+ public initialize(): void;
54
+ public async initialize(): Promise<void> {
55
+ return Promise.resolve();
56
+ }
57
+
58
+ public resize(size: Size): void {
59
+ void size;
60
+ }
61
+
62
+ public destroy(): void {
63
+ this.app.ticker.remove(this._update);
64
+ this.initialized = false;
65
+ this._active = false;
66
+ this._progress = 0;
67
+ super.destroy();
68
+ }
69
+
70
+ /**
71
+ * Called to animate the scene in
72
+ * @returns {Promise<void>}
73
+ */
74
+ public enter(): void;
75
+ public async enter(): Promise<any> {
76
+ return Promise.resolve();
77
+ }
78
+
79
+ /**
80
+ * Called to animate the scene out
81
+ * @returns {Promise<void>}
82
+ */
83
+ public exit(): void;
84
+ public async exit(): Promise<any> {
85
+ return Promise.resolve();
86
+ }
87
+
88
+ protected handleLoadStart() {
89
+ // signifies the preloading phase has started for the new scene
90
+ }
91
+
92
+ protected handleLoadProgress(progress: number) {
93
+ // the preloading progress for the loading scene
94
+ this._progress = progress;
95
+ }
96
+
97
+ protected handleLoadComplete() {
98
+ // signifies the preloading phase is complete for the new scene
99
+ }
100
+
101
+ // check if initialized and active before calling update
102
+ // this way we're sure in the case of a Splash sccreen, all the assets are loaded and the scene is initialized
103
+ private _update(ticker: Ticker) {
104
+ if (this.active && this.initialized) {
105
+ this.update(ticker);
106
+ }
107
+ }
108
+ }
@@ -0,0 +1,170 @@
1
+ import { type AnimationStateListener, type Event, type TrackEntry } from '@esotericsoftware/spine-core';
2
+ import { Application } from '../core/Application';
3
+ import type { SpineProps } from '../mixins';
4
+ import { Factory, WithSignals } from '../mixins';
5
+ import { Signal } from '../signals';
6
+ import { type AppTypeOverrides, bindAllMethods, Spine } from '../utils';
7
+
8
+ const _SpineAnimation = WithSignals(Factory());
9
+
10
+ export interface ISpineAnimation<ANames extends string = string> extends InstanceType<typeof _SpineAnimation> {
11
+ readonly spine: Spine;
12
+ readonly animationNames: ANames[];
13
+ readonly app: AppTypeOverrides['App'];
14
+ readonly onAnimationComplete: Signal<(entry: TrackEntry) => void>;
15
+ readonly onAnimationStart: Signal<(entry: TrackEntry) => void>;
16
+ readonly onAnimationInterrupt: Signal<(entry: TrackEntry) => void>;
17
+ readonly onAnimationDispose: Signal<(entry: TrackEntry) => void>;
18
+ readonly onAnimationEnd: Signal<(entry: TrackEntry) => void>;
19
+ readonly onAnimationEvent: Signal<(entry: TrackEntry, event: Event) => void>;
20
+ readonly onPaused: Signal<(entry: TrackEntry | null) => void>;
21
+ readonly onResumed: Signal<(entry: TrackEntry | null) => void>;
22
+ setAnimation(name: ANames, loop?: boolean, tracklndex?: number): void;
23
+ getCurrentAnimation(tracklndex?: number): ANames;
24
+ pause(): void;
25
+ resume(): void;
26
+ togglePause(): void;
27
+ }
28
+
29
+ export class SpineAnimation<ANames extends string = string> extends _SpineAnimation {
30
+ spine: Spine;
31
+ paused: boolean;
32
+
33
+ onAnimationComplete: Signal<(entry: TrackEntry) => void> = new Signal();
34
+ onAnimationStart: Signal<(entry: TrackEntry) => void> = new Signal();
35
+ onAnimationInterrupt: Signal<(entry: TrackEntry) => void> = new Signal();
36
+ onAnimationDispose: Signal<(entry: TrackEntry) => void> = new Signal();
37
+ onAnimationEnd: Signal<(entry: TrackEntry) => void> = new Signal();
38
+ onAnimationEvent: Signal<(entry: TrackEntry, event: Event) => void> = new Signal();
39
+
40
+ onPaused: Signal<(entry: TrackEntry | null) => void> = new Signal();
41
+ onResumed: Signal<(entry: TrackEntry | null) => void> = new Signal();
42
+
43
+ protected _stateListener: AnimationStateListener;
44
+
45
+ get app(): AppTypeOverrides['App'] {
46
+ return Application.getInstance();
47
+ }
48
+
49
+ get animationNames(): ANames[] {
50
+ return this.spine.state.data.skeletonData.animations.map((a) => a.name) as ANames[];
51
+ }
52
+
53
+ get currentEntry() {
54
+ return this.spine.state.getCurrent(0);
55
+ }
56
+
57
+ get elapsedAnimationTime() {
58
+ if (this.currentEntry) {
59
+ return this.currentEntry.trackTime;
60
+ }
61
+ return -1;
62
+ }
63
+
64
+ public constructor(props?: Partial<SpineProps>) {
65
+ super();
66
+ bindAllMethods(this);
67
+ let data = props?.data;
68
+ let spineData: { skeleton: string; atlas: string } | string = '';
69
+ if (typeof data === 'string') {
70
+ // get the spine data from cache
71
+ // check if '.json' is the last part of the asset string, and add it if not
72
+ let ext = data.slice(-5);
73
+ if (ext !== '.json' && ext !== '.skel') {
74
+ ext = '.json';
75
+ } else {
76
+ data = data.substring(0, data.length - 5);
77
+ }
78
+ spineData = { skeleton: data + ext, atlas: data + '.atlas' };
79
+ }
80
+ this.spine = (window as any).Spine.from(spineData);
81
+ this.add.existing(this.spine);
82
+
83
+ if (props) {
84
+ if (props.autoUpdate !== undefined) this.spine.autoUpdate = props.autoUpdate;
85
+ if (props.animationName) this.setAnimation(props.animationName as ANames, props.loop, props.trackIndex ?? 0);
86
+ }
87
+
88
+ this.addSignalConnection(this.app.actions('toggle_pause').connect(this.togglePause));
89
+
90
+ if (props?.paused) {
91
+ this.pause();
92
+ }
93
+
94
+ this._stateListener = {
95
+ start: this._handleAnimationStart,
96
+ interrupt: this._handleAnimationInterrupt,
97
+ dispose: this._handleAnimationDispose,
98
+ end: this._handleAnimationEnd,
99
+ event: this._handleAnimationEvent,
100
+ complete: this._handleAnimationComplete,
101
+ };
102
+
103
+ this.spine.state.addListener(this._stateListener);
104
+ }
105
+
106
+ destroy() {
107
+ this.spine.state.removeListener(this._stateListener);
108
+ super.destroy();
109
+ }
110
+
111
+ getCurrentAnimation(trackIndex: number = 0): ANames {
112
+ return (this.spine.state.getCurrent(trackIndex)?.animation?.name as ANames) || ('' as ANames);
113
+ }
114
+
115
+ setAnimation(name: ANames, loop = false, tracklndex: number = 0) {
116
+ this.spine.state.setAnimation(tracklndex, name, loop);
117
+ }
118
+
119
+ pause() {
120
+ this.paused = true;
121
+ this.spine.autoUpdate = false;
122
+
123
+ if (this.currentEntry) {
124
+ this.currentEntry.timeScale = 0;
125
+ }
126
+ this.onPaused.emit(this.currentEntry);
127
+ }
128
+
129
+ resume() {
130
+ this.paused = false;
131
+ this.spine.autoUpdate = true;
132
+ if (this.currentEntry) {
133
+ this.currentEntry.timeScale = 1;
134
+ }
135
+ this.onResumed.emit(this.currentEntry);
136
+ }
137
+
138
+ togglePause() {
139
+ if (this.paused) {
140
+ this.resume();
141
+ } else {
142
+ this.pause();
143
+ }
144
+ }
145
+
146
+ // protected methods
147
+ protected _handleAnimationComplete(entry: TrackEntry) {
148
+ this.onAnimationComplete.emit(entry);
149
+ }
150
+
151
+ protected _handleAnimationStart(entry: TrackEntry) {
152
+ this.onAnimationStart.emit(entry);
153
+ }
154
+
155
+ protected _handleAnimationInterrupt(entry: TrackEntry) {
156
+ this.onAnimationInterrupt.emit(entry);
157
+ }
158
+
159
+ protected _handleAnimationDispose(entry: TrackEntry) {
160
+ this.onAnimationDispose.emit(entry);
161
+ }
162
+
163
+ protected _handleAnimationEnd(entry: TrackEntry) {
164
+ this.onAnimationEnd.emit(entry);
165
+ }
166
+
167
+ protected _handleAnimationEvent(entry: TrackEntry, event: Event) {
168
+ this.onAnimationEvent.emit(entry, event);
169
+ }
170
+ }
@@ -0,0 +1,9 @@
1
+ import { Assets, Graphics, GraphicsContext } from 'pixi.js';
2
+
3
+ export class Svg extends Graphics {
4
+ constructor(ctx: string | GraphicsContext) {
5
+ super(typeof ctx === 'string' ? Assets.get(ctx) : ctx);
6
+ const bounds = this.getLocalBounds();
7
+ this.pivot.set((bounds.x + bounds.width) / 2, (bounds.y + bounds.height) / 2);
8
+ }
9
+ }
@@ -0,0 +1,11 @@
1
+ // top level
2
+ export * from './Container';
3
+ export * from './Entity';
4
+ export * from './ParticleContainer';
5
+ export * from './Scene';
6
+ export * from './SceneTransition';
7
+ export * from './Svg';
8
+ // utilities
9
+ export * from './AnimatedSprite';
10
+ export * from './Camera';
11
+ export * from './SpineAnimation';