@datamoc/mw_games 0.2.1 → 0.4.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 (518) hide show
  1. package/README.md +73 -24
  2. package/dist/actors/Affix.d.ts +26 -0
  3. package/dist/actors/Affix.d.ts.map +1 -1
  4. package/dist/actors/Affix.js +32 -1
  5. package/dist/actors/Affix.js.map +1 -1
  6. package/dist/actors/Barrier.d.ts +47 -0
  7. package/dist/actors/Barrier.d.ts.map +1 -0
  8. package/dist/actors/Barrier.js +70 -0
  9. package/dist/actors/Barrier.js.map +1 -0
  10. package/dist/actors/Charges.d.ts +22 -0
  11. package/dist/actors/Charges.d.ts.map +1 -1
  12. package/dist/actors/Charges.js +26 -0
  13. package/dist/actors/Charges.js.map +1 -1
  14. package/dist/actors/Equipment.d.ts +30 -0
  15. package/dist/actors/Equipment.d.ts.map +1 -1
  16. package/dist/actors/Equipment.js +33 -1
  17. package/dist/actors/Equipment.js.map +1 -1
  18. package/dist/actors/Inventory.d.ts +58 -3
  19. package/dist/actors/Inventory.d.ts.map +1 -1
  20. package/dist/actors/Inventory.js +97 -5
  21. package/dist/actors/Inventory.js.map +1 -1
  22. package/dist/actors/ItemState.d.ts +11 -2
  23. package/dist/actors/ItemState.d.ts.map +1 -1
  24. package/dist/actors/ItemState.js +18 -2
  25. package/dist/actors/ItemState.js.map +1 -1
  26. package/dist/actors/Loot.js +1 -1
  27. package/dist/actors/Loot.js.map +1 -1
  28. package/dist/actors/Progression.d.ts +9 -0
  29. package/dist/actors/Progression.d.ts.map +1 -1
  30. package/dist/actors/Progression.js +7 -0
  31. package/dist/actors/Progression.js.map +1 -1
  32. package/dist/actors/Resource.d.ts +16 -0
  33. package/dist/actors/Resource.d.ts.map +1 -1
  34. package/dist/actors/Resource.js +22 -0
  35. package/dist/actors/Resource.js.map +1 -1
  36. package/dist/actors/SkillPoints.d.ts +14 -0
  37. package/dist/actors/SkillPoints.d.ts.map +1 -1
  38. package/dist/actors/SkillPoints.js +16 -0
  39. package/dist/actors/SkillPoints.js.map +1 -1
  40. package/dist/actors/StatBlock.d.ts +16 -0
  41. package/dist/actors/StatBlock.d.ts.map +1 -1
  42. package/dist/actors/StatBlock.js +21 -0
  43. package/dist/actors/StatBlock.js.map +1 -1
  44. package/dist/actors/Support.d.ts +2 -2
  45. package/dist/actors/Support.d.ts.map +1 -1
  46. package/dist/actors/Support.js +2 -2
  47. package/dist/actors/Support.js.map +1 -1
  48. package/dist/actors/index.d.ts +8 -5
  49. package/dist/actors/index.d.ts.map +1 -1
  50. package/dist/actors/index.js +3 -2
  51. package/dist/actors/index.js.map +1 -1
  52. package/dist/assets/ByteProgress.d.ts +27 -0
  53. package/dist/assets/ByteProgress.d.ts.map +1 -0
  54. package/dist/assets/ByteProgress.js +44 -0
  55. package/dist/assets/ByteProgress.js.map +1 -0
  56. package/dist/assets/Streaming.d.ts +10 -4
  57. package/dist/assets/Streaming.d.ts.map +1 -1
  58. package/dist/assets/Streaming.js +18 -7
  59. package/dist/assets/Streaming.js.map +1 -1
  60. package/dist/assets/index.d.ts +11 -44
  61. package/dist/assets/index.d.ts.map +1 -1
  62. package/dist/assets/index.js +9 -76
  63. package/dist/assets/index.js.map +1 -1
  64. package/dist/assets/loader.d.ts +34 -0
  65. package/dist/assets/loader.d.ts.map +1 -0
  66. package/dist/assets/loader.js +61 -0
  67. package/dist/assets/loader.js.map +1 -0
  68. package/dist/assets/paths.d.ts +40 -0
  69. package/dist/assets/paths.d.ts.map +1 -0
  70. package/dist/assets/paths.js +49 -0
  71. package/dist/assets/paths.js.map +1 -0
  72. package/dist/audio/Music.d.ts +10 -0
  73. package/dist/audio/Music.d.ts.map +1 -1
  74. package/dist/audio/Music.js +36 -1
  75. package/dist/audio/Music.js.map +1 -1
  76. package/dist/audio/Playable.d.ts +3 -0
  77. package/dist/audio/Playable.d.ts.map +1 -1
  78. package/dist/audio/Playable.js +1 -1
  79. package/dist/audio/Playable.js.map +1 -1
  80. package/dist/battle/Field.d.ts +2 -2
  81. package/dist/battle/Field.d.ts.map +1 -1
  82. package/dist/battle/Field.js +3 -3
  83. package/dist/battle/Field.js.map +1 -1
  84. package/dist/battle/Hooks.d.ts +7 -13
  85. package/dist/battle/Hooks.d.ts.map +1 -1
  86. package/dist/battle/Hooks.js +20 -18
  87. package/dist/battle/Hooks.js.map +1 -1
  88. package/dist/core/Feedback.d.ts +3 -9
  89. package/dist/core/Feedback.d.ts.map +1 -1
  90. package/dist/core/Feedback.js +6 -18
  91. package/dist/core/Feedback.js.map +1 -1
  92. package/dist/core/Hooks.d.ts +34 -0
  93. package/dist/core/Hooks.d.ts.map +1 -0
  94. package/dist/core/Hooks.js +33 -0
  95. package/dist/core/Hooks.js.map +1 -0
  96. package/dist/core/HttpTransport.d.ts +22 -0
  97. package/dist/core/HttpTransport.d.ts.map +1 -0
  98. package/dist/core/HttpTransport.js +33 -0
  99. package/dist/core/HttpTransport.js.map +1 -0
  100. package/dist/core/Input.d.ts +41 -0
  101. package/dist/core/Input.d.ts.map +1 -1
  102. package/dist/core/Input.js +126 -21
  103. package/dist/core/Input.js.map +1 -1
  104. package/dist/core/Multiplayer.d.ts +63 -0
  105. package/dist/core/Multiplayer.d.ts.map +1 -0
  106. package/dist/core/Multiplayer.js +73 -0
  107. package/dist/core/Multiplayer.js.map +1 -0
  108. package/dist/core/PlayerInput.d.ts +5 -0
  109. package/dist/core/PlayerInput.d.ts.map +1 -1
  110. package/dist/core/PlayerInput.js +11 -0
  111. package/dist/core/PlayerInput.js.map +1 -1
  112. package/dist/core/Random.d.ts +14 -5
  113. package/dist/core/Random.d.ts.map +1 -1
  114. package/dist/core/Random.js +14 -5
  115. package/dist/core/Random.js.map +1 -1
  116. package/dist/core/SaveSync.d.ts +17 -14
  117. package/dist/core/SaveSync.d.ts.map +1 -1
  118. package/dist/core/SaveSync.js +35 -31
  119. package/dist/core/SaveSync.js.map +1 -1
  120. package/dist/core/Scene.d.ts +16 -6
  121. package/dist/core/Scene.d.ts.map +1 -1
  122. package/dist/core/Scene.js +18 -6
  123. package/dist/core/Scene.js.map +1 -1
  124. package/dist/core/SceneStack.d.ts +8 -4
  125. package/dist/core/SceneStack.d.ts.map +1 -1
  126. package/dist/core/SceneStack.js +4 -0
  127. package/dist/core/SceneStack.js.map +1 -1
  128. package/dist/core/Stats.d.ts +33 -0
  129. package/dist/core/Stats.d.ts.map +1 -0
  130. package/dist/core/Stats.js +34 -0
  131. package/dist/core/Stats.js.map +1 -0
  132. package/dist/core/Telemetry.d.ts +34 -0
  133. package/dist/core/Telemetry.d.ts.map +1 -0
  134. package/dist/core/Telemetry.js +47 -0
  135. package/dist/core/Telemetry.js.map +1 -0
  136. package/dist/core/index.d.ts +9 -2
  137. package/dist/core/index.d.ts.map +1 -1
  138. package/dist/core/index.js +4 -1
  139. package/dist/core/index.js.map +1 -1
  140. package/dist/index.d.ts +5 -5
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +5 -5
  143. package/dist/index.js.map +1 -1
  144. package/dist/mw_games.global.js +88 -87
  145. package/dist/roguelike/Boss.d.ts +4 -4
  146. package/dist/roguelike/Boss.d.ts.map +1 -1
  147. package/dist/roguelike/Boss.js +6 -6
  148. package/dist/roguelike/Boss.js.map +1 -1
  149. package/dist/roguelike/Combat.d.ts +10 -11
  150. package/dist/roguelike/Combat.d.ts.map +1 -1
  151. package/dist/roguelike/Combat.js +9 -16
  152. package/dist/roguelike/Combat.js.map +1 -1
  153. package/dist/roguelike/ContentRoll.d.ts +43 -0
  154. package/dist/roguelike/ContentRoll.d.ts.map +1 -0
  155. package/dist/roguelike/ContentRoll.js +38 -0
  156. package/dist/roguelike/ContentRoll.js.map +1 -0
  157. package/dist/roguelike/DungeonParity.d.ts +42 -0
  158. package/dist/roguelike/DungeonParity.d.ts.map +1 -0
  159. package/dist/roguelike/DungeonParity.js +63 -0
  160. package/dist/roguelike/DungeonParity.js.map +1 -0
  161. package/dist/roguelike/Features.d.ts +42 -0
  162. package/dist/roguelike/Features.d.ts.map +1 -0
  163. package/dist/roguelike/Features.js +59 -0
  164. package/dist/roguelike/Features.js.map +1 -0
  165. package/dist/roguelike/MonsterAI.js +1 -1
  166. package/dist/roguelike/MonsterAI.js.map +1 -1
  167. package/dist/roguelike/MultiStageAbility.d.ts +43 -0
  168. package/dist/roguelike/MultiStageAbility.d.ts.map +1 -0
  169. package/dist/roguelike/MultiStageAbility.js +60 -0
  170. package/dist/roguelike/MultiStageAbility.js.map +1 -0
  171. package/dist/roguelike/RoomBuilders.d.ts +43 -0
  172. package/dist/roguelike/RoomBuilders.d.ts.map +1 -0
  173. package/dist/roguelike/RoomBuilders.js +40 -0
  174. package/dist/roguelike/RoomBuilders.js.map +1 -0
  175. package/dist/roguelike/Targeting.d.ts +22 -0
  176. package/dist/roguelike/Targeting.d.ts.map +1 -1
  177. package/dist/roguelike/Targeting.js +20 -0
  178. package/dist/roguelike/Targeting.js.map +1 -1
  179. package/dist/roguelike/TriggerTracker.d.ts +36 -0
  180. package/dist/roguelike/TriggerTracker.d.ts.map +1 -0
  181. package/dist/roguelike/TriggerTracker.js +49 -0
  182. package/dist/roguelike/TriggerTracker.js.map +1 -0
  183. package/dist/roguelike/generate.d.ts +49 -0
  184. package/dist/roguelike/generate.d.ts.map +1 -1
  185. package/dist/roguelike/generate.js +38 -10
  186. package/dist/roguelike/generate.js.map +1 -1
  187. package/dist/roguelike/index.d.ts +16 -4
  188. package/dist/roguelike/index.d.ts.map +1 -1
  189. package/dist/roguelike/index.js +8 -2
  190. package/dist/roguelike/index.js.map +1 -1
  191. package/dist/rpg/EventRunner.d.ts +30 -8
  192. package/dist/rpg/EventRunner.d.ts.map +1 -1
  193. package/dist/rpg/EventRunner.js +1 -13
  194. package/dist/rpg/EventRunner.js.map +1 -1
  195. package/dist/rpg/FreeMover.d.ts +2 -2
  196. package/dist/rpg/FreeMover.d.ts.map +1 -1
  197. package/dist/rpg/FreeMover.js +5 -5
  198. package/dist/rpg/FreeMover.js.map +1 -1
  199. package/dist/rpg/GridMover.d.ts +2 -2
  200. package/dist/rpg/GridMover.d.ts.map +1 -1
  201. package/dist/rpg/GridMover.js +5 -5
  202. package/dist/rpg/GridMover.js.map +1 -1
  203. package/dist/rpg/MovableSprite.d.ts +25 -0
  204. package/dist/rpg/MovableSprite.d.ts.map +1 -0
  205. package/dist/rpg/MovableSprite.js +2 -0
  206. package/dist/rpg/MovableSprite.js.map +1 -0
  207. package/dist/rpg/Quest.d.ts +6 -1
  208. package/dist/rpg/Quest.d.ts.map +1 -1
  209. package/dist/rpg/Quest.js +6 -1
  210. package/dist/rpg/Quest.js.map +1 -1
  211. package/dist/rpg/automap.d.ts +24 -2
  212. package/dist/rpg/automap.d.ts.map +1 -1
  213. package/dist/rpg/automap.js +9 -1
  214. package/dist/rpg/automap.js.map +1 -1
  215. package/dist/rpg/index.d.ts +4 -4
  216. package/dist/rpg/index.d.ts.map +1 -1
  217. package/dist/rpg/index.js +1 -1
  218. package/dist/rpg/index.js.map +1 -1
  219. package/dist/simulation/Scenario.d.ts +29 -0
  220. package/dist/simulation/Scenario.d.ts.map +1 -0
  221. package/dist/simulation/Scenario.js +25 -0
  222. package/dist/simulation/Scenario.js.map +1 -0
  223. package/dist/simulation/Turns.d.ts +29 -0
  224. package/dist/simulation/Turns.d.ts.map +1 -0
  225. package/dist/simulation/Turns.js +30 -0
  226. package/dist/simulation/Turns.js.map +1 -0
  227. package/dist/simulation/index.d.ts +5 -0
  228. package/dist/simulation/index.d.ts.map +1 -0
  229. package/dist/simulation/index.js +3 -0
  230. package/dist/simulation/index.js.map +1 -0
  231. package/dist/three-d/Character3D.d.ts +26 -1
  232. package/dist/three-d/Character3D.d.ts.map +1 -1
  233. package/dist/three-d/Character3D.js +31 -14
  234. package/dist/three-d/Character3D.js.map +1 -1
  235. package/dist/three-d/Collision3D.d.ts +63 -0
  236. package/dist/three-d/Collision3D.d.ts.map +1 -0
  237. package/dist/three-d/Collision3D.js +75 -0
  238. package/dist/three-d/Collision3D.js.map +1 -0
  239. package/dist/three-d/Models.js +1 -1
  240. package/dist/three-d/index.d.ts +3 -1
  241. package/dist/three-d/index.d.ts.map +1 -1
  242. package/dist/three-d/index.js +1 -0
  243. package/dist/three-d/index.js.map +1 -1
  244. package/dist/{core → two-d}/Game.d.ts +7 -6
  245. package/dist/two-d/Game.d.ts.map +1 -0
  246. package/dist/{core → two-d}/Game.js +3 -3
  247. package/dist/two-d/Game.js.map +1 -0
  248. package/dist/two-d/Scene2D.d.ts +19 -0
  249. package/dist/two-d/Scene2D.d.ts.map +1 -0
  250. package/dist/two-d/Scene2D.js +23 -0
  251. package/dist/two-d/Scene2D.js.map +1 -0
  252. package/dist/two-d/index.d.ts +20 -0
  253. package/dist/two-d/index.d.ts.map +1 -0
  254. package/dist/two-d/index.js +18 -0
  255. package/dist/two-d/index.js.map +1 -0
  256. package/dist/two-d/render/ActorAnimator.d.ts.map +1 -0
  257. package/dist/two-d/render/ActorAnimator.js.map +1 -0
  258. package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -0
  259. package/dist/two-d/render/AnimatedSprite.js.map +1 -0
  260. package/dist/two-d/render/Autotile.d.ts.map +1 -0
  261. package/dist/two-d/render/Autotile.js.map +1 -0
  262. package/dist/two-d/render/Camera.d.ts.map +1 -0
  263. package/dist/{render → two-d/render}/Camera.js +2 -2
  264. package/dist/two-d/render/Camera.js.map +1 -0
  265. package/dist/two-d/render/Capabilities.d.ts.map +1 -0
  266. package/dist/two-d/render/Capabilities.js.map +1 -0
  267. package/dist/two-d/render/ColorBlindness.d.ts.map +1 -0
  268. package/dist/two-d/render/ColorBlindness.js.map +1 -0
  269. package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -0
  270. package/dist/{render → two-d/render}/ColorTransformBatcher.js +3 -2
  271. package/dist/two-d/render/ColorTransformBatcher.js.map +1 -0
  272. package/dist/two-d/render/LayeredSprite.d.ts.map +1 -0
  273. package/dist/two-d/render/LayeredSprite.js.map +1 -0
  274. package/dist/two-d/render/Minimap.d.ts.map +1 -0
  275. package/dist/{render → two-d/render}/Minimap.js +1 -1
  276. package/dist/two-d/render/Minimap.js.map +1 -0
  277. package/dist/two-d/render/Particles.d.ts +109 -0
  278. package/dist/two-d/render/Particles.d.ts.map +1 -0
  279. package/dist/two-d/render/Particles.js +178 -0
  280. package/dist/two-d/render/Particles.js.map +1 -0
  281. package/dist/two-d/render/Projectile.d.ts.map +1 -0
  282. package/dist/two-d/render/Projectile.js.map +1 -0
  283. package/dist/two-d/render/ScreenEffects.d.ts +71 -0
  284. package/dist/two-d/render/ScreenEffects.d.ts.map +1 -0
  285. package/dist/two-d/render/ScreenEffects.js +133 -0
  286. package/dist/two-d/render/ScreenEffects.js.map +1 -0
  287. package/dist/two-d/render/SpriteSheet.d.ts.map +1 -0
  288. package/dist/{render → two-d/render}/SpriteSheet.js +1 -1
  289. package/dist/two-d/render/SpriteSheet.js.map +1 -0
  290. package/dist/two-d/render/StatusVisuals.d.ts +46 -0
  291. package/dist/two-d/render/StatusVisuals.d.ts.map +1 -0
  292. package/dist/two-d/render/StatusVisuals.js +48 -0
  293. package/dist/two-d/render/StatusVisuals.js.map +1 -0
  294. package/dist/two-d/render/TileMap.d.ts.map +1 -0
  295. package/dist/{render → two-d/render}/TileMap.js +1 -1
  296. package/dist/two-d/render/TileMap.js.map +1 -0
  297. package/dist/{rpg → two-d/render}/TiledMap.d.ts +2 -2
  298. package/dist/two-d/render/TiledMap.d.ts.map +1 -0
  299. package/dist/{rpg → two-d/render}/TiledMap.js +2 -2
  300. package/dist/two-d/render/TiledMap.js.map +1 -0
  301. package/dist/two-d/render/TintedSprite.d.ts.map +1 -0
  302. package/dist/two-d/render/TintedSprite.js.map +1 -0
  303. package/dist/two-d/render/Viewport.d.ts.map +1 -0
  304. package/dist/two-d/render/Viewport.js.map +1 -0
  305. package/dist/{render → two-d/render}/index.d.ts +8 -0
  306. package/dist/two-d/render/index.d.ts.map +1 -0
  307. package/dist/{render → two-d/render}/index.js +4 -0
  308. package/dist/two-d/render/index.js.map +1 -0
  309. package/dist/two-d/stage/DialogueStage.d.ts.map +1 -0
  310. package/dist/{stage → two-d/stage}/DialogueStage.js +1 -1
  311. package/dist/two-d/stage/DialogueStage.js.map +1 -0
  312. package/dist/two-d/stage/index.d.ts.map +1 -0
  313. package/dist/two-d/stage/index.js.map +1 -0
  314. package/dist/two-d/stage/script.d.ts.map +1 -0
  315. package/dist/{stage → two-d/stage}/script.js +0 -0
  316. package/dist/two-d/stage/script.js.map +1 -0
  317. package/dist/two-d/stage/twee.d.ts.map +1 -0
  318. package/dist/two-d/stage/twee.js.map +1 -0
  319. package/dist/two-d/ui/Bar.d.ts.map +1 -0
  320. package/dist/two-d/ui/Bar.js.map +1 -0
  321. package/dist/two-d/ui/BitmapLabel.d.ts.map +1 -0
  322. package/dist/two-d/ui/BitmapLabel.js.map +1 -0
  323. package/dist/{ui → two-d/ui}/Button.d.ts +25 -2
  324. package/dist/two-d/ui/Button.d.ts.map +1 -0
  325. package/dist/{ui → two-d/ui}/Button.js +35 -9
  326. package/dist/two-d/ui/Button.js.map +1 -0
  327. package/dist/two-d/ui/EventDialogue.d.ts +23 -0
  328. package/dist/two-d/ui/EventDialogue.d.ts.map +1 -0
  329. package/dist/two-d/ui/EventDialogue.js +27 -0
  330. package/dist/two-d/ui/EventDialogue.js.map +1 -0
  331. package/dist/two-d/ui/FloatingText.d.ts.map +1 -0
  332. package/dist/two-d/ui/FloatingText.js.map +1 -0
  333. package/dist/{ui → two-d/ui}/HelpScreen.d.ts +1 -1
  334. package/dist/two-d/ui/HelpScreen.d.ts.map +1 -0
  335. package/dist/two-d/ui/HelpScreen.js.map +1 -0
  336. package/dist/{ui → two-d/ui}/IconGrid.d.ts +1 -1
  337. package/dist/two-d/ui/IconGrid.d.ts.map +1 -0
  338. package/dist/two-d/ui/IconGrid.js.map +1 -0
  339. package/dist/{ui → two-d/ui}/Label.d.ts +8 -0
  340. package/dist/two-d/ui/Label.d.ts.map +1 -0
  341. package/dist/{ui → two-d/ui}/Label.js +3 -0
  342. package/dist/two-d/ui/Label.js.map +1 -0
  343. package/dist/{ui → two-d/ui}/ListView.d.ts +1 -1
  344. package/dist/two-d/ui/ListView.d.ts.map +1 -0
  345. package/dist/two-d/ui/ListView.js.map +1 -0
  346. package/dist/{ui → two-d/ui}/LoadingScreen.d.ts +1 -1
  347. package/dist/two-d/ui/LoadingScreen.d.ts.map +1 -0
  348. package/dist/two-d/ui/LoadingScreen.js.map +1 -0
  349. package/dist/{ui → two-d/ui}/MessageBox.d.ts +1 -1
  350. package/dist/two-d/ui/MessageBox.d.ts.map +1 -0
  351. package/dist/two-d/ui/MessageBox.js.map +1 -0
  352. package/dist/two-d/ui/NinePatch.d.ts.map +1 -0
  353. package/dist/two-d/ui/NinePatch.js.map +1 -0
  354. package/dist/{ui → two-d/ui}/RebindScreen.d.ts +1 -1
  355. package/dist/two-d/ui/RebindScreen.d.ts.map +1 -0
  356. package/dist/{ui → two-d/ui}/RebindScreen.js +1 -1
  357. package/dist/two-d/ui/RebindScreen.js.map +1 -0
  358. package/dist/two-d/ui/StatsScreen.d.ts +25 -0
  359. package/dist/two-d/ui/StatsScreen.d.ts.map +1 -0
  360. package/dist/two-d/ui/StatsScreen.js +27 -0
  361. package/dist/two-d/ui/StatsScreen.js.map +1 -0
  362. package/dist/two-d/ui/Toast.d.ts.map +1 -0
  363. package/dist/{ui → two-d/ui}/Toast.js +1 -1
  364. package/dist/two-d/ui/Toast.js.map +1 -0
  365. package/dist/two-d/ui/Tooltip.d.ts +94 -0
  366. package/dist/two-d/ui/Tooltip.d.ts.map +1 -0
  367. package/dist/two-d/ui/Tooltip.js +149 -0
  368. package/dist/two-d/ui/Tooltip.js.map +1 -0
  369. package/dist/two-d/ui/VerticalLabel.d.ts.map +1 -0
  370. package/dist/two-d/ui/VerticalLabel.js.map +1 -0
  371. package/dist/{ui → two-d/ui}/Window.d.ts +2 -2
  372. package/dist/two-d/ui/Window.d.ts.map +1 -0
  373. package/dist/{ui → two-d/ui}/Window.js +1 -1
  374. package/dist/two-d/ui/Window.js.map +1 -0
  375. package/dist/two-d/ui/WindowStack.d.ts.map +1 -0
  376. package/dist/{ui → two-d/ui}/WindowStack.js +1 -1
  377. package/dist/two-d/ui/WindowStack.js.map +1 -0
  378. package/dist/{ui → two-d/ui}/index.d.ts +7 -1
  379. package/dist/two-d/ui/index.d.ts.map +1 -0
  380. package/dist/{ui → two-d/ui}/index.js +3 -0
  381. package/dist/two-d/ui/index.js.map +1 -0
  382. package/dist/{ui → two-d/ui}/theme.d.ts +2 -2
  383. package/dist/two-d/ui/theme.d.ts.map +1 -0
  384. package/dist/{ui → two-d/ui}/theme.js +1 -1
  385. package/dist/two-d/ui/theme.js.map +1 -0
  386. package/dist/version.d.ts +1 -1
  387. package/dist/version.js +1 -1
  388. package/dist/world/Encounters.js +1 -1
  389. package/dist/world/Encounters.js.map +1 -1
  390. package/dist/world/Environment.d.ts +12 -3
  391. package/dist/world/Environment.d.ts.map +1 -1
  392. package/dist/world/Environment.js +18 -9
  393. package/dist/world/Environment.js.map +1 -1
  394. package/package.json +138 -23
  395. package/dist/core/Game.d.ts.map +0 -1
  396. package/dist/core/Game.js.map +0 -1
  397. package/dist/render/ActorAnimator.d.ts.map +0 -1
  398. package/dist/render/ActorAnimator.js.map +0 -1
  399. package/dist/render/AnimatedSprite.d.ts.map +0 -1
  400. package/dist/render/AnimatedSprite.js.map +0 -1
  401. package/dist/render/Autotile.d.ts.map +0 -1
  402. package/dist/render/Autotile.js.map +0 -1
  403. package/dist/render/Camera.d.ts.map +0 -1
  404. package/dist/render/Camera.js.map +0 -1
  405. package/dist/render/Capabilities.d.ts.map +0 -1
  406. package/dist/render/Capabilities.js.map +0 -1
  407. package/dist/render/ColorBlindness.d.ts.map +0 -1
  408. package/dist/render/ColorBlindness.js.map +0 -1
  409. package/dist/render/ColorTransformBatcher.d.ts.map +0 -1
  410. package/dist/render/ColorTransformBatcher.js.map +0 -1
  411. package/dist/render/LayeredSprite.d.ts.map +0 -1
  412. package/dist/render/LayeredSprite.js.map +0 -1
  413. package/dist/render/Minimap.d.ts.map +0 -1
  414. package/dist/render/Minimap.js.map +0 -1
  415. package/dist/render/Projectile.d.ts.map +0 -1
  416. package/dist/render/Projectile.js.map +0 -1
  417. package/dist/render/SpriteSheet.d.ts.map +0 -1
  418. package/dist/render/SpriteSheet.js.map +0 -1
  419. package/dist/render/TileMap.d.ts.map +0 -1
  420. package/dist/render/TileMap.js.map +0 -1
  421. package/dist/render/TintedSprite.d.ts.map +0 -1
  422. package/dist/render/TintedSprite.js.map +0 -1
  423. package/dist/render/Viewport.d.ts.map +0 -1
  424. package/dist/render/Viewport.js.map +0 -1
  425. package/dist/render/index.d.ts.map +0 -1
  426. package/dist/render/index.js.map +0 -1
  427. package/dist/rpg/TiledMap.d.ts.map +0 -1
  428. package/dist/rpg/TiledMap.js.map +0 -1
  429. package/dist/stage/DialogueStage.d.ts.map +0 -1
  430. package/dist/stage/DialogueStage.js.map +0 -1
  431. package/dist/stage/index.d.ts.map +0 -1
  432. package/dist/stage/index.js.map +0 -1
  433. package/dist/stage/script.d.ts.map +0 -1
  434. package/dist/stage/script.js.map +0 -1
  435. package/dist/stage/twee.d.ts.map +0 -1
  436. package/dist/stage/twee.js.map +0 -1
  437. package/dist/ui/Bar.d.ts.map +0 -1
  438. package/dist/ui/Bar.js.map +0 -1
  439. package/dist/ui/BitmapLabel.d.ts.map +0 -1
  440. package/dist/ui/BitmapLabel.js.map +0 -1
  441. package/dist/ui/Button.d.ts.map +0 -1
  442. package/dist/ui/Button.js.map +0 -1
  443. package/dist/ui/FloatingText.d.ts.map +0 -1
  444. package/dist/ui/FloatingText.js.map +0 -1
  445. package/dist/ui/HelpScreen.d.ts.map +0 -1
  446. package/dist/ui/HelpScreen.js.map +0 -1
  447. package/dist/ui/IconGrid.d.ts.map +0 -1
  448. package/dist/ui/IconGrid.js.map +0 -1
  449. package/dist/ui/Label.d.ts.map +0 -1
  450. package/dist/ui/Label.js.map +0 -1
  451. package/dist/ui/ListView.d.ts.map +0 -1
  452. package/dist/ui/ListView.js.map +0 -1
  453. package/dist/ui/LoadingScreen.d.ts.map +0 -1
  454. package/dist/ui/LoadingScreen.js.map +0 -1
  455. package/dist/ui/MessageBox.d.ts.map +0 -1
  456. package/dist/ui/MessageBox.js.map +0 -1
  457. package/dist/ui/NinePatch.d.ts.map +0 -1
  458. package/dist/ui/NinePatch.js.map +0 -1
  459. package/dist/ui/RebindScreen.d.ts.map +0 -1
  460. package/dist/ui/RebindScreen.js.map +0 -1
  461. package/dist/ui/Toast.d.ts.map +0 -1
  462. package/dist/ui/Toast.js.map +0 -1
  463. package/dist/ui/VerticalLabel.d.ts.map +0 -1
  464. package/dist/ui/VerticalLabel.js.map +0 -1
  465. package/dist/ui/Window.d.ts.map +0 -1
  466. package/dist/ui/Window.js.map +0 -1
  467. package/dist/ui/WindowStack.d.ts.map +0 -1
  468. package/dist/ui/WindowStack.js.map +0 -1
  469. package/dist/ui/index.d.ts.map +0 -1
  470. package/dist/ui/index.js.map +0 -1
  471. package/dist/ui/theme.d.ts.map +0 -1
  472. package/dist/ui/theme.js.map +0 -1
  473. /package/dist/{render → two-d/render}/ActorAnimator.d.ts +0 -0
  474. /package/dist/{render → two-d/render}/ActorAnimator.js +0 -0
  475. /package/dist/{render → two-d/render}/AnimatedSprite.d.ts +0 -0
  476. /package/dist/{render → two-d/render}/AnimatedSprite.js +0 -0
  477. /package/dist/{render → two-d/render}/Autotile.d.ts +0 -0
  478. /package/dist/{render → two-d/render}/Autotile.js +0 -0
  479. /package/dist/{render → two-d/render}/Camera.d.ts +0 -0
  480. /package/dist/{render → two-d/render}/Capabilities.d.ts +0 -0
  481. /package/dist/{render → two-d/render}/Capabilities.js +0 -0
  482. /package/dist/{render → two-d/render}/ColorBlindness.d.ts +0 -0
  483. /package/dist/{render → two-d/render}/ColorBlindness.js +0 -0
  484. /package/dist/{render → two-d/render}/ColorTransformBatcher.d.ts +0 -0
  485. /package/dist/{render → two-d/render}/LayeredSprite.d.ts +0 -0
  486. /package/dist/{render → two-d/render}/LayeredSprite.js +0 -0
  487. /package/dist/{render → two-d/render}/Minimap.d.ts +0 -0
  488. /package/dist/{render → two-d/render}/Projectile.d.ts +0 -0
  489. /package/dist/{render → two-d/render}/Projectile.js +0 -0
  490. /package/dist/{render → two-d/render}/SpriteSheet.d.ts +0 -0
  491. /package/dist/{render → two-d/render}/TileMap.d.ts +0 -0
  492. /package/dist/{render → two-d/render}/TintedSprite.d.ts +0 -0
  493. /package/dist/{render → two-d/render}/TintedSprite.js +0 -0
  494. /package/dist/{render → two-d/render}/Viewport.d.ts +0 -0
  495. /package/dist/{render → two-d/render}/Viewport.js +0 -0
  496. /package/dist/{stage → two-d/stage}/DialogueStage.d.ts +0 -0
  497. /package/dist/{stage → two-d/stage}/index.d.ts +0 -0
  498. /package/dist/{stage → two-d/stage}/index.js +0 -0
  499. /package/dist/{stage → two-d/stage}/script.d.ts +0 -0
  500. /package/dist/{stage → two-d/stage}/twee.d.ts +0 -0
  501. /package/dist/{stage → two-d/stage}/twee.js +0 -0
  502. /package/dist/{ui → two-d/ui}/Bar.d.ts +0 -0
  503. /package/dist/{ui → two-d/ui}/Bar.js +0 -0
  504. /package/dist/{ui → two-d/ui}/BitmapLabel.d.ts +0 -0
  505. /package/dist/{ui → two-d/ui}/BitmapLabel.js +0 -0
  506. /package/dist/{ui → two-d/ui}/FloatingText.d.ts +0 -0
  507. /package/dist/{ui → two-d/ui}/FloatingText.js +0 -0
  508. /package/dist/{ui → two-d/ui}/HelpScreen.js +0 -0
  509. /package/dist/{ui → two-d/ui}/IconGrid.js +0 -0
  510. /package/dist/{ui → two-d/ui}/ListView.js +0 -0
  511. /package/dist/{ui → two-d/ui}/LoadingScreen.js +0 -0
  512. /package/dist/{ui → two-d/ui}/MessageBox.js +0 -0
  513. /package/dist/{ui → two-d/ui}/NinePatch.d.ts +0 -0
  514. /package/dist/{ui → two-d/ui}/NinePatch.js +0 -0
  515. /package/dist/{ui → two-d/ui}/Toast.d.ts +0 -0
  516. /package/dist/{ui → two-d/ui}/VerticalLabel.d.ts +0 -0
  517. /package/dist/{ui → two-d/ui}/VerticalLabel.js +0 -0
  518. /package/dist/{ui → two-d/ui}/WindowStack.d.ts +0 -0
@@ -34,14 +34,14 @@ export class SupportLedger {
34
34
  this.points.set(key, points);
35
35
  return { a, b, points, previousLevel, level: this.level(a, b) };
36
36
  }
37
- save() {
37
+ toJSON() {
38
38
  const pairs = [...this.points].map(([key, points]) => {
39
39
  const [a, b] = key.split('\u0000');
40
40
  return [a, b, points];
41
41
  });
42
42
  return { pairs };
43
43
  }
44
- static restore(levels, data) {
44
+ static fromJSON(levels, data) {
45
45
  const ledger = new SupportLedger(levels);
46
46
  for (const [a, b, points] of data.pairs) {
47
47
  if (!a || !b || a === b || !Number.isFinite(points) || points < 0)
@@ -1 +1 @@
1
- {"version":3,"file":"Support.js","sourceRoot":"","sources":["../../src/actors/Support.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Support.js","sourceRoot":"","sources":["../../src/actors/Support.ts"],"names":[],"mappings":"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"}
@@ -6,14 +6,15 @@ export { skillCheck } from './skillCheck.ts';
6
6
  export { SkillPoints } from './SkillPoints.ts';
7
7
  export type { SkillPointsOptions } from './SkillPoints.ts';
8
8
  export { EquipmentSlots } from './Equipment.ts';
9
- export type { EquippableItem, EquipmentOptions } from './Equipment.ts';
9
+ export type { EquippableItem, EquipmentOptions, SavedEquipment } from './Equipment.ts';
10
10
  export { Inventory } from './Inventory.ts';
11
- export type { InventoryItem, InventoryOptions } from './Inventory.ts';
11
+ export type { InventoryItem, InventoryOptions, ItemDefinition, SavedInventory, SavedInventoryItem } from './Inventory.ts';
12
12
  export { craft } from './craft.ts';
13
13
  export type { Recipe } from './craft.ts';
14
14
  export { applyStatusEffect } from './StatusEffect.ts';
15
15
  export type { EffectClock, StatusEffectOptions, StatusEffectHandle } from './StatusEffect.ts';
16
16
  export { identify, enchant, damageItem, repairItem } from './ItemState.ts';
17
+ export type { AffixUpgradePolicy } from './ItemState.ts';
17
18
  export { applyItemStatusEffect } from './ItemStatusEffect.ts';
18
19
  export type { ItemStatusEffectOptions, ItemStatusEffectHandle } from './ItemStatusEffect.ts';
19
20
  export { Charges } from './Charges.ts';
@@ -22,16 +23,18 @@ export { rollLoot } from './Loot.ts';
22
23
  export type { LootEntry, LootTable } from './Loot.ts';
23
24
  export { Advancement } from './Advancement.ts';
24
25
  export type { AdvancementOption, AdvancementTier, AdvancementTierKind, AdvancementTrack } from './Advancement.ts';
25
- export { rollAffix, affixOf, applyAffix, removeAffix } from './Affix.ts';
26
- export type { AffixDef, AffixTable, AffixTrigger } from './Affix.ts';
26
+ export { rollAffix, affixOf, applyAffix, removeAffix, copyAffix, matchesContext } from './Affix.ts';
27
+ export type { AffixDef, AffixTable, AffixTrigger, AttackKind, AffixContext } from './Affix.ts';
27
28
  export { scaledModifiers } from './Scaling.ts';
28
29
  export type { LevelScale } from './Scaling.ts';
29
30
  export { assignAppearances, Appearances } from './Appearances.ts';
30
31
  export type { AppearanceTable } from './Appearances.ts';
31
32
  export { buy, sell } from './Shop.ts';
32
33
  export type { Price, ShopOptions } from './Shop.ts';
33
- export { canAfford, spend } from './Resource.ts';
34
+ export { canAfford, spend, refund, convertToCharges } from './Resource.ts';
34
35
  export type { ResourceCost } from './Resource.ts';
36
+ export { Barrier } from './Barrier.ts';
37
+ export type { BarrierLayer } from './Barrier.ts';
35
38
  export { assignTraits } from './Traits.ts';
36
39
  export type { TraitDef, AssignedTrait } from './Traits.ts';
37
40
  export { AuraField } from './Aura.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,12 @@ export { applyItemStatusEffect } from './ItemStatusEffect.js';
11
11
  export { Charges } from './Charges.js';
12
12
  export { rollLoot } from './Loot.js';
13
13
  export { Advancement } from './Advancement.js';
14
- export { rollAffix, affixOf, applyAffix, removeAffix } from './Affix.js';
14
+ export { rollAffix, affixOf, applyAffix, removeAffix, copyAffix, matchesContext } from './Affix.js';
15
15
  export { scaledModifiers } from './Scaling.js';
16
16
  export { assignAppearances, Appearances } from './Appearances.js';
17
17
  export { buy, sell } from './Shop.js';
18
- export { canAfford, spend } from './Resource.js';
18
+ export { canAfford, spend, refund, convertToCharges } from './Resource.js';
19
+ export { Barrier } from './Barrier.js';
19
20
  export { assignTraits } from './Traits.js';
20
21
  export { AuraField } from './Aura.js';
21
22
  export { SupportLedger } from './Support.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Real transferred-byte progress for a real origin - a server, a dev server, or a desktop
3
+ * host serving through a virtual origin rather than raw `file://` (see `desktop/`'s own
4
+ * `SetVirtualHostNameToFolderMapping` for why that distinction matters). This is deliberately
5
+ * separate from `load`'s own `AssetProgress`: that one reports a fraction of assets finished
6
+ * because, as its own doc comment says, "Pixi's own loaders do not expose bytes transferred
7
+ * across every asset type uniformly" - reporting a number this project cannot actually back
8
+ * would be exactly the kind of silent-fallback dishonesty this project's own conventions rule
9
+ * out elsewhere. `fetch()` itself is blocked from `file://` entirely, so calling this from a
10
+ * compiled data-URI build throws the same way any other `fetch()` there would; it exists for
11
+ * item 137's "a server or standalone WebView2/Chromium host can stream/cache assets
12
+ * incrementally and report byte progress" capability tier, not the `file://` one.
13
+ */
14
+ export interface ByteProgress {
15
+ loaded: number;
16
+ /** null when the server never sent a Content-Length (chunked transfer, some dev servers) - a caller only gets a real fraction when this is known */
17
+ total: number | null;
18
+ }
19
+ export type OnByteProgress = (progress: ByteProgress) => void;
20
+ /**
21
+ * Fetches `url`, reporting real bytes transferred as they arrive, and resolves to the
22
+ * complete body as a `Blob` - handed to `URL.createObjectURL` to become something
23
+ * `assets.load`'s own texture/audio/JSON decoding can take from there, the same as any other
24
+ * resolved asset URL.
25
+ */
26
+ export declare function fetchWithByteProgress(url: string, onProgress?: OnByteProgress, fetchFn?: typeof fetch): Promise<Blob>;
27
+ //# sourceMappingURL=ByteProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ByteProgress.d.ts","sourceRoot":"","sources":["../../src/assets/ByteProgress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,oJAAoJ;IACpJ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;AAE9D;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,cAAc,EAC3B,OAAO,GAAE,OAAO,KAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Real transferred-byte progress for a real origin - a server, a dev server, or a desktop
3
+ * host serving through a virtual origin rather than raw `file://` (see `desktop/`'s own
4
+ * `SetVirtualHostNameToFolderMapping` for why that distinction matters). This is deliberately
5
+ * separate from `load`'s own `AssetProgress`: that one reports a fraction of assets finished
6
+ * because, as its own doc comment says, "Pixi's own loaders do not expose bytes transferred
7
+ * across every asset type uniformly" - reporting a number this project cannot actually back
8
+ * would be exactly the kind of silent-fallback dishonesty this project's own conventions rule
9
+ * out elsewhere. `fetch()` itself is blocked from `file://` entirely, so calling this from a
10
+ * compiled data-URI build throws the same way any other `fetch()` there would; it exists for
11
+ * item 137's "a server or standalone WebView2/Chromium host can stream/cache assets
12
+ * incrementally and report byte progress" capability tier, not the `file://` one.
13
+ */
14
+ /**
15
+ * Fetches `url`, reporting real bytes transferred as they arrive, and resolves to the
16
+ * complete body as a `Blob` - handed to `URL.createObjectURL` to become something
17
+ * `assets.load`'s own texture/audio/JSON decoding can take from there, the same as any other
18
+ * resolved asset URL.
19
+ */
20
+ export async function fetchWithByteProgress(url, onProgress, fetchFn = fetch) {
21
+ const response = await fetchFn(url);
22
+ if (!response.ok)
23
+ throw new Error(`fetchWithByteProgress: ${url} responded ${response.status}`);
24
+ const totalHeader = response.headers.get('content-length');
25
+ const total = totalHeader !== null && totalHeader !== '' ? Number(totalHeader) : null;
26
+ if (!response.body) {
27
+ const blob = await response.blob();
28
+ onProgress?.({ loaded: blob.size, total: total ?? blob.size });
29
+ return blob;
30
+ }
31
+ const reader = response.body.getReader();
32
+ const chunks = [];
33
+ let loaded = 0;
34
+ for (;;) {
35
+ const { done, value } = await reader.read();
36
+ if (done)
37
+ break;
38
+ chunks.push(value);
39
+ loaded += value.byteLength;
40
+ onProgress?.({ loaded, total });
41
+ }
42
+ return new Blob(chunks);
43
+ }
44
+ //# sourceMappingURL=ByteProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ByteProgress.js","sourceRoot":"","sources":["../../src/assets/ByteProgress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,GAAW,EACX,UAA2B,EAC3B,OAAO,GAAiB,KAAK;IAE7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhG,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,SAAS,CAAC;QACT,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;QAC3B,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,MAAoB,CAAC,CAAC;AACvC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { AssetProgress } from './paths.ts';
1
2
  export interface AssetBundle {
2
3
  id: string;
3
4
  paths: readonly string[];
@@ -7,7 +8,7 @@ export interface AssetBundle {
7
8
  }
8
9
  export interface AssetStreamOptions {
9
10
  budgetBytes?: number;
10
- load?: (paths: string[]) => Promise<void>;
11
+ load?: (paths: string[], onProgress?: AssetProgress) => Promise<void>;
11
12
  release?: (paths: string[]) => Promise<void>;
12
13
  }
13
14
  /**
@@ -25,9 +26,14 @@ export declare class AssetStream {
25
26
  private clock;
26
27
  constructor(options?: AssetStreamOptions);
27
28
  /** loads one bundle now, then evicts older ready bundles if its budget requires it */
28
- preload(bundle: AssetBundle): Promise<void>;
29
- /** preloads bundles in highest-priority-first order; callers may intentionally not await it */
30
- preloadLikely(bundles: readonly AssetBundle[]): Promise<void>;
29
+ preload(bundle: AssetBundle, onProgress?: AssetProgress): Promise<void>;
30
+ /**
31
+ * Preloads bundles in highest-priority-first order; callers may intentionally not await it.
32
+ * `onProgress`, when given, reports overall fraction across every bundle in `bundles` (each
33
+ * one weighted equally), for a caller that wants one progress figure across the whole list
34
+ * rather than per-bundle callbacks of its own.
35
+ */
36
+ preloadLikely(bundles: readonly AssetBundle[], onProgress?: AssetProgress): Promise<void>;
31
37
  /** marks a ready bundle as recently used at the moment a scene adopts it */
32
38
  use(id: string): boolean;
33
39
  isReady(id: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../src/assets/Streaming.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAOD;;;;;;GAMG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IACnE,OAAO,CAAC,KAAK,CAAK;IAElB,YAAY,OAAO,GAAE,kBAAuB,EAK3C;IAED,sFAAsF;IAChF,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhD;IAED,+FAA+F;IACzF,aAAa,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;IAED,4EAA4E;IAC5E,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAKvB;IAED,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE3B;IAED,8EAA8E;IACxE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;YAEa,aAAa;IAU3B,OAAO,CAAC,UAAU;CAGlB"}
1
+ {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../src/assets/Streaming.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAOD;;;;;;GAMG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiE;IAC5F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IACnE,OAAO,CAAC,KAAK,CAAK;IAElB,YAAY,OAAO,GAAE,kBAAuB,EAK3C;IAED,sFAAsF;IAChF,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5E;IAED;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9F;IAED,4EAA4E;IAC5E,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAKvB;IAED,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE3B;IAED,8EAA8E;IACxE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;YAEa,aAAa;IAU3B,OAAO,CAAC,UAAU;CAGlB"}
@@ -1,4 +1,4 @@
1
- import { load, release } from './index.js';
1
+ import { load, release } from './loader.js';
2
2
  /**
3
3
  * Game-directed background asset staging with bounded, least-recently-used eviction.
4
4
  *
@@ -17,7 +17,7 @@ export class AssetStream {
17
17
  this.releaseAssets = options.release ?? release;
18
18
  }
19
19
  /** loads one bundle now, then evicts older ready bundles if its budget requires it */
20
- async preload(bundle) {
20
+ async preload(bundle, onProgress) {
21
21
  if (!bundle.id)
22
22
  throw new Error('asset bundle needs an id');
23
23
  if (bundle.estimatedBytes !== undefined && bundle.estimatedBytes < 0)
@@ -25,18 +25,29 @@ export class AssetStream {
25
25
  const existing = this.entries.get(bundle.id);
26
26
  if (existing?.ready) {
27
27
  existing.lastUsed = ++this.clock;
28
+ onProgress?.(1);
28
29
  return;
29
30
  }
30
31
  const paths = bundle.paths.filter((path) => !this.isRetained(path));
31
32
  if (paths.length > 0)
32
- await this.loadAssets([...paths]);
33
+ await this.loadAssets([...paths], onProgress);
34
+ else
35
+ onProgress?.(1);
33
36
  this.entries.set(bundle.id, { ...bundle, lastUsed: ++this.clock, ready: true });
34
37
  await this.enforceBudget(bundle.id);
35
38
  }
36
- /** preloads bundles in highest-priority-first order; callers may intentionally not await it */
37
- async preloadLikely(bundles) {
38
- for (const bundle of [...bundles].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0)))
39
- await this.preload(bundle);
39
+ /**
40
+ * Preloads bundles in highest-priority-first order; callers may intentionally not await it.
41
+ * `onProgress`, when given, reports overall fraction across every bundle in `bundles` (each
42
+ * one weighted equally), for a caller that wants one progress figure across the whole list
43
+ * rather than per-bundle callbacks of its own.
44
+ */
45
+ async preloadLikely(bundles, onProgress) {
46
+ const ordered = [...bundles].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
47
+ for (const [index, bundle] of ordered.entries()) {
48
+ await this.preload(bundle, onProgress && ((fraction) => onProgress((index + fraction) / ordered.length)));
49
+ }
50
+ onProgress?.(1);
40
51
  }
41
52
  /** marks a ready bundle as recently used at the moment a scene adopts it */
42
53
  use(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"Streaming.js","sourceRoot":"","sources":["../../src/assets/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAqB3C;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IAOvB,YAAY,OAAO,GAAuB,EAAE;QAN3B,YAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;QAI5C,UAAK,GAAG,CAAC,CAAC;QAGjB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,iBAAiB,CAAC;QACnE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;IACjD,CAAC;IAED,sFAAsF;IACtF,KAAK,CAAC,OAAO,CAAC,MAAmB;QAChC,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChI,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,KAAK,EAAE,CAAC;YACrB,QAAQ,CAAC,QAAQ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;YACjC,OAAO;QACR,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,aAAa,CAAC,OAA+B;QAClD,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrH,CAAC;IAED,4EAA4E;IAC5E,GAAG,CAAC,EAAU;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,KAAK;YAAE,OAAO,KAAK,CAAC;QAChC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,MAAM,CAAC,EAAU;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,WAAmB;QAC9C,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;iBAC1C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC;iBAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS;gBAAE,OAAO;YACvB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAEO,UAAU,CAAC,IAAY;QAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9F,CAAC;CACD"}
1
+ {"version":3,"file":"Streaming.js","sourceRoot":"","sources":["../../src/assets/Streaming.ts"],"names":[],"mappings":"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"}
@@ -1,50 +1,17 @@
1
- import { Texture } from 'pixi.js';
2
1
  /**
3
- * Where a game's assets come from.
2
+ * The `file://` story, in two halves.
4
3
  *
5
- * In a built game, `tools/compile-resources` has already turned every asset into a `data:`
6
- * URI inside a script that runs before the game does. `resolve` then hands Pixi that URI
7
- * instead of a path, which is what lets the page work from `file://`: see the tool for
8
- * why plain files next to the page do not.
9
- *
10
- * During development there is no compiled bundle, so paths are used as they are and the
11
- * dev server serves them. Game code says `load('tiles.png')` either way.
12
- */
13
- declare global {
14
- interface Window {
15
- __MWG_ASSETS__?: Record<string, string>;
16
- }
17
- }
18
- /** points dev-mode lookups at the folder assets are served from */
19
- export declare function setBase(path: string): void;
20
- /** true when running against a compiled bundle rather than a dev server */
21
- export declare function isCompiled(): boolean;
22
- export declare function paths(): string[];
23
- export declare function has(path: string): boolean;
24
- /** an asset path resolved to something the browser can actually load */
25
- export declare function resolve(path: string): string;
26
- /**
27
- * Loads assets by path, giving each one an alias equal to its path.
28
- *
29
- * Load everything a scene needs before creating it; afterwards `texture()` is synchronous,
30
- * so game code never has to await in the middle of building a scene.
31
- */
32
- export declare function load(paths: string[]): Promise<void>;
33
- /** a loaded texture, by the same path it was loaded with */
34
- export declare function texture(path: string): Texture;
35
- /** a loaded asset of any other kind, such as parsed JSON */
36
- export declare function get<T>(path: string): T;
37
- /** true once `load` has resolved for this path and it has not since been `release`d */
38
- export declare function isLoaded(path: string): boolean;
39
- /**
40
- * Frees assets `load` brought in, destroying any texture among them so it stops holding GPU
41
- * memory. For a game with many discrete zones - each with its own tileset or sprite sheet -
42
- * this is the counterpart to `world.World.unload`: that drops a map's own state, this drops
43
- * the assets it pointed at, once a game decides the player has left an area for good. A path
44
- * never loaded (or already released) is silently skipped rather than treated as an error,
45
- * since a game unloading a zone it may or may not have visited shouldn't have to check first.
4
+ * `paths.ts` resolves an asset path against the compiled `data:` URI map (or the dev server)
5
+ * and needs no renderer at all; `loader.ts` fetches and decodes through Pixi. This barrel
6
+ * exposes both, so `import { load, resolve } from '@datamoc/mw_games/assets'` is unchanged -
7
+ * but a game rendering through something else imports `@datamoc/mw_games/assets/paths`
8
+ * instead and pays nothing for Pixi.
46
9
  */
47
- export declare function release(paths: string[]): Promise<void>;
10
+ export { setBase, isCompiled, paths, has, resolve } from './paths.ts';
11
+ export type { AssetProgress } from './paths.ts';
12
+ export { load, texture, get, isLoaded, release } from './loader.ts';
48
13
  export { AssetStream } from './Streaming.ts';
49
14
  export type { AssetBundle, AssetStreamOptions } from './Streaming.ts';
15
+ export { fetchWithByteProgress } from './ByteProgress.ts';
16
+ export type { ByteProgress, OnByteProgress } from './ByteProgress.ts';
50
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;GAUG;AAEH,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;CACD;AAKD,mEAAmE;AACnE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE1C;AAMD,2EAA2E;AAC3E,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,KAAK,IAAI,MAAM,EAAE,CAEhC;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGzC;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW5C;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzD;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK7C;AAED,4DAA4D;AAC5D,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAKtC;AAED,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,81 +1,14 @@
1
- import { Assets, Texture } from 'pixi.js';
2
- /** the base for dev-mode paths, when assets are served rather than compiled in */
3
- let base = '';
4
- /** points dev-mode lookups at the folder assets are served from */
5
- export function setBase(path) {
6
- base = path.endsWith('/') || path === '' ? path : path + '/';
7
- }
8
- function compiled() {
9
- return typeof window === 'undefined' ? undefined : window.__MWG_ASSETS__;
10
- }
11
- /** true when running against a compiled bundle rather than a dev server */
12
- export function isCompiled() {
13
- return compiled() !== undefined;
14
- }
15
- export function paths() {
16
- return Object.keys(compiled() ?? {});
17
- }
18
- export function has(path) {
19
- const map = compiled();
20
- return map ? path in map : true;
21
- }
22
- /** an asset path resolved to something the browser can actually load */
23
- export function resolve(path) {
24
- const map = compiled();
25
- if (!map)
26
- return base + path;
27
- const found = map[path];
28
- if (found === undefined) {
29
- throw new Error(`asset "${path}" is not in this build - check it is under the folder passed to compile-resources`);
30
- }
31
- return found;
32
- }
33
1
  /**
34
- * Loads assets by path, giving each one an alias equal to its path.
2
+ * The `file://` story, in two halves.
35
3
  *
36
- * Load everything a scene needs before creating it; afterwards `texture()` is synchronous,
37
- * so game code never has to await in the middle of building a scene.
4
+ * `paths.ts` resolves an asset path against the compiled `data:` URI map (or the dev server)
5
+ * and needs no renderer at all; `loader.ts` fetches and decodes through Pixi. This barrel
6
+ * exposes both, so `import { load, resolve } from '@datamoc/mw_games/assets'` is unchanged -
7
+ * but a game rendering through something else imports `@datamoc/mw_games/assets/paths`
8
+ * instead and pays nothing for Pixi.
38
9
  */
39
- export async function load(paths) {
40
- const pending = paths.filter((path) => !Assets.cache.has(path));
41
- if (pending.length === 0)
42
- return;
43
- for (const path of pending) {
44
- Assets.add({ alias: path, src: resolve(path) });
45
- }
46
- await Assets.load(pending);
47
- }
48
- /** a loaded texture, by the same path it was loaded with */
49
- export function texture(path) {
50
- if (!Assets.cache.has(path)) {
51
- throw new Error(`texture "${path}" has not been loaded - pass it to load() first`);
52
- }
53
- return Assets.get(path);
54
- }
55
- /** a loaded asset of any other kind, such as parsed JSON */
56
- export function get(path) {
57
- if (!Assets.cache.has(path)) {
58
- throw new Error(`asset "${path}" has not been loaded - pass it to load() first`);
59
- }
60
- return Assets.get(path);
61
- }
62
- /** true once `load` has resolved for this path and it has not since been `release`d */
63
- export function isLoaded(path) {
64
- return Assets.cache.has(path);
65
- }
66
- /**
67
- * Frees assets `load` brought in, destroying any texture among them so it stops holding GPU
68
- * memory. For a game with many discrete zones - each with its own tileset or sprite sheet -
69
- * this is the counterpart to `world.World.unload`: that drops a map's own state, this drops
70
- * the assets it pointed at, once a game decides the player has left an area for good. A path
71
- * never loaded (or already released) is silently skipped rather than treated as an error,
72
- * since a game unloading a zone it may or may not have visited shouldn't have to check first.
73
- */
74
- export async function release(paths) {
75
- const loaded = paths.filter((path) => Assets.cache.has(path));
76
- if (loaded.length === 0)
77
- return;
78
- await Assets.unload(loaded);
79
- }
10
+ export { setBase, isCompiled, paths, has, resolve } from './paths.js';
11
+ export { load, texture, get, isLoaded, release } from './loader.js';
80
12
  export { AssetStream } from './Streaming.js';
13
+ export { fetchWithByteProgress } from './ByteProgress.js';
81
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGtE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Texture } from 'pixi.js';
2
+ import { type AssetProgress } from './paths.ts';
3
+ /**
4
+ * Actually fetching and decoding assets, which is the half that needs Pixi.
5
+ *
6
+ * Split from `paths.ts` so path resolution stays renderer-free: a game rendering through
7
+ * something other than Pixi (`mwg/3d` on Babylon) resolves paths through the same compiled
8
+ * asset map and hands the fetch to its own loader, rather than importing this file at all.
9
+ */
10
+ /**
11
+ * Loads assets by path, giving each one an alias equal to its path.
12
+ *
13
+ * Load everything a scene needs before creating it; afterwards `texture()` is synchronous,
14
+ * so game code never has to await in the middle of building a scene. `onProgress`, when
15
+ * given, is item 135's `LoadQueue`/`LoadingScreen` seam for a task that would otherwise only
16
+ * ever report 0 then 1 around one opaque `await`.
17
+ */
18
+ export declare function load(paths: string[], onProgress?: AssetProgress): Promise<void>;
19
+ /** a loaded texture, by the same path it was loaded with */
20
+ export declare function texture(path: string): Texture;
21
+ /** a loaded asset of any other kind, such as parsed JSON */
22
+ export declare function get<T>(path: string): T;
23
+ /** true once `load` has resolved for this path and it has not since been `release`d */
24
+ export declare function isLoaded(path: string): boolean;
25
+ /**
26
+ * Frees assets `load` brought in, destroying any texture among them so it stops holding GPU
27
+ * memory. For a game with many discrete zones - each with its own tileset or sprite sheet -
28
+ * this is the counterpart to `world.World.unload`: that drops a map's own state, this drops
29
+ * the assets it pointed at, once a game decides the player has left an area for good. A path
30
+ * never loaded (or already released) is silently skipped rather than treated as an error,
31
+ * since a game unloading a zone it may or may not have visited shouldn't have to check first.
32
+ */
33
+ export declare function release(paths: string[]): Promise<void>;
34
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/assets/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrF;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK7C;AAED,4DAA4D;AAC5D,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAKtC;AAED,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D"}
@@ -0,0 +1,61 @@
1
+ import { Assets, Texture } from 'pixi.js';
2
+ import { resolve } from './paths.js';
3
+ /**
4
+ * Actually fetching and decoding assets, which is the half that needs Pixi.
5
+ *
6
+ * Split from `paths.ts` so path resolution stays renderer-free: a game rendering through
7
+ * something other than Pixi (`mwg/3d` on Babylon) resolves paths through the same compiled
8
+ * asset map and hands the fetch to its own loader, rather than importing this file at all.
9
+ */
10
+ /**
11
+ * Loads assets by path, giving each one an alias equal to its path.
12
+ *
13
+ * Load everything a scene needs before creating it; afterwards `texture()` is synchronous,
14
+ * so game code never has to await in the middle of building a scene. `onProgress`, when
15
+ * given, is item 135's `LoadQueue`/`LoadingScreen` seam for a task that would otherwise only
16
+ * ever report 0 then 1 around one opaque `await`.
17
+ */
18
+ export async function load(paths, onProgress) {
19
+ const pending = paths.filter((path) => !Assets.cache.has(path));
20
+ if (pending.length === 0) {
21
+ onProgress?.(1);
22
+ return;
23
+ }
24
+ for (const path of pending) {
25
+ Assets.add({ alias: path, src: resolve(path) });
26
+ }
27
+ await Assets.load(pending, onProgress);
28
+ }
29
+ /** a loaded texture, by the same path it was loaded with */
30
+ export function texture(path) {
31
+ if (!Assets.cache.has(path)) {
32
+ throw new Error(`texture "${path}" has not been loaded - pass it to load() first`);
33
+ }
34
+ return Assets.get(path);
35
+ }
36
+ /** a loaded asset of any other kind, such as parsed JSON */
37
+ export function get(path) {
38
+ if (!Assets.cache.has(path)) {
39
+ throw new Error(`asset "${path}" has not been loaded - pass it to load() first`);
40
+ }
41
+ return Assets.get(path);
42
+ }
43
+ /** true once `load` has resolved for this path and it has not since been `release`d */
44
+ export function isLoaded(path) {
45
+ return Assets.cache.has(path);
46
+ }
47
+ /**
48
+ * Frees assets `load` brought in, destroying any texture among them so it stops holding GPU
49
+ * memory. For a game with many discrete zones - each with its own tileset or sprite sheet -
50
+ * this is the counterpart to `world.World.unload`: that drops a map's own state, this drops
51
+ * the assets it pointed at, once a game decides the player has left an area for good. A path
52
+ * never loaded (or already released) is silently skipped rather than treated as an error,
53
+ * since a game unloading a zone it may or may not have visited shouldn't have to check first.
54
+ */
55
+ export async function release(paths) {
56
+ const loaded = paths.filter((path) => Assets.cache.has(path));
57
+ if (loaded.length === 0)
58
+ return;
59
+ await Assets.unload(loaded);
60
+ }
61
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/assets/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAsB,MAAM,YAAY,CAAC;AAEzD;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAe,EAAE,UAA0B;IACrE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACR,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,iDAAiD,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAU,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,GAAG,CAAI,IAAY;IAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,iDAAiD,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAI,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAe;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC"}